我有一个运行系统权限的C ++ Windows服务,我需要在一些加载到多个Windows进程( explorer.exe 等)的DLL中进行一些更改。
这样做的唯一时间是这些流程何时停止。我试图尽量减少对UX的影响,所以我不想强制退出或弹出任何恼人的消息框,并要求用户这样做。
我试图在我的服务启动时启动这个任务,问题是在我完成它之前就开始了几个这样的过程。
我试图了解是否有办法延迟Windows启动过程的启动,直到我完成任务。是否有任何我可以设置的事件或任何熟悉的事件会阻止这些事件?
另一个选择是在关机时执行所需的任务。我还没有办法这样做,所有相关的问题看起来有点陈旧(how to delay shutdown and run a process in window service
),并且考虑到旧版本的窗户。
此解决方案需要与大于7的Windows版本兼容。
答案 0 :(得分:0)
您可以使用MoveFileEx
并设置MOVEFILE_DELAY_UNTIL_REBOOT
来执行此操作,这将在下次重新启动时替换该文件。
这应该在任何其他进程开始之前就已经存在,但是如果没有关于您的用例的更多详细信息,很难判断这对您是否有用。无论哪种方式,搜索此标志应该会为您提供有关此类问题的大量信息。
根据文档,自XP以来一直支持此功能。