“运行”对话框如何知道应用程序在哪里?

mt0*_*025 71 windows run-dialog

作为高级用户,我经常使用“运行”对话框。

我可以理解为什么以下命令有效,因为它们在PATH环境变量中。

mspaint
diskmgmt.msc
explorer
Run Code Online (Sandbox Code Playgroud)

这些命令也适用于 CMD。

下面的命令在运行中工作,但它们不在 中PATH,并且它们在 CMD 中不起作用。

firefox
winword
iexplore
Run Code Online (Sandbox Code Playgroud)

Run 如何知道这些文件在哪里?

w32*_*2sh 89

当您从“运行”对话框执行命令时,系统会在App Paths此处查看注册表项:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
Run Code Online (Sandbox Code Playgroud)

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
Run Code Online (Sandbox Code Playgroud)

例子

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\filezilla.exe
Run Code Online (Sandbox Code Playgroud)

(default) 值数据具有可执行文件的完整路径。

如果未找到,它会查看 PATH 中包含的每个文件夹。

而命令提示符不引用这些注册表项。它只搜索 PATH。

  • 您当然可以使用搜索应用程序路径的`start` 内置函数。 (7认同)
  • 啊,这可能解释了为什么你不能让多个同名的程序与选项一起打开。糟糕的设计。 (5认同)
  • 微软提供了一个关于此的视频:https://channel9.msdn.com/Shows/Defrag-Tools/Defrag-Tools-133-App-Paths (4认同)
  • 是的,几乎。但是打开对话框从“HKCR\Applications”和“RegisteredApplications”读取 (2认同)