每当另一个人开始工作时启动一个程序

时间:2018-01-20 21:59:19

标签: powershell winapi events windows-7 windows-10

我正试图找到一种方法来启动程序,只要另一个程序被启用。 例如,每次启动MS Word时,我都希望使用notepad.exe。

如果没有一个始终运行的守护进程,有一种方法可以做到这一点吗?

编辑:由于@RbMm解释Image File Execution Options可能是一种方式,但必须避免对我的程序进行递归调用。

也许使用带有DEBUG_PROCESS标志的[Kernel32]::CreateProcess是一个解决方案,我试图弄清楚如何使用CreateProcess并避免进程启动循环,如RbMs所说。

我将标签从c ++更改为Powershell(.ps1文件在exe中可能是wrapped。)

2 个答案:

答案 0 :(得分:2)

一些想法:

  • DLL Injection.如果我没记错的话,你可以告诉Windows在任何/每个进程启动时加载任意DLL。从那里,您的DLLMain函数可以检查当前进程的名称并启动您想要运行的相应“姐妹”程序。
  • Task Scheduling with an Event Trigger.您可以在新进程启动时触发任务security event。这在技术上无法满足'无守护进程'的要求,但任务调度程序应始终运行。
  • WMI Events.这严格违反了“禁止守护程序”的要求,但可以在后台powershell进程中使用,以检测新进程何时开始。

答案 1 :(得分:0)

简单解决方案:为要一起运行的每对/每组程序设置一个批处理文件(或shell脚本),然后启动它们。然后运行批处理文件而不是程序。