我希望我的Windows服务能够在特定进程(例如进程A)运行时进行侦听,并能够随意关闭它。这怎么可能?
答案 0 :(得分:1)
您可以使用ManagementEventWatcher类在进程启动时接收通知。
根据指定的事件查询订阅临时事件通知。
在MSDN页面上有一个示例可能符合您的需求。
下面的示例显示由于事件类是__InstanceCreationEvent,因此在创建Win32_Process实例时客户端如何接收通知。
通过ManagementEventWatcher
类,您可以设置WqlEventQuery来指定要侦听的WQL事件的类型。 WQL (SQL for WMI) docs和WMI Reference中提供了有关WQL查询选项和结构的更多信息。
或者,您可以使用计时器按间隔查询Process.GetProcesses()返回的正在运行的进程的数组。
然后,使用Process.GetProcessByName()或直接从Process.GetProcesses()返回的结果数组中获取对该过程的引用,并使用Process.Kill()方法终止该过程。