无法在WPF中获取系统标识符

问题描述 投票:2回答:4

我使用WPF C#进行编程,并尝试获取ProcessorID(或其他系统标识符)。我已阅读MSDN - System.Management Namespace。我添加了名称空间,但不提供ManagementBaseObject Class

using System.Management;

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

System.Management是否仅在WinForms中使用,而不在WPF中使用?

c# wmi system.management
4个回答
2
投票

如果您已添加对System.Management的引用,以下代码将为您提供处理器ID:

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;  
}

2
投票

您需要添加对System.Management.dll的引用

((根据该类的documentation中的“程序集”)


2
投票

System.Management中有一些具有System.Core名称空间的现有类型,这就是为什么您看到某些类型的原因。

但是,对于ManagementBaseObject,您还需要在项目中添加对System.Management.dll的引用。


0
投票

Dirk的代码可能返回空对象。请以这种方式纠正它:

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;
}
© www.soinside.com 2019 - 2024. All rights reserved.