我遇到了问题: 有一个启动服务的过程,我们称之为service_A,然后启动另一个服务service_B。 我需要禁用此service_B,因为它限制了我的系统/程序。
我现在所做的是挂钩流程并阻止service_A的开始 - > service_B将无法启动。
现在我需要一个解决方案,当我开始这个过程而不做一个钩子 - > service_B开始了,这是由service_A完成的,所以我假设它在某种内核级别上? 有没有办法通过WinAPI做到这一点? 我可以访问的内容:普通应用程序可以访问的所有内容+抓取我所定位的进程所拥有的SC Manager的句柄。
感谢您提供任何帮助/建议
答案 0 :(得分:1)
确定方案是:
鉴于您可以控制Process1,您是否可以利用它来阻止Service_A启动Service_B?
答案是:你不需要这样做。您是以管理员身份运行的!你控制整个机器!
ChangeServiceConfig
具体而言:
当Process1尝试启动服务时,您将拦截此调用。您将Service_B的定义更改为无操作服务,只需等待几秒钟,然后将服务定义重置为原来的状态,然后退出。然后,您允许Process1继续。它启动Service_A,然后启动您更改的Service_B。您更改的Service_B将服务定义恢复到原来的状态,然后退出。在此期间,您现在知道哪个进程托管Service_A,以便您可以将代码注入该服务,以防止它再次启动Service_B。