[VBScript]同じWebのリンクを違うブラウザので開く方法+違うプロファイルで開けるかもしれない

# 今回の基本
# ショートカットを使う
[特定のURLショートカットをブラウザ指定で作成する方法【Chrome/Firefox/Edge】](https://www.amamoba.com/pc/win-firefox.html)
これからいう方法は安定はしないので、時間がない人はこちらの方法を使うほうがおすすめ。

# VBScriptを使う
[PowerShell でショートカットを作る](https://www.vwnet.jp/windows/PowerShell/CreateShortcutByPowerShell.htm)
PowershellでもWindows Scripting Hostを呼び出すので、ほぼ変わらない。

# 拡張子はURLではない
[VBScript Tips (Tips0121)](https://www.whitire.com/vbs/tips0121.html)
Webだからといって拡張子はURLではなく`.lnk`になる。

# アイコンも変えられる
[バッチファイルとVBScriptを併用してショートカットアイコンを作成する](https://jj-blues.com/cms/wantto-makeiconwithbatandvbs/)
今回はそこまではやらない。

# 頭から64bitは64bitと決めつけず、exeの場所を直接、またはショートカットのプロパティで確認する。
当方はEdgeは32bitでした。

# 環境変数が使える
[Windows10の環境変数の一覧と調べ方。便利な使い方も解説 | 己で解決！泣かぬなら己で鳴こうホトトギス](https://onoredekaiketsu.com/windows10-environment-variables/)
[Windows で 32bit/64bit を確実に判断する｜PROCESSOR_ARCHITECTUREとPROCESSOR_ARCHITEW6432 | ハングスタック](https://hangstuck.com/msdos-processor-arch/)
今回、Chromeは64bitだった。

# コードのポイント
## TargePathは実行ファイルのみ
TargetPathにURLをぶち込んでもほぼ失敗する。
かといって、一度書いて、書き換えるわけでもない。
[【VBScript】ショートカットファイルのリンク先を一括変更するサンプルコード - ITエンジニアの備忘録的技術ブログ【仮】](https://www.depthbomb.net/?p=4941)

## 正解はここに
公式は複数個所に記述がありややこしい。
[Lern > Windows Server
wscript | Microsoft Learn](https://learn.microsoft.com/ja-jp/windows-server/administration/windows-commands/wscript)
正解は、
[Learn トラブルシューティング Windows Windows クライアント 
Windows スクリプト ホストを使用してデスクトップ ショートカットを作成する - Windows Client | Microsoft Learn](https://learn.microsoft.com/ja-jp/troubleshoot/windows-client/admin-development/create-desktop-shortcut-with-wsh)
> この記事では、Visual FoxPro 内から Microsoft Windows スクリプト ホスト (WSH) を使用してデスクトップ ショートカットを作成する方法について説明します。

と一見全く関係のない記述から始まるこの記事にあった。
### Argument 引数
正解はargementを使う。なお、`+` でつながなくても成功した。
#### URLはプロファイルのあと
Chromeはそうだった。

# コード

## 前提条件
### 目的
`www.yahoo.co.jp`を開く
ブラウザは64bitのChromeと32bitのEdge
 Chromeのプロファイルはデフォルト
 ChromeはOSのBit数に従ってフォルダが決まる
 作業フォルダは、各ブラウザのショートカットアイコンにあるものを使用

## 注意 同名のショートカットの削除
同名のショートカットは削除されるので注意
## 注意 デスクトップの取得
仮想端末だけではなく、OneDriveを使う場合でもDeskTopがOneDriveのデスクトップになる場合がある。
この挙動があまりよくわかっていない。
OneDriveのアカウントとWIndowsのアカウントが同じな場合は問題がないようだが。

```vb
Option Explicit
Dim objWshShell     ' WshShell オブジェクト
Dim strDesktopPath  ' デスクトップのフォルダ名 ただし、仮想端末の場合はこれで拾えるかはわからない。
Dim objShortcut     ' ショートカットファイル
Dim strPath ' プログラム（アプリ）のフォルダ
Dim strTarget
Dim strEx
strEx = "lnk"
Set objWshShell = WScript.CreateObject("WScript.Shell")

On Error Resume Next
    strDesktopPath = objWshShell.SpecialFolders("Desktop") ' 仮想の場合はこれではなく、実際のフォルダ名 \\Server\name\...\Desktopの可能性がある。
' エラーがなければ処理を進める
If Err.Number <> 0 Then WScript.Quit
    strPath = objWshShell.ExpandEnvironmentstrings("%ProgramW6432%")
    WScript.Echo strPath
    With CreateObject("Scripting.Filesystemobject")
    if .fileexists(strDesktopPath & "\yahoo1." & strEx) then .DeleteFile strDesktopPath & "\yahoo1." & strEx
    End with
    strTarget = strPath & "\Google\Chrome\Application\chrome.exe"
    Set objShortcut = objWshShell.CreateShortcut(strDesktopPath & "\yahoo1." & strEx) ' 拡張子Urlでインターネット用になる
    Wscript.Sleep 500
    With objShortcut
     .TargetPath = strTarget
     ' この書き方の場合ダブルクォーテーションの数（エスケープ）に注意
     .Arguments =   " --profile-directory=""Default""" & " https://www.yahoo.co.jp"
     .WorkingDirectory = strPath & "\Google\Chrome\Application\"
     .Save
    End With
    With CreateObject("Scripting.Filesystemobject")
      if .fileexists(strDesktopPath & "\yahoo1." & strEx) then .DeleteFile strDesktopPath & "\Edge-yahoo1." & strEx
    End with
    Set objShortcut = objWshShell.CreateShortcut(strDesktopPath & "\Edge-yahoo1." & strEx) ' 拡張子Urlでインターネット用になる
        Wscript.Sleep 500
    With objShortcut
     .TargetPath = "%programfiles(x86)%" & "\Microsoft\Edge\Application\msedge.exe"
     .Arguments =   " https://www.yahoo.co.jp"
     .WorkingDirectory =  "%programfiles(x86)%" &  "\Microsoft\Edge\Application\"
     .Save
    End With


Set objShortcut = Nothing
Set objWshShell = Nothing
```

# Google Chrome以外も違うプロファイルはあるのか
[Microsoft Edge でサインインして複数のプロファイルを作成する](https://support.microsoft.com/ja-jp/topic/microsoft-edge-%E3%81%A7%E3%82%B5%E3%82%A4%E3%83%B3%E3%82%A4%E3%83%B3%E3%81%97%E3%81%A6%E8%A4%87%E6%95%B0%E3%81%AE%E3%83%97%E3%83%AD%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B-df94e622-2061-49ae-ad1d-6f0e43ce6435)
[Firefox で複数のプロファイルを使い分ける方法 – ラボラジアン](https://laboradian.com/firefox-multi-profiles/)

##　多分プロファイルでさらに使う分けられる
ショートカットまで作成できる以上、後ろにURLをつければ作成できる。
しかし、これには複数のプロファイルを作らないといけないので、今回はできなかった。