Windows API中是否有一个钩子允许在%PATH%
上搜索可执行文件时扩展行为并返回%PATH%
上可能不在的文件的自定义文件路径?
答案 0 :(得分:2)
The CreateProcess docs记录了Windows如何搜索可执行文件:
- 加载应用程序的目录。
- 父进程的当前目录。
- 32位Windows系统目录。使用
GetSystemDirectory
函数获取此目录的路径。- 16位Windows系统目录。没有函数可以获取此目录的路径,但会搜索它。该目录的名称是System。
- Windows目录。使用
GetWindowsDirectory
函数获取此目录的路径。- PATH环境变量中列出的目录。请注意,此功能不会搜索 App Paths 注册表项指定的每个应用程序路径。要在搜索序列中包含此每个应用程序路径,请使用
醇>ShellExecute
函数。
假设我们正在谈论您自己的应用尝试执行可能不在路径上的其他EXE,请在App Paths注册表项中指定要搜索的路径,并按照说明使用ShellExecute
在#6。否则,我不知道任何"正常"挂钩可执行搜索的方法;这样的事情可能会被视为安全风险,因为恶意应用程序可以捕获常见的%PATH%搜索,例如cmd
并返回其他应用程序的文件名。您可能不得不考虑撰写File System Filter Driver。