如何在启动之前中断给定程序并运行我的脚本?

时间:2017-04-18 19:13:30

标签: python python-3.x

我将使用Python 3,主要对Windows感兴趣。

我想要发生的事例:

A)

  • 用户启动我的脚本。
  • 用户决定将游戏Dota 2列入黑名单。
  • 用户尝试打开Dota 2。
  • 因为Dota 2在黑名单中,我的脚本运行而不是Dota 2.
  • 我的脚本完成后,Dota 2运行或不运行,具体取决于我的脚本选择的内容。这最终将由用户控制。
  • 用户关闭我的脚本。
  • 用户尝试打开Dota 2。
  • Dota 2立即打开而不会中断。

B)

与上述相同,但适用于网站。

最后三行表示需要有一种打开和关闭方式。我的基本假设是,一旦我知道如何做第一部分,第二部分将很容易。我仍然把它放在那里澄清。

我还没有在网上找到任何关于从哪里开始的东西。我对A)的猜测是它必须做一些事情进入文件夹,其中运行文件以某种方式覆盖它。

1 个答案:

答案 0 :(得分:1)

您正在谈论覆盖操作系统行为,因此您需要挂钩操作系统功能(Python可以,也可能已经绑定了)。对于Windows,您可以使用某些功能(如WMI)来挂钩进程启动,但最简单的方法可能是使用Image File Execution Options(IFEO)在启动时劫持相关进程。这是一个注册表项,因此您需要Python 3的winreg模块。

我从未尝试将Python脚本设置为IFEO Debugger值的目标,但它可能会起作用。有关IFEO如何工作以及预期使用它的“调试器”的基础知识,请参阅this StackOverflow question。在您的情况下,您可能会让脚本检查用户尝试运行的进程的名称,查看它当前是否在阻止列表中,如果是,则退出;否则它会启动这个过程。如果你希望它跟随打开和关闭一个长时间运行的脚本,你可以让该脚本创建一个临时锁定文件(当它的最后一个句柄关闭时它会消失)并让你的用户启动时调用 - {{ 1}}脚本检查该文件。

如果您在让IFEO做您想做的事情时遇到问题,我建议您另外提出问题(此处或超级用户,具体取决于是编码还是操作系统管理员问题)。请注意它在HKEY_LOCAL_MACHINE中;您需要以管理员身份运行才能在那里进行更改,但只有“控制”脚本才需要(“调试器”脚本只能以正常权限运行)。