通过正常访问监控流程

时间:2018-01-26 15:32:49

标签: c# process elevated-privileges

我编写了一个在dev中工作得非常好的程序但是当我在我的prod服务器上尝试它时,我有一个拒绝访问:

ManagementEventWatcher processStartEvent = new ManagementEventWatcher(new WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace"));
processStartEvent.EventArrived += new EventArrivedEventHandler(processStartEvent_EventArrived);
processStartEvent.Start();

基本上,我需要实现的是监控新流程,但使用普通帐户。我做了一些研究,发现WMI查询需要提升访问权限,我无法提供给我的应用程序。

我删除了我的查询中的部分,但它是由实际用户启动的进程。我需要应用程序在每次启动此过程时执行一些任务。

1 个答案:

答案 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(); }
    }