2014-01-12 89 views
1

我腦水腫WPF應用程序,我現在用的是以下獲得我的電腦的操作系統的詳細信息:SELECT * FROM Win32_OperatingSystem拋出異常

using (ManagementObjectSearcher win32OperatingSystem = new ManagementObjectSearcher("select * from Win32_OperatingSystem")) 
{ 
    foreach (ManagementObject obj in win32OperatingSystem.Get()) 
    { 
     _operatingSystem = obj["Caption"].ToString(); 
     _osArchitecture = obj["OSArchitecture"].ToString(); 
     break; 
    } 
} 

WhenI踏進這行:

的ManagementObject OBJ在win32OperatingSystem.Get())

我得到以下異常:

無效的查詢。

這裏有什麼不對?

回答

0

我會建議使用EnvironmentOperatingSystem類的屬性(而不是ManagementObjectSearcher)來獲取這些詳細信息。

string _operatingSystem = Environment.OSVersion.VersionString; 
+0

這給了我「Microsoft Windows NT 6.1.7601 Service Pack 1」,但我正在運行Windows 7,這是我想顯示給用戶。 –

+0

至少爲8.1(+)Environment.OSVersion.VersionString不需要顯示正在運行的操作系統。 (相反,它受到C#應用程序清單的影響) – Tom

1

WMI類有一個命名空間,你沒有指定一個。使用WMI Code Creator來使您的查詢正確無誤,它將爲您生成C#代碼,並且您可以直接從該工具運行它以檢查結果。