C# CPU序列号/使用C的主板序列号#

C# CPU序列号/使用C的主板序列号#,c#,cpu,motherboard,C#,Cpu,Motherboard,我使用这段代码获取CPU/主板序列号: macid = AuraRijndael.GetMacID(); ManagementObjectCollection mbsList = null; ManagementObjectSearcher mbs = new ManagementObjectSearcher("Select * From Win32_processor"); mbsList = mbs.Get(); foreach (ManagementObject mo

我使用这段代码获取CPU/主板序列号:

macid = AuraRijndael.GetMacID();
ManagementObjectCollection mbsList = null;
ManagementObjectSearcher mbs = new ManagementObjectSearcher("Select * From Win32_processor");
mbsList = mbs.Get();
foreach (ManagementObject mo in mbsList)
{
    id = mo["ProcessorID"].ToString();
}

ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard");
ManagementObjectCollection moc = mos.Get();
foreach (ManagementObject mo in moc)
{
    motherBoard = (string)mo["SerialNumber"];
}
但它在某些机器上不起作用。在某些情况下,它可以正常工作,但在其他情况下则不行。有没有一种简单易行的方法来获取CPU/主板序列号


是否存在同样可靠的特定于机器的唯一id生成机制?(如有任何示例,我将不胜感激。)

尝试从供应商网页更新主板驱动程序/软件。应将其添加到注册表中。看:一个万无一失的方法?不。(即使不考虑没有什么是万无一失的;宇宙总是创造一个更大的傻瓜的事实)WMI可能是最好的查找位置,但信息不是标准化的,由每个制造商决定。根据我的经验,这类事情是一种使用供应商或特定于模型的逻辑来处理您事先知道的每种情况的练习。另请参见:对于SerialNumber,它通常不是由操作系统引起的,而是由制造商引起的。许多人(尤其是那些不向企业销售的人)只是不在他们的硬件上添加序列号(这需要更多的工作/成本,因为每件产品都必须明显不同)。唯一可靠工作的是Mac ID。你每次都会得到Mac ID。试着从供应商网页更新主板驱动程序/软件。应将其添加到注册表中。看:一个万无一失的方法?不。(即使不考虑没有什么是万无一失的;宇宙总是创造一个更大的傻瓜的事实)WMI可能是最好的查找位置,但信息不是标准化的,由每个制造商决定。根据我的经验,这类事情是一种使用供应商或特定于模型的逻辑来处理您事先知道的每种情况的练习。另请参见:对于SerialNumber,它通常不是由操作系统引起的,而是由制造商引起的。许多人(尤其是那些不向企业销售的人)只是不在他们的硬件上添加序列号(这需要更多的工作/成本,因为每件产品都必须明显不同)。唯一可靠工作的是Mac ID。你每次都会得到Mac ID。