将新流程监控为非管理员

时间:2016-08-15 21:17:45

标签: c# process system

如何监控流程有一个非常clear answer here。它就像一个魅力...除了它必须在高架模式下运行,这对我来说是一个明确的选择。

我需要做的是基本上监控所有新流程并将它们与预定列表进行比较。我想这样做,而不是简单地使用秒表和轮询任何新的过程。

是否有人知道会引发类似于ManagementEventWatcher的事件而不需要以管理员身份运行?

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用Process.GetProcesses();获取所有正在运行的进程,然后您可以迭代思考它们并获取其名称和一些信息,但更高级的内容确实需要提升权限。

答案 1 :(得分:0)

我遇到了与OP相同的问题,但是通过提供特定查询,设法将ManagementEventWatcher用作非管理员:

string queryString = "SELECT * FROM __InstanceCreationEvent WITHIN .025 WHERE TargetInstance ISA 'Win32_Process'";
ManagementEventWatcher managementEventWatcher = new ManagementEventWatcher(@"\\.\root\CIMV2", queryString);
managementEventWatcher.EventArrived += ProcessStartEventArrived;
managementEventWatcher.Start();

WITHIN是要通知的时间范围。

停止操作的方法相同,但使用__InstanceDeletionEvent

string queryString = "SELECT * FROM __InstanceDeletionEvent WITHIN .025 WHERE TargetInstance ISA 'Win32_Process'";