Image Execution Options
(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
)带有以可执行文件命名的键和字符串(REG_SZ
)值已知如果您需要修改要启动的应用程序的行为,这是一个很好的途径。
但是,如果我有一个非常常见的可执行文件名称,例如launcher.exe
,我该如何更具体一点呢?我可以吗?
我想确保只有我想到的那个特定二进制文件会受到影响,尽管在我的特定用例中,如果我不能将其限制为精确的可执行文件,那么它只会产生中等影响。
我想为自己编写一个小包装程序,类似于 Sysinternals 的 Process Explorer,launcher.exe
它用类似于set __COMPAT_LAYER=RUNASINVOKER
shell 中的环境变量来取代我的特定的标准行为。
现在我知道如何编写包装器和所有内容,主要的问题是,是否有办法告诉在注册表中,使用下面的一些魔法Image Execution Options
,来限制“hack”值的范围Debugger
,或者我必须在我的包装器中过滤它?
涉及到:
答案1
从 Windows 7 开始,有一种方法可以将图像文件执行选项限制为精确路径。
- 在 ...\Image File Execution Options\filename.exe 下创建一个名为“UseFilter”且值为非零的 dword。
- 创建一个具有任意名称的子项,例如...\Image File Execution Options\filename.exe\MyFilter。
- 在该子项下,创建一个名为“FilterFullPath”的字符串,并将完整路径作为值,例如“C:\mypath\filename.exe”。此外,在那里创建您需要的任何选项,在您的情况下为“Debugger”。
现在,当系统启动任何“filename.exe”时,它会检查完整路径是否与任何子项中的“FilterFullPath”匹配。(不同路径可以有多个子项。)如果匹配,则使用匹配子项中的选项。否则,将照常使用基本键 IFEO\filename.exe 中的选项。
答案2
似乎可以这样做
屏幕截图显示创建与二进制文件的完整路径相对应的子项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
,例如:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\C:\Program Files\Adobe\Reader 11.0\Reader\AcroRd32.exe
然后Debugger
可以创建并设置一个字符串值。