2013-08-01 2 views
2

WMI를 사용하여 컴퓨터의 하드 드라이브에 대한 정보를 얻지 만 Windows 하드 드라이브가 시스템 드라이브로 사용되는 위치를 식별 할 수있는 속성을 찾을 수 없습니다 설치되어 있습니다. Win32_DiskDrive를 사용하여 시스템 하드 드라이브를 식별하는 방법

ManagementObjectSearcher mos_HDD = new ManagementObjectSearcher("select * from Win32_DiskDrive"); 

나는 모든 속성을 반복 시도했지만 내가 필요로하는 정보를 보유하고 같이 어느 하나가 보인다.

foreach (ManagementObject mo_HDD in mos_HDD.Get()) 
{ 
     Console.WriteLine("HDD Properties:"); 
     foreach (PropertyData pd in mo_HDD.Properties) 
     { 
      Console.WriteLine("\tName: {0} \tValue: {1}", pd.Name, pd.Value != null ? pd.Value.ToString() : "NULL"); 
     } 
} 

는 또한 MSDN 문서 보았지만 운 O/w했습니다.

내가 여기서하려고하는 것은 시스템 드라이브 (예 : 서명 또는 일련 번호)에 대한 식별자를 얻는 것입니다.

이 정보를 얻으려면 도움이 필요합니다.

string SerialNumber; 
uint32 Signature; 

귀하의 관리 객체가 그것에서 그 특성이있을 것이다 : 당신이 연결

답변

0

문서는 답이 있습니다.

이러한 값에 대해 null이 표시되면 문제는 지원하지 않는 Windows 버전을 사용하고 있다는 것입니다.

SerialNumber 
... 
Windows Server 2003 and Windows XP: This property is not available. 

어떤 경우에는 서명 속성을 사용해야하지만, 이것은 내가 믿는 XP SP3가 필요합니다.

+0

감사합니다. 난 둘 다 확인하고 SerialNumber 잘 보이지만 문제는 시스템에 여러 개의 하드 디스크가있을 때입니다. 어떤 시스템 파티션을 보유하고 있는지 어떻게 알 수 있습니까? –

+0

'DeviceID' =='C :'(또는 Windows가 설치된 드라이브 문자)가있는 Win32_LogicalDisk가있는 드라이브를 찾으십시오. – PhonicUK

+0

이 해결책을 찾을 수는 없지만 이것이 가장 가까울만큼 빠릅니다. 대답으로 표시합니다. –

1

당신은 그것으로 얻을 수 있습니다 : 세부 사항에 대한

public static void Main() 
    { 
     try 
     { 
      ManagementObjectSearcher searcher = 
       new ManagementObjectSearcher("root\\CIMV2", 
       "SELECT * FROM Win32_DiskDrive"); 

      foreach (ManagementObject queryObj in searcher.Get()) 
      {     
       Console.WriteLine("SerialNumber: {0}", queryObj["SerialNumber"]); 
       Console.WriteLine("Signature: {0}", queryObj["Signature"]); 
      } 
     } 
     catch (ManagementException e) 
     { 

     } 
    } 
관련 문제