从服务关闭流程而不会中断流程

时间:2014-01-31 19:08:17

标签: c++ windows service

我正在寻找一种方法来关闭在系统帐户下运行的Windows服务在任何用户下运行的进程。我几乎尝试了所有的东西,但除了杀死进程外我找不到任何解决方案。

为什么我不能杀死这个过程? 我无法杀死进程使用托盘图标。如果我终止该过程,托盘图标将不会消失。

到目前为止我尝试了什么

我已经尝试过使用全局事件句柄(因为子进程非常滞后而无法正常工作)。

我还尝试使用PostMessage / SendMessage与进程通信。该解决方案不起作用,因为Windows服务无法与任何用户界面交互,...

我发现了另一个问题(这里是关于stackoverflow),它正好描述了我的问题:Close a child process from a windows service。 这个问题不包含一个很好的解决方案。

首先,我不使用C ++而不是C#。下一个问题是,子进程使用鼠标钩子。所以它运行速度非常快,没有太多开销。否则会出现滞后现象,这意味着鼠标将落后于整个系统。

那么从Windows服务关闭进程真的没有简单的解决方案吗?

1 个答案:

答案 0 :(得分:0)

服务可以使用SetProcessWindowStation()SetThreadDesktop()附加到目标进程的交互式桌面,然后再将消息发送到目标进程。

或者,服务可以使用CreateProcessAsUser()在与目标进程相同的会话中运行新进程,然后该进程可以向目标进程发送消息。