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