【问题标题】:How to generate a System (PC/Laptop) Hardware unique ID in C#?如何在 C# 中生成系统(PC/笔记本电脑)硬件唯一 ID?
【发布时间】:2012-05-11 05:47:05
【问题描述】:

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

请注意:所有系统的配置都是一样的。

【问题讨论】:

标签: c#


【解决方案1】:

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

var uniqueId = Guid.NewGuid();

【讨论】:

    【解决方案2】:

    我想不是 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 来识别/激活窗口。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多