C# 无法获取C中的CPU序列号
我正在尝试获取CPU序列号,但无法获取。我可以得到主板和硬盘,但不能得到cpu 下面是我的代码。我做错了什么C# 无法获取C中的CPU序列号,c#,system,C#,System,我正在尝试获取CPU序列号,但无法获取。我可以得到主板和硬盘,但不能得到cpu 下面是我的代码。我做错了什么 public static void GetClientComputerInfo() { HDDSerial = "0"; BoardSerial = "0"; CPUSerial = "0"; try { ManagementObjectSearcher searcher
public static void GetClientComputerInfo()
{
HDDSerial = "0";
BoardSerial = "0";
CPUSerial = "0";
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_DiskDrive");
foreach (ManagementObject share in searcher.Get())
{
foreach (PropertyData PC in share.Properties)
{
if (PC.Name == "SerialNumber")
{
HDDSerial = PC.Value.ToString();
}
if (PC.Name == "SerialNumber")
{
BoardSerial = PC.Value.ToString();
}
if (PC.Name == "ProcessorID")
{
CPUSerial = PC.Value.ToString();
}
}
}
}
catch
{
}
}
试试这个
string cpuInfo = string.Empty;
ManagementClass mc = new ManagementClass("win32_processor");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
cpuInfo = mo.Properties["processorID"].Value.ToString();
break;
}
从中提取的代码您正在尝试获取序列号,但是if语句的CPU部分正在检查PC.Name==ProcessorID?@Thewads:PC.Name随着每次foreach迭代而变化。Win32\u DiskDrive不提供处理器ID。您可以使用Select*FROM Win32\u Processor来搜索处理器ID。foreach循环中的这个“中断”有意义吗?对我来说,ManagementObjectCollection包含2值,但两者相同。我真的不知道为什么它有两个值。我认为这取决于CPU核心的数量。在这种情况下不需要foreach。但是,如果要打印所有值,我将控制台输出放在for循环中而不中断。如果有多个值,Foreach/break将获取第一个值,但如果集合为空,则防止索引超出范围异常。如果旧系统不提供值,并且您猜测[0]存在,则可能会发生这种情况。