Windows(我这里是 xp)命令行查找要执行的命令的“来源”是什么?我的意思是,我在命令行中输入例如“java”,然后它运行 java.exe,该 java.exe 位于系统/事件属性 PATH 中列出的某个目录中(您可以通过“SET PATH”命令列出或设置它)。还有其他查找来源吗?如果有 - 在哪里?我该如何设置它?
我之所以询问,是因为我遇到过这样的情况:该命令似乎不在该 PATH 的任何目录中,但尽管如此,它还是运行了该命令(从某处......)。
万分感谢。
答案1
根据MSDN 文档对于最终调用来启动应用程序的 CreateProcess
- 应用程序加载的目录。
- 父进程的当前目录。
- 32 位 Windows 系统目录。使用 GetSystemDirectory 函数获取此目录的路径。
- 16 位 Windows 系统目录。没有函数可以获取此目录的路径,但会搜索该目录。此目录的名称为 System。
- Windows 目录。使用 GetWindowsDirectory 函数获取此目录的路径。
- PATH 环境变量中列出的目录。请注意,此函数不会搜索 App Paths 注册表项指定的每个应用程序路径。要将此每个应用程序路径包含在搜索序列中,请使用 ShellExecute 函数。
关于第 6 点,ShellExecute 函数的文档没有描述何时处理 App Paths 键。
答案2
除了 PATH 变量之外,还可以在注册表中配置特定的应用程序路径。
如果您查看 HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths,您就会明白这是如何完成的。
答案3
系统的路径。echo %PATH% 应该从内存中显示它。
答案4
我发现我可以通过转到“我的电脑属性”->“高级”->“环境变量”来设置此路径。