我正在开发一个WPF应用程序,它必须跟踪桌面应用程序的会话。我使用ManagementEventWatcher
它按预期工作,但我的WPF应用程序需要以管理员身份运行。应用程序的用户将没有管理员权限,因此用户获得Access is denied
例外。
即使在Visual Studio中开发我的应用程序时,要查询此ManagementEventWatcher(“SELECT * FROM Win32_ProcessStopTrace”),Visual Studio也必须以管理员身份运行。
如何在没有管理员权限的情况下获取已停止的事件进程?还有其他方法可以让我获得已停止的进程吗?
以下是我使用的代码:
processStopEvent = new ManagementEventWatcher("SELECT * FROM Win32_ProcessStopTrace");
processStopEvent.EventArrived += new EventArrivedEventHandler(processStopEvent_EventArrived);
processStopEvent.Start();
void processStopEvent_EventArrived(object sender, EventArrivedEventArgs e)
{
string processName = e.NewEvent.Properties["ProcessName"].Value.ToString();
string processID = Convert.ToInt32(e.NewEvent.Properties["ProcessID"].Value).ToString();
if (processName.ToUpper().Contains(processname.ToUpper().Replace(".EXE", "")))
{
//closed/disconnect desktop log
}
}