启动批处理命令如何仅通过调用软件名称来执行软件?

启动批处理命令如何仅通过调用软件名称来执行软件?

例如我使用以下命令通过 Firefox 启动 superuser.com:

start firefox http://superuser.com

“start” 如何知道我的 firefox.exe 在哪里?我猜它是从注册表中读取的(它未在我的 PATH 中定义),但是启动命令和操作系统的注册表是如何互连的?究竟使用了哪些注册表?

答案1

是的,这些信息存储在注册表中。

钥匙

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths

每个应用程序都有子键,您无需在路径中即可直接运行。

该子项firefox.exe有两个值:

(Default)    C:\Program Files\Mozilla Firefox\firefox.exe
Path         C:\Program Files\Mozilla Firefox\

第一个值指定可执行文件的完整路径,第二个值指定它应该在其中运行的目录。

应用程序注册 (Windows)详细解释在哪里Windows 将搜索火狐可执行文件:

当。。。的时候ShellExecuteEx函数被调用时,其内容是可执行文件的名称lp文件参数,函数会在多个位置查找文件。我们建议在应用程序路径注册表子项。这样做可以避免应用程序修改系统 PATH 环境变量。

该文件位于以下位置:

  • 当前工作目录。
  • 视窗仅目录(不搜索子目录)。
  • Windows\System32目录。
  • PATH 环境变量中列出的目录。
  • 受到推崇的:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App 路径

相关内容