我使用WPF C#进行编程,并尝试获取ProcessorID(或其他系统标识符)。我已阅读MSDN - System.Management Namespace。我添加了名称空间,但不提供ManagementBaseObject Class
。
using System.Management;
/* code */
System.Management.(there is no ManagementBaseObject)
System.Management是否仅在WinForms中使用,而不在WPF中使用?
如果您已添加对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;
}
您需要添加对System.Management.dll的引用
((根据该类的documentation中的“程序集”)
System.Management
中有一些具有System.Core
名称空间的现有类型,这就是为什么您看到某些类型的原因。
但是,对于ManagementBaseObject
,您还需要在项目中添加对System.Management.dll
的引用。
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;
}