继续我的那么问题来了,我想知道如何通过 GPO 或安全设置来阻止 Windows 服务产生新进程。
我有一台装有 Windows 服务的机器(以 SYSTEM 身份登录),它尝试创建新进程,然后对其进行 Process.Start()。但是对 .Start() 的调用失败,没有任何异常,事件查看器日志中也没有任何内容。
可能是什么原因?哪些本地安全策略或 GPO 策略可以阻止它?
谢谢
答案1
您需要验证代码中的服务逻辑,那里有错误。错误不在 Windows 操作系统中。
我的猜测是该服务启动了一个新进程,然后它终止了,而让子进程存活,因此它允许您启动一个新的服务实例,但它不应该这样做。
解释一下;服务将自己注册到服务控制器(SC),注册之后再控制服务的启动、停止和重启。
在您的代码中,您可以验证服务状态并设置状态,以便 Windows 知道您的服务在哪里;即服务何时启动;
g_ServiceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP; g_ServiceStatus.dwCurrentState = SERVICE_RUNNING;
如您所见,服务的 winmain 与普通应用程序不同,因为它在服务由 SC 启动时处理主代码并保持打开状态,就好像进程死亡一样,那么您可以为您的服务发出另一个网络启动。
看那里的例子;https://www..com/Articles/499465/Simple-Windows-Service-in-Cplusplus
因此,如果 SC 允许您重新发出服务网络启动,并且不返回错误“服务已启动,无法启动”,那么您的服务已终止,没有 GPO 或任何东西可以帮助您