搜索可执行文件时的Windows API回调

时间:2014-04-26 23:42:16

标签: shell winapi

Windows API中是否有一个钩子允许在%PATH%上搜索可执行文件时扩展行为并返回%PATH%上可能不在的文件的自定义文件路径?

1 个答案:

答案 0 :(得分:2)

The CreateProcess docs记录了Windows如何搜索可执行文件:

  
      
  1. 加载应用程序的目录。
  2.   
  3. 父进程的当前目录。
  4.   
  5. 32位Windows系统目录。使用GetSystemDirectory函数获取此目录的路径。
  6.   
  7. 16位Windows系统目录。没有函数可以获取此目录的路径,但会搜索它。该目录的名称是System。
  8.   
  9. Windows目录。使用GetWindowsDirectory函数获取此目录的路径。
  10.   
  11. PATH环境变量中列出的目录。请注意,此功能不会搜索 App Paths 注册表项指定的每个应用程序路径。要在搜索序列中包含此每个应用程序路径,请使用ShellExecute函数。
  12.   

假设我们正在谈论您自己的应用尝试执行可能不在路径上的其他EXE,请在App Paths注册表项中指定要搜索的路径,并按照说明使用ShellExecute在#6。否则,我不知道任何"正常"挂钩可执行搜索的方法;这样的事情可能会被视为安全风险,因为恶意应用程序可以捕获常见的%PATH%搜索,例如cmd并返回其他应用程序的文件名。您可能不得不考虑撰写File System Filter Driver