0

У меня есть служба Windows. Я использую класс PerformanceCounter для получения данных ЦП от Domain Machine. Я запускаю свой код с правами администратора домена.System.ComponentModel.Win32Exception: Доступ запрещен

Так что проблема здесь, я могу получить данные ЦП с помощью PerformanceCounter при запуске кода в Visual Studio. Тем не менее, тот же код не работает после установки службы Windows.

Вот код:

PerformanceCounter pc = new PerformanceCounter(); 
pc.MachineName = "ws-Rahul"; 
pc.CategoryName = "Processor"; 
pc.CounterName = "% Processor Time"; 
pc.InstanceName = "_Total"; 

double value = pc.NextValue(); 

Ниже исключение:

System.ComponentModel.Win32Exception : {"Access is denied"} 
+0

Надеюсь, что это помогает http://stackoverflow.com/questions/1565371/access-denied-reading-perfmon-counters-from-a-remote-machine-asp-net – Amit

+0

@Amit К сожалению это Ждут» t помочь. Я уже видел этот ответ. –

+1

Похоже, что любой пользователь, которого вы выбираете для запуска службы, нуждается в разрешении на целевой машине для чтения счетчиков. –

ответ

1

услуги, как правило, работает как сетевой службы или локальной системы, если вы не настроили их overwise. Похоже, что вы не изменили пользователя входа в систему. Вы можете сделать это из диспетчера управления сервисом, щелкнув правой кнопкой мыши службу и перейдите на вкладку «Вход в систему». Или вы можете сделать это из командной строки:

sc config ServiceName obj= Domain\user password= pass 

Обратите внимание на пробел между obj= и Domain\user это не опечатка. Требуется. То же самое для password=.

+0

Эй @mikez Это сработало для меня. Я просто добавил своего пользователя в качестве пользователя входа в систему. Огромное спасибо. –

Смежные вопросы