0

Windows 서비스가 있습니다. PerformanceCounter 클래스를 사용하여 Domain Machine에서 CPU 데이터를 가져옵니다. Domain Admin 권한으로 코드를 실행하고 있습니다.System.ComponentModel.Win32Exception : 액세스가 거부되었습니다.

Visual Studio에서 코드를 실행하는 동안 PerformanceCounter를 사용하여 CPU 데이터를 가져올 수 있습니다. 그러나 Windows 서비스를 설치 한 후 동일한 코드가 작동하지 않습니다.

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 죄송 그것은 didn를하는 데 도움이 도와 줘. 이미이 대답을 보았습니다 –

+1

카운터를 읽으려면 대상 컴퓨터에 대한 권한이 필요에 따라 서비스를 실행하도록 선택한 사용자와 비슷하게 들립니다. –

답변

1

서비스는 일반적으로 네트워크 서비스 또는 overwise을 구성하지 않은 로컬 시스템으로 실행

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

double value = pc.NextValue(); 

이 예외 :

여기에 코드입니다. 서비스 로그온 사용자를 변경하지 않은 것 같습니다. 서비스 컨트롤 관리자에서 서비스를 마우스 오른쪽 단추로 클릭하고 로그온 탭으로 이동하여이 작업을 수행 할 수 있습니다. 아니면 명령 줄에서 작업을 수행 할 수 있습니다

sc config ServiceName obj= Domain\user password= pass 

주에게 공간을 obj=Domain\user 사이에 오타가 아닙니다. 필수 항목입니다. password=도 마찬가지입니다.

+0

헤이 @mikez 이것은 나를 위해 일했다. 방금 서비스 로그온 사용자로 내 사용자를 추가했습니다. 매우 감사합니다. –

관련 문제