none
WMI를 이용하여 CPU%를 얻고 싶은데 일부 Server에서 Error가 발생합니다. RRS feed

  • 질문

  • 안녕하세요.

    VS2005( C#)에서 WMI를 이용하여 Windows Server들의 CPU%를 얻어오는 것을 하고 있는데요.

    특정 2개 Server에서만 Error가 발생합니다.

    아래 화면의 내용은 Windows 2008 Server에 접속시 Error입니다.

    구글링을 해보면 WMI의 상태 점검이라든지, Diagnose tool을 이용하여 점검을 해보라고 해서

    점검을 했지만 특이점이 없네요.

    Source는 아래와 같습니다.

    ConnectionOptions loConn = new ConnectionOptions();
                    loConn.Username = isDBList[argArrayPointer, 5];
                    loConn.Password = isDBList[argArrayPointer, 6];

                    ManagementScope loMSc = new ManagementScope(@"\\" + isDBList[argArrayPointer, 0] + @"\root\cimv2", loConn);
                    loMSc.Connect();  //--- 이 부분에서 System.UnauthorizedAccessException Exception발생!!!

                    ObjectQuery loOQu = new ObjectQuery("SELECT * FROM Win32_Processor");
                    ManagementObjectSearcher loMOSe = new ManagementObjectSearcher(loMSc, loOQu);
                    ManagementObjectCollection loResult = loMOSe.Get();

                    foreach (ManagementObject loObj in loResult)
                    {
                        ldcCPUUsage += Convert.ToDecimal(loObj["LoadPercentage"]);
                        ++liCPU;
                    }

    위와 같은 Error를 확인해보고자 해당 Server에서 VBS를 이용하여 Test해보니 문제는 없더군요.

    권한 인증문제 인듯 한데 모르겠네요. 도움을 주실분 계신가요?

    2012년 9월 17일 월요일 오전 7:39

답변

  • 권한문제인듯합니다.

    http://support.microsoft.com/kb/317012

    위 링크 사이트 내용중 아래 부분을 검토해보시면 될것 같습니다.

    System.Management 및 WMI 사용



    WMI(Windows Management Instrumentation)는 Windows 기반 컴퓨터를 관리하고 모니터링하는 데 사용할 수 있는 강력한 관리 기능을 제공합니다. 그러나 ASP.NET 응용 프로그램이 ASPNET 계정으로 실행될 때 이 계정은 Everyone과 동일한 기본 액세스 권한만 가집니다. 기본 액세스 권한에는 WMI 데이터 읽기, 공급자 데이터 쓰기 및 로컬 컴퓨터의 공급자에 대한 메서드 실행 등이 포함됩니다. WMI 보안 메커니즘에 대한 자세한 내용은 WMI Platform SDK 설명서나 MSDN을 참조하십시오.

    참고 SP3 이상이 설치되지 않은 Windows 2000이나 SP1 이상이 설치되지 않은 Windows XP에서는 ASPNET 계정으로 실행되는 ASP.NET 웹 응용 프로그램이 작동되지 않고 "액세스가 거부되었습니다(0x80041003)" 오류 메시지가 나타날 수 있습니다. 이러한 문제는 계정에 특정 WMI 네임스페이스를 액세스할 수 있는 충분한 권한이 없기 때문에 발생합니다. 이 문제를 해결하려면 Windows XP SP1 이상이나 Windows 2000 SP3 이상을 설치합니다. 이 문제를 해결하려면 다음 단계를 수행하십시오.  
      • 컴퓨터 관리 MMC(Microsoft Management Console) 스냅인을 엽니다.
      • 서비스 및 응용 프로그램을 확장한 다음 WMI 컨트롤을 선택합니다.
      • WMI 컨트롤을 마우스 오른쪽 단추로 누르고 등록 정보를 누릅니다.
      • WMI 컨트롤 등록 정보 대화 상자에서 보안 탭을 누릅니다.
      • Root를 확장하고 CIMV2를 선택한 다음 보안을 누릅니다.
      • 보안 대화 상자에서 고급을 누릅니다.
      • 액세스 컨트롤 설정 대화 상자에서 추가를 누릅니다. <var>localMachineName</var>\ASPNET를 선택한 다음 확인을 누릅니다.
      • 사용 권한 항목 대화 상자에서 적용 대상이 이름 공간과 하위 이름 공간으로 설정되었는지 확인합니다.
      • '계정 사용' 허용'원격으로부터 사용 가능' 허용 확인란이 선택되었는지 확인합니다.
      • WMI 컨트롤 등록 정보 대화 상자로 돌아갈 때까지 각 대화 상자에서 확인을 누릅니다.
      • 응용 프로그램이 액세스할 다른 WMI 네임스페이스에 대해 5-10 단계를 반복합니다.

    • 답변으로 표시됨 IH Lee 2012년 9월 18일 화요일 오전 3:03
    2012년 9월 18일 화요일 오전 12:22

모든 응답

  • 권한문제인듯합니다.

    http://support.microsoft.com/kb/317012

    위 링크 사이트 내용중 아래 부분을 검토해보시면 될것 같습니다.

    System.Management 및 WMI 사용



    WMI(Windows Management Instrumentation)는 Windows 기반 컴퓨터를 관리하고 모니터링하는 데 사용할 수 있는 강력한 관리 기능을 제공합니다. 그러나 ASP.NET 응용 프로그램이 ASPNET 계정으로 실행될 때 이 계정은 Everyone과 동일한 기본 액세스 권한만 가집니다. 기본 액세스 권한에는 WMI 데이터 읽기, 공급자 데이터 쓰기 및 로컬 컴퓨터의 공급자에 대한 메서드 실행 등이 포함됩니다. WMI 보안 메커니즘에 대한 자세한 내용은 WMI Platform SDK 설명서나 MSDN을 참조하십시오.

    참고 SP3 이상이 설치되지 않은 Windows 2000이나 SP1 이상이 설치되지 않은 Windows XP에서는 ASPNET 계정으로 실행되는 ASP.NET 웹 응용 프로그램이 작동되지 않고 "액세스가 거부되었습니다(0x80041003)" 오류 메시지가 나타날 수 있습니다. 이러한 문제는 계정에 특정 WMI 네임스페이스를 액세스할 수 있는 충분한 권한이 없기 때문에 발생합니다. 이 문제를 해결하려면 Windows XP SP1 이상이나 Windows 2000 SP3 이상을 설치합니다. 이 문제를 해결하려면 다음 단계를 수행하십시오.  
      • 컴퓨터 관리 MMC(Microsoft Management Console) 스냅인을 엽니다.
      • 서비스 및 응용 프로그램을 확장한 다음 WMI 컨트롤을 선택합니다.
      • WMI 컨트롤을 마우스 오른쪽 단추로 누르고 등록 정보를 누릅니다.
      • WMI 컨트롤 등록 정보 대화 상자에서 보안 탭을 누릅니다.
      • Root를 확장하고 CIMV2를 선택한 다음 보안을 누릅니다.
      • 보안 대화 상자에서 고급을 누릅니다.
      • 액세스 컨트롤 설정 대화 상자에서 추가를 누릅니다. <var>localMachineName</var>\ASPNET를 선택한 다음 확인을 누릅니다.
      • 사용 권한 항목 대화 상자에서 적용 대상이 이름 공간과 하위 이름 공간으로 설정되었는지 확인합니다.
      • '계정 사용' 허용'원격으로부터 사용 가능' 허용 확인란이 선택되었는지 확인합니다.
      • WMI 컨트롤 등록 정보 대화 상자로 돌아갈 때까지 각 대화 상자에서 확인을 누릅니다.
      • 응용 프로그램이 액세스할 다른 WMI 네임스페이스에 대해 5-10 단계를 반복합니다.

    • 답변으로 표시됨 IH Lee 2012년 9월 18일 화요일 오전 3:03
    2012년 9월 18일 화요일 오전 12:22
  • 답변 감사드립니다.

    동작이 안되는 Server가 2대가 있었는데,

    Windows 2008을 사용하는 Server에 위를 참조하여 Authenticated Users에 "원격으로부터 사용"을

    Enable시키니까 되는군요.

    그런데 Windows 2000 + SP4를 사용하는 Server는 여전히 안되요...

    좀 더 찾아 봐야겠어요. 감사합니다.

    2012년 9월 18일 화요일 오전 3:05