我编写了一个在dev中工作得非常好的程序但是当我在我的prod服务器上尝试它时,我有一个拒绝访问:
ManagementEventWatcher processStartEvent = new ManagementEventWatcher(new WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace"));
processStartEvent.EventArrived += new EventArrivedEventHandler(processStartEvent_EventArrived);
processStartEvent.Start();
基本上,我需要实现的是监控新流程,但使用普通帐户。我做了一些研究,发现WMI查询需要提升访问权限,我无法提供给我的应用程序。
我删除了我的查询中的部分,但它是由实际用户启动的进程。我需要应用程序在每次启动此过程时执行一些任务。
答案 0 :(得分:0)
我终于找到了一份工作,不完美,但在我的案例中工作。我创建了一个计时器,每隔X秒轮询一次进程列表,看它是否存在。由于屏幕将始终打开比我的计时器更长的时间,它可以工作。
static void OnTime(object sender, ElapsedEventArgs e)
{
timer.Stop();
try {
var procs = from a in Process.GetProcesses()
where a.ProcessName == procName
select a;
foreach (Process proc in procs) {
ProcessTask(proc.MainWindowHandle);
}
}
finally { timer.Start(); }
}