好,所以我没有意志力的实验的第二部分是:
总结问题 – 有没有办法在Windows服务上dynamic设置CanStop属性?
整个游戏 – 我有一个服务,目前正在检查和查杀过程(IE游戏)我已经告诉它,如果这一天我不被允许。 大。 我把CanStop设置为false,这样我就可以杀死这个服务,如果我让瘾了。 我有一个程序,将有一个密码检查(其他人input密码),将停止服务,如果密码是正确的。 (如果我有严重的提款)问题是使用ServiceController类。
尽我所知,ServiceController只是一个装饰器(耶devise模式猜测),所以我没有办法得到它所代表的实际服务。 第一次尝试是物业信息,但我太愚蠢,不知道什么是毫无意义的。 其次是场信息,因为我认为可能有一个“代表”服务的私人领域。 你可能猜到,都失败了。
有任何想法吗?
编辑1我想避免有CanStop值的地方,我可以很容易地得到它像一个configuration文件或registry。 所以我正在尝试,尽pipe没有成功,使这完全处理程序。
新(失败)尝试:
ManagementObject服务; ManagementBaseObject stopService;
service = new ManagementObject(“Win32_Service.Name ='StopProgram'”);
stopService = service .InvokeMethod(“StopService”,null,null);
不知道这做了什么。 由于CanStop的情况,我认为它不能停止。
“CanStop”是Windows服务控制管理器中服务注册的一个属性。 你不能中途改变它。
而且,当然,如果你足够聪明,可以编写自己的服务,那么你足够聪明,可以提出任务人,简单地杀死服务进程。 CanStop不会阻止你从服务中拉出地毯。 CanStop只会通知服务控制管理器不要向服务发送“停止”命令。
如果你想允许某些东西通过,那么使用全局事件来启用/禁用检查服务 – 或者只是从PC中删除游戏! 🙂
与其试图直接访问和控制服务,是否可以在某处(如注册表或文件)设置标志,然后在执行您试图控制的事件之前,由您的服务进行检查。