如何从Windows服务中监听进程启动事件?

时间:2019-06-28 05:14:10

标签: c# windows-services

我希望我的Windows服务能够在特定进程(例如进程A)运行时进行侦听,并能够随意关闭它。这怎么可能?

1 个答案:

答案 0 :(得分:1)

您可以使用ManagementEventWatcher类在进程启动时接收通知。

  

根据指定的事件查询订阅临时事件通知。

在MSDN页面上有一个示例可能符合您的需求。

  

下面的示例显示由于事件类是__InstanceCreationEvent,因此在创建Win32_Process实例时客户端如何接收通知。

通过ManagementEventWatcher类,您可以设置WqlEventQuery来指定要侦听的WQL事件的类型。 WQL (SQL for WMI) docsWMI Reference中提供了有关WQL查询选项和结构的更多信息。

或者,您可以使用计时器按间隔查询Process.GetProcesses()返回的正在运行的进程的数组。

然后,使用Process.GetProcessByName()或直接从Process.GetProcesses()返回的结果数组中获取对该过程的引用,并使用Process.Kill()方法终止该过程。