如何监控流程有一个非常clear answer here。它就像一个魅力...除了它必须在高架模式下运行,这对我来说是一个明确的选择。
我需要做的是基本上监控所有新流程并将它们与预定列表进行比较。我想这样做,而不是简单地使用秒表和轮询任何新的过程。
是否有人知道会引发类似于ManagementEventWatcher
的事件而不需要以管理员身份运行?
谢谢!
答案 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'";