阻止从服务启动时启动的进程&在某些进程关闭后继续运行服务。

时间:2018-04-23 16:02:19

标签: c++ windows service startup shutdown

我有一个运行系统权限的C ++ Windows服务,我需要在一些加载到多个Windows进程( explorer.exe 等)的DLL中进行一些更改。

这样做的唯一时间是这些流程何时停止。我试图尽量减少对UX的影响,所以我不想强制退出或弹出任何恼人的消息框,并要求用户这样做。

我试图在我的服务启动时启动这个任务,问题是在我完成它之前就开始了几个这样的过程。
我试图了解是否有办法延迟Windows启动过程的启动,直到我完成任务。是否有任何我可以设置的事件或任何熟悉的事件会阻止这些事件?

另一个选择是在关机时执行所需的任务。我还没有办法这样做,所有相关的问题看起来有点陈旧(how to delay shutdown and run a process in window service ),并且考虑到旧版本的窗户。

此解决方案需要与大于7的Windows版本兼容。

1 个答案:

答案 0 :(得分:0)

您可以使用MoveFileEx并设置MOVEFILE_DELAY_UNTIL_REBOOT来执行此操作,这将在下次重新启动时替换该文件。

这应该在任何其他进程开始之前就已经存在,但是如果没有关于您的用例的更多详细信息,很难判断这对您是否有用。无论哪种方式,搜索此标志应该会为您提供有关此类问题的大量信息。

根据文档,自XP以来一直支持此功能。