我想在运行之前拦截给定的程序并首先运行我自己的程序

Goo*_*Day 4 windows

我将使用 Python 3,主要对 Windows 感兴趣。如果它有所作为,那么专门针对 Windows 10。

我想要发生的事情的例子:

  1. 用户启动我的脚本。
  2. 用户决定将游戏 Dota 2 列入黑名单。
  3. 用户尝试打开 Dota 2。
  4. 因为 Dota 2 在黑名单上,所以我的脚本运行而不是 Dota 2。
  5. 在我的脚本完成后,Dota 2 要么运行要么不运行,这取决于我的脚本选择了什么。这最终将由用户控制。
  6. 用户关闭我的脚本。
  7. 用户尝试打开 Dota 2。
  8. Dota 2 立即打开,不会中断。

最后三行表示需要有一种打开和关闭它的方法,所以不是一个永久的解决方案。我的基本假设是,一旦我知道如何做第一部分,第二部分就会很容易。我仍然把它放在那里澄清。

我真的只是想知道如何获得拦截程序的权限。

I s*_*ica 5

  1. 用户尝试打开 Dota 2。
  2. 因为 Dota 2 在黑名单上,所以我的脚本运行而不是 Dota 2。

Windows 的图像文件执行选项使您可以在启动您选择的可执行文件时运行您的程序。

假设我们想C:\My Folder\new app.exe在用户尝试启动时运行C:\Windows\old app.exe。为此,请运行以下命令:

reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\old app.exe" /v Debugger /d "C:\My Folder\new app.exe" /f
Run Code Online (Sandbox Code Playgroud)

注意:如果命名的键old app.exe不存在(可能),此命令将创建它。

这将使用要“劫持”的程序的名称创建一个新的注册表项,并创建一个名为Debugger的新字符串值,该值将其数据设置为替换可执行文件的路径。这可以是任何可执行文件,包括.CMD批处理脚本。

更改立即生效。现在,只要old app.exe运行一个名为的可执行文件,Windows 就会启动C:\My Folder\new app.exe

要使一切恢复正常,请删除old app.exe密钥:

reg delete "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\old app.exe" /f
Run Code Online (Sandbox Code Playgroud)

只需将这些命令合并到您的脚本中即可实现您想要的结果。