Не удается получить системный идентификатор в WPF
Я программирую в WPF C# и пытаюсь получить ProcessorID (или другой системный идентификатор). Я прочитал MSDN - пространство имен System.Management. Я добавляю пространство имен, но оно не обеспечивает ManagementBaseObject Class
,
using System.Management;
/* code */
System.Management.(there is no ManagementBaseObject)
System.Management используется только в WinForms, а не в WPF?
3 ответа
Следующий код даст вам идентификатор процессора, учитывая, что вы добавили ссылку на 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;
}
Вам нужно добавить ссылку на System.Management.dll
(Согласно "Сборке" в документации к этому классу)
Есть несколько существующих типов с System.Management
пространство имен внутри System.Core
Вот почему вы видите некоторые типы.
За ManagementBaseObject
Однако вам также необходимо добавить ссылку на System.Management.dll
к вашему проекту.
Код Дирка может возвращать нулевой объект. Пожалуйста, исправьте это следующим образом:
public static string GetProcessorID()
{
string cpuid = "";
ManagementObjectSearcher mbs = new ManagementObjectSearcher("Select ProcessorID From Win32_processor");
foreach (ManagementObject mo in mbs.Get())
{
var processorId = mo["ProcessorID"];
if (processorId != null)
{
cpuid = processorId.ToString();
break;
}
}
return cpuid;
}