以非管理员身份监视新进程

本文关键字:进程 新进程 监视 管理员 身份 | 更新日期: 2023-09-27 18:02:26

关于如何监视进程,这里有一个非常明确的答案。它就像一种魔力……除了它必须在提升模式下运行,在我的程序上下文中,这是一个明确的非选项。

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

有谁知道类似于ManagementEventWatcher的事件不需要以管理员身份运行吗?

谢谢!

以非管理员身份监视新进程

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

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'";

您可以使用Process.GetProcesses();获得所有工作过程,然后您可以迭代它们并获得它们的名称和一些信息,但更高级的东西确实需要更高的权限。