Edgeのインストール先はどこ?実行ファイルの場所を取得できるレジストリとサンプルコード

Tips
スポンサーリンク

先日、Microsoftの標準ブラウザである「Edge」のインストール先(実行ファイルの場所)をコマンドやスクリプトから取得しようとしてやり方がすぐに見つからず苦労したので、記事にしておこうと思います。

Edgeのインストール先は3通り

Edgeは、Windows10以上のOSについては標準でインストールされていますが、Windows7からバージョンアップした場合や、そもそもWindows7を未だに使用している環境だと、インストーラーでインストールをして導入しているケースもあります。

その場合、インストール先はOSのアーキテクチャの種類や管理者権限でインストーラーを実行したか否かによって、以下の3パターンに分かれます。

Edgeインストール先一覧
管理者権限実行 アーキテクチャ インストール先
有り 32bit C:\Program Files\Microsoft\Edge\Application\msedge.exe
64bit C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe
無し 32bit/64bit C:\Users\ログインユーザー名\AppData\Local\Microsoft\msedge.exe

管理者権限でインストールした場合は、32bit環境用のパスと64bit環境用のパスに別れるだけなのでわかりやすいのですが、ユーザー権限でインストールした場合は、ログインユーザー配下のパスにインストールされることになります。

この場合、例えばEdgeの実行ファイルをフルパスで指定して起動引数を渡してEdgeを起動したいケースなどで、Program Files配下に決め打ちでパスを指定することができなくなります。

以下の記事で紹介しているようなことをやろうとすると困ります。

デスクトップなどに配置されているEdgeのショートカットファイルのプロパティから実行ファイルまでのパスを探すことできますが、コマンドなどで自動化する場合は、ログインユーザーごとにパスが変わるのは都合が悪いです。

よって、コマンド実行などのCUIを用いた方法で、OSが持っている情報からEdgeのインストール先を取得することが必要になります。

中の人
中の人
余談ですが、Edgeの実行ファイルは64bit版のOSでも32bitアプリケーション用の「Program Files (x86)」配下に配置されます。
これは不思議に感じますが、Edgeのアップデート処理を実行している「MicrosoftEdgeUpdate.exe」が32bitアプリケーションで作られているからなんですね。

 

実行ファイルを場所が書かれるレジストリ

実行ファイルの場所を取得する方法は幾つかありますが、個人的に一番手軽だったのは、レジストリを参照する方法です。

ただ、このレジストリもインストーラーを管理者権限で実行したか否かで書き込み先のキーの場所が変わります。

対象のレジストリは以下です。

Edge本体のパスが書かれたレジストリ
管理者権限実行 レジストリキー 値の名前 値の種類
有り HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\msedge.exe Path REG_SZ
無し HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\msedge.exe Path REG_SZ
中の人
中の人

今回の記事ではEdgeに限定して紹介していますが、Edge以外のアプリケーションも上記のレジストリ「App Paths」の配下にインストール先のパスを書き込んでいます。
よって、Edgeのインストール先を探す目的に限らず、このレジストリの場所を知っておくと便利です。

 

Edgeのインストール先フルパスを取得するスクリプト(VBS)

前項で紹介したレジストリのコマンドなどのCUI上で取得する方法は幾つかありますが、当記事ではVBScriptを使用して対象のレジストリキーの値を取得するサンプルコードを紹介します。

サンプルコードとその解説

サンプルコード

  Option Explicit
  Const RegKey = "SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\msedge.exe\Path"
  Dim objShell
  Dim RegVal
  Dim InstPath

      Set objShell = CreateObject("WScript.Shell")
      RegVal = ""

      On Error Resume Next
      'HKCU配下のレジストリの読み取りを試行します。
      RegVal = objShell.RegRead("HKEY_CURRENT_USER\" & RegKey)
      Err.Clear
      '値が空なら対象のレジストリキーが存在しないと判定して次を試行します。
      If RegVal = "" Then    
          RegVal = objShell.RegRead("HKEY_LOCAL_MACHINE\" & RegKey)
      End If
      Err.Clear
      On Error GoTo 0

      If RegVal = "" Then
          Msgbox "Edge がインストールされていません。" & vbCrlf & "処理を中止します。"
          Wscript.Quit
      End If

      InstPath = RegVal & "/msedge.exe"
      Msgbox "Edge のインストール先:" & InstPath

サンプルコードの解説

当サンプルプログラムでは、レジストリを参照してEdgeのインストール先にある実行ファイルのフルパスを取得してメッセージボックスで表示します。

7行目で生成した「WScript.Shell」オブジェクトを使用して、12行目で「RegRead」メソッドを使ってレジストリの値を取得しようとしています。
ただ、RegReadでは引数で渡されたキーが存在しないとエラーになります。

そのキーの存在チェックをスマートに実装する方法はなかったため、10行目で「On Error Resume Next」を入れて、エラーが出ても無視して処理を進めています。
対象のレジストリキーが存在しなければ、変数「RegVal 」は空であり、次のレジストリキーへの参照処理に進めています。

若干強引な実装ですが、大きな問題は無いかと思います。
 

最後に

今回はEdgeのインストール先に関する解説や取得方法、VBSを使用したサンプルプログラムを紹介しました。
ネットで調べても欲しい情報が見当たらなかったため多少は需要があるかもと考えましたが、如何でしたでしょうか。

今回も読んでいただきましてありがとうございました。
それでは皆さまご機嫌よう!

タイトルとURLをコピーしました