0

如何在 C# 中生成系统(PC/笔记本电脑)硬件唯一 ID?

请注意:所有系统的配置都相同。

4

4 回答 4

2

您可以使用Guid类和NewGuid方法:

var uniqueId = Guid.NewGuid();
于 2012-05-11T05:50:27.520 回答
1

我想不是 MAC 地址,因为它基于可以更改的外围设备,您可以使用处理器和主板 ID 来识别系统,因为它们只会在损坏时更改,并在更改时创建新系统

Func<string> SystemId = () =>
    {
        ManagementObjectCollection mbsList = null;
        ManagementObjectSearcher mbs = new ManagementObjectSearcher("Select * From Win32_processor");
        mbsList = mbs.Get();
        string id = "";
        foreach (ManagementObject mo in mbsList)
        {
            id = mo["ProcessorID"].ToString();
        }

        ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard");
        ManagementObjectCollection moc = mos.Get();
        string motherBoard = "";
        foreach (ManagementObject mo in moc)
        {
            motherBoard = (string)mo["SerialNumber"];
        }

        string uniqueSystemId = id + motherBoard;
        return uniqueSystemId;
    };

    Console.WriteLine(SystemId());

甚至可以更新处理器,因此可以忽略+我知道甚至微软曾经有主板ID来识别/激活窗口。

于 2018-06-18T10:26:21.053 回答
0

您可以使用“Microsoft Windows SDK”工具“GUID Generator”guidgen.exe)以非编程方式生成 GUID。此工具有不同的方式来表示生成的 GUID,因此您可以在应用程序中进一步使用它。

在此处输入图像描述

于 2012-05-11T05:59:59.197 回答
0

通常最可靠的方法之一是查看您是否无法获取网卡的 MAC 地址。通常这些是唯一的(除非您还将所有 MAC 地址配置为相同,在这种情况下您将遇到更大的问题 :))但我支持前面的评论。如果这是为了保护版权,请不要这样做。当用户更换网卡或淘汰 PC 以迁移到更新的硬件时,他们会感到沮丧。

于 2012-05-11T05:55:30.643 回答