Не удается получить системный идентификатор в 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;
}
Другие вопросы по тегам