2015-06-30 5 views
-1

Я пытаюсь создать приложение на C# .Net, и мне нужно его для сканирования процессов, которые пользователь запускает и останавливает, но я получаю «Отказано в доступе» на .Start()ManagementEventWatcher.Start() Access Denied

Вот что у меня до сих пор

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Security.Cryptography; 
using System.Text; 
using System.Threading; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

using MySql.Data.MySqlClient; 
using System.Management; 
using Security; 
using MySQLConnectivity; 

namespace MyApp 
{ 
    public partial class Login : Form 
    { 
     MySQLClass sql = new MySQLClass(); 
     ManagementEventWatcher processStartEvent = new ManagementEventWatcher("SELECT * FROM Win32_ProcessStartTrace"); 
     ManagementEventWatcher processStopEvent = new ManagementEventWatcher("SELECT * FROM Win32_ProcessStopTrace"); 

     public Login() 
     { 
      InitializeComponent(); 
      processStartEvent.EventArrived += new EventArrivedEventHandler(processStartEvent_EventArrived); 
      processStartEvent.Start(); 
      processStopEvent.EventArrived += new EventArrivedEventHandler(processStopEvent_EventArrived); 
      processStopEvent.Start(); 
     } 

     void processStartEvent_EventArrived(object sender, EventArrivedEventArgs e) 
     { 
      string processName = e.NewEvent.Properties["ProcessName"].Value.ToString(); 
      string processID = Convert.ToInt32(e.NewEvent.Properties["ProcessID"].Value).ToString(); 

      MessageBox.Show("Process started. Name: " + processName + " | ID: " + processID); 
     } 

     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(); 

      MessageBox.Show("Process stopped. Name: " + processName + " | ID: " + processID); 
     } 
    } 
} 

Я искал онлайн часы, но ничего не могли найти. Люди, у которых была эта проблема, имели это дистанционно, а не локально. Я использую Windows Pro 8.1 + Microsoft Visual Studio Ultimate 2013, на случай, если в этом случае важны версии VS или OS.

Проблема связана с processStartEvent.Start() словами «Доступ запрещен». Я также пытался переключиться с .Start() на .WaitForNextEvent() с тем же результатом

Все, что мне здесь не хватает?

+1

Вы пытались запустить как admin? –

+0

Yeap, ничего не изменилось. – user3153340

+0

Кроме того, у меня отключен UAC. – user3153340

ответ

0

ClickOnce был активирован. Отключение его решило мою проблему. Спасибо, тo.