2

我有一段代码来处理启动或停止特定进程的场景,为了实现这一点,我正在使用 ManagementEventWatcher。

       string queryStart = "SELECT * FROM Win32_ProcessStartTrace" +
                     " WHERE ProcessName LIKE '...'"; // WHERE clause includes all the processnames that I want to monitor 
       ManagementEventWatcher startWatch = new ManagementEventWatcher(
            new WqlEventQuery(queryStart));
        startWatch.EventArrived += new EventArrivedEventHandler(ProcessNewInstanceWhenCreated);
        startWatch.Start();

这段代码在我的机器上本地运行良好,但是当我将它部署到其中一台服务器时,它会抛出“拒绝访问”异常。在服务器上运行它的用户没有管理员权限,因此我按照此链接中的说明添加了用户 - http://world.episerver.com/faq/Items/SystemManagementManagementException-Access-denied/

这似乎不能解决问题。我是否已执行任何其他操作以使其在服务器上运行?

我也向 ManagementEventHandler 添加了一个 ManagementScope,但仍然无济于事。

       string scopeString = "\\\\" + System.Environment.MachineName + "\\root\\CIMV2";
        ManagementScope theScope = new ManagementScope(scopeString);
        ManagementEventWatcher startWatch = new ManagementEventWatcher(theScope,
            new WqlEventQuery(queryStart));

感谢您的时间和帮助

4

0 回答 0