是否可以创建一个Windows服务来创建和维护另一个进程?就像我正在编写一个程序,并说病毒杀死了该进程,我可以让我的窗口服务运行并基本上“监视”它吗?我已经有了一个常规应用程序的代码,该应用程序保持运行并执行当前未运行的程序,以保持其运行。
我以前从未编写过服务,但是编写这个简单的程序会那么困难吗?它基本上运行一个检查以查看进程是否正在运行,如果没有,它会执行它并休眠几分钟?
谢谢。
最佳答案
是的,这是可能的。第三方应用程序具有看门狗服务以在发生崩溃时保持运行的情况并不罕见。服务可以使用 EnumProcesses()
枚举正在运行的进程,如果所需的可执行文件未运行,则使用 CreateProcessAsUser()
启动它的新拷贝.
如果服务是首先启动可执行进程的服务,或者可以在枚举后找到它,则一种优化是保留该进程的打开句柄(由 CreateProcess...()
返回,或使用 OpenProcess()
枚举返回的进程 ID),然后使用等待函数,例如 WaitForSingleObject()
,检测进程何时停止运行。这样,您就不必枚举进程来查明预期进程是否仍在运行。
关于C++ 让 Windows 服务启动另一个程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17375100/