2014-01-12 4 views
1

Я заяц приложения WPF и я я использую следующий для получения сведений ОС моего ПК:выбрать * из 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

Я бы предложил использовать свойства класса Environment и OperatingSystem (вместо ManagementObjectSearcher), чтобы получить эти детали.

string _operatingSystem = Environment.OSVersion.VersionString; 
+0

Это дает мне «Microsoft Windows NT 6.1.7601 с пакетом обновления 1», но я запускаю Windows 7, что я хочу показать пользователю. –

+0

По крайней мере, для 8.1 (+) Environment.OSVersion.VersionString не требуется отображение текущей ОС. (Скорее, это повлияло на манифест приложения C#) – Tom

1

Классы WMI имеют пространство имен, вы не указали его. Используйте WMI Code Creator, чтобы получить правильные запросы, он генерирует код C# для вас, и вы можете запустить его прямо из инструмента, чтобы проверить результаты.