我有一个有点奇怪的案子要处理...
- 我有 Windows 服务“ A ”。
- “A”被监视“ B ”中的事件。“B”是一个应用程序,如果“A”停止运行,它将重新启动“A”。
- 如果用户从 Windows 中的“服务”应用程序手动关闭“A”,或者使用网络停止在命令提示符下手动关闭“A”,则不应重新启动“A” 。基本上,每当非应用程序(即人类)停止它时,我不希望它重新启动“A”。
这是“B”的一个简单示例:
ServiceController controller = new ServiceController(someServiceName);
while (true)
{
controller.WaitForStatus(ServiceControllerStatus.Running);
controller.WaitForStatus(ServiceControllerStatus.Stopped);
controller.Start();
}
由于用户将导致服务的状态以与另一个应用程序相同的方式调用停止,有没有办法检测谁实际停止了该特定 Windows 服务?有没有办法检测一个真实的人是否停止了该特定服务?