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

Blocking processes to start on startup from a service & continue running service after some processes are down.

本文关键字:启动 服务 进程 运行 继续      更新时间:2023-10-16

我有一个在系统权限上运行的C++Windows服务,我需要对加载到多个Windows进程(资源管理器.exe等)的某些DLL进行一些更改。

这样做的唯一时间是当这些进程关闭时。我试图将对用户体验的影响降到最低,所以我不想强迫退出这些或弹出任何烦人的消息框并要求用户这样做。

我尝试在我的服务启动时启动此任务,问题是其中几个进程在我完成之前就开始了。
我试图了解是否有办法在 Windows 启动时延迟进程的启动,直到我完成任务。我可以设置任何事件或任何熟悉的东西来阻止这些事件或任何内容?

另一种选择是在关机时执行所需的任务。我还没有找到这样做的方法,所有相关问题似乎都有点旧(如何延迟关机并在窗口服务中运行进程 ),以及关于旧版本的窗口。

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

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

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

根据文档,这从XP开始就得到了支持。