CanStop设置为False时停止Windows服务的方法(C#)
题
好的,我没有遗嘱的第二部分权力实验是:
摘要问题 - 有没有办法动态设置Windows服务上的CanStop属性?
整个Spiel - 我有一个服务,目前检查和杀死进程(IE游戏)我告诉它,如果它是我不被允许的一天。大。我将CanStop设置为false,这样如果我放弃上瘾,我就不能杀死它。我有一个程序将进行密码检查(其他人输入密码),如果密码正确,将停止服务。 (如果我有严重的提款)问题是使用ServiceController类。
我可以告诉我,ServiceController只是一个装饰器(yah design patern guess),因此我无法获得它代表的实际服务。第一次尝试是财产信息,但我太愚蠢了,没有意识到什么是毫无意义的。第二个是Field Info,因为我认为可能有一个“代表”的私人领域。服务。正如你猜测的那样,都失败了。
有什么想法吗?
编辑1 我想避免在某个地方轻松拥有CanStop值,就像配置文件或注册表一样。所以我试图在程序中完全处理这个问题,但不是成功的。
新(失败)尝试:
ManagementObject服务; ManagementBaseObject stopService;
service = new 的ManagementObject(QUOT; Win32_Service.Name = 'StopProgram' &QUOT);
stopService = service .InvokeMethod(" StopService",null, 空);
不确定这有什么用。我认为由于CanStop的情况,它无法停止。
解决方案
“CanStop”是Windows服务控制管理器中服务注册的属性。你无法在中途改变它。
当然,如果你足够聪明地编写自己的服务,那么你就足够聪明地培养任务人员并简单地终止服务流程。 CanStop不会阻止您从服务中拉出地毯。 CanStop仅告知服务控制管理器不发送“停止”消息。命令服务。
如果您想允许某些内容传递,请使用全局事件启用/禁用服务检查 - 或者只是从PC中删除游戏! : - )
其他提示
您可以在某个地方设置标记(如注册表或文件),然后在执行您尝试控制的事件之前由服务进行检查,而不是尝试直接访问和控制服务。 / p>