2011-07-28 3 views
2

Я программирую в WPF C# и пытаясь получить ProcessorID (или другой системный идентификатор). Я прочитал MSDN - System.Management Namespace. Я добавляю пространство имен, но оно не содержит ManagementBaseObject Class.Не удается получить системный идентификатор в WPF

using System.Management; 

/* code */ 
System.Management.(there is no ManagementBaseObject) 

Используется ли System.Management только в WinForms, а не в WPF?

ответ

2

Следующий код даст вам идентификатор процессора, при условии, что вы добавили ссылку на System.Management:

public static string GetProcessorID() 
{ 
    var processorID = ""; 
    var query = "SELECT ProcessorId FROM Win32_Processor"; 

    var oManagementObjectSearcher = new ManagementObjectSearcher(query); 

    foreach (var oManagementObject in oManagementObjectSearcher.Get()) 
    { 
     processorID = (string)oManagementObject["ProcessorId"]; 
     break; 
    } 

    return processorID; 
} 
+0

Почему мы используем static? – KMC

+1

@KMC: Вам не обязательно, но поскольку это метод, который не зависит от любого состояния объекта, это имеет смысл. Также обратите внимание, что пространство имен 'System.Management' полностью не зависит от того, является ли ваше приложение консолью, Windows Forms или WPF-приложением. –

2

Вы должны добавить ссылку на System.Management.dll

(Per «сборки» в documentation для этого класса)

2

Есть некоторые существующие типы с System.Management пространства имен в пределах System.Core, это поэтому вы видите некоторые типы.

Для ManagementBaseObject, вы также должны добавить ссылку на System.Management.dll в свой проект.

+0

Спасибо большое, «System.Management.dll» было обязательным. –

Смежные вопросы