Ste*_*utt 12
而不是试图在它运行时杀死进程,如何阻止它在第一时间运行?
更改shell尝试启动应用程序时发生的情况很简单 - 将新注册表项添加到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
为了测试这个,我添加了一个名为notepad.exe的注册表项,其中包含值为calc.exe的字符串值Debugger.现在每当我尝试运行记事本时,calc就会打开.以下是导出的注册表项.
REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe]
"Debugger"="calc.exe"
Run Code Online (Sandbox Code Playgroud)
做了这个改变之后我还没有设法打开记事本,对于无代码解决方案来说也不错.如果您需要100%确定应用程序永远不会运行,您可以随时添加"kill"解决方案,其他人详细说明.
斯蒂芬纳特的另一个很好的答案只是一小部分:
如果你想让程序永远消失,不要只是替换其他东西(Stephen的例子中的calc.exe).指定密钥:"Debugger"="ntsd -c q"
这将使用命令行参数-c调用"执行下一个指定的调试器命令" 来调用NT 用于程序的NT命令行调试器ntsd ; 调试器命令是q(意味着退出).这将停止调试器,作为副作用将杀死调试对象 - 您想要阻止运行的程序 - 也是如此.
干净,漂亮,容易.我观察到的唯一副作用是,有时一个瞬态命令窗口会弹出一个调试器提示只是暂时消失.