私のパスにないプログラムはどのように実行されますか?[複製]


57

重複の可能性:
PATH環境変数にないプログラムを実行できるのはなぜですか?

私は同僚に%PATH%について教えていましたが、「Firefox」を実行すると動作しますが、それが自分のパスにないことに驚きました。

私は何が欠けていますか?


2
コンテキストに依存します。コマンドラインから「firefox」と入力する場合、firefox.exeはパスまたはWindowsまたはWindows \ System32フォルダーになければなりません。[実行]ダイアログに「Firefox」と入力すると、App Pathsレジストリが使用されるため、そこにfirefox.exeが登録されます。
boot13

boot13のおかげで、私はApp Pathsレジストリキーを知りませんでした。
マシュー

回答:


101

名前のみを指定して実行可能ファイルを実行しようとしている場合、Windows は次の場所でファイルを探します。

  1. 現在の作業ディレクトリ。
  2. Windows唯一のディレクトリ(ないサブディレクトリが検索されません)。
  3. Windows\System32ディレクトリ。
  4. PATH環境変数にリストされているディレクトリ。
  5. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App PathsHKEY_CURRENT_USERWindows 7以降)

マイクロソフトではApp Paths、アプリケーションがシステムPATH環境変数を変更する必要を回避するために、サブキーにアプリケーションを「登録」することを実際に推奨しています。アプリケーションのインストーラーが実行可能ファイルを登録します。


3
私が今まで見た質問に対する最良の答えの一つ。+1
エベレット

それでした、ありがとうございます。毎日新しいことを学びましょう。
マシュー

8
@マシューどういたしまして。「App Paths」サブキーは、1人のユーザーのみにインストールされたアプリケーションのHKCUハイブにも存在することに注意してください。
JC2k8

1
ですから、.NET開発からJava開発に移行するまで、PATHをいじる必要はまったくありませんでした。.NET開発のすべてが「うまくいく」理由を考えたことがありません。
スティーブンスウェンセン

2
これは、Windowsの[実行]ダイアログにのみ当てはまります。cmd.exeおよびpowershellでは、1から4のみが使用されます。boot13のコメントも参照してください。
アレクサンダー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.