生成唯一的机器标识符

112

我需要编写一个函数,为运行Windows操作系统的特定机器生成唯一的id。

目前,我使用WMI查询各种硬件参数,将它们连接在一起并对它们进行哈希以生成唯一的id。我的问题是,我应该使用哪些建议参数呢?目前,我正在使用bios\cpu\disk数据的组合来生成唯一的id。如果每个指标有多个结果,我会使用第一个结果。

然而,我遇到了一个问题,一台双启动进入两个不同的Windows操作系统的机器会在每个操作系统上生成不同的站点代码,这理论上是不应该发生的。

以下是我目前正在使用的指标:

Win32_Processor:UniqueID,ProcessorID,Name,Manufacturer,MaxClockSpeed
Win32_BIOS:Manufacturer
Win32_BIOS:SMBIOSBIOSVersion,IdentificationCode,SerialNumber,ReleaseDate,Version
Win32_DiskDrive:Model, Manufacturer, Signature, TotalHeads
Win32_BaseBoard:Model, Manufacturer, Name, SerialNumber
Win32_VideoController:DriverVersion, Name
14个回答

0
也许有点作弊,但是现在机器的以太网适配器的MAC地址很少在没有更换主板的情况下发生变化。

很多制造商允许您更改它们。当使用集群时,这非常有帮助,因为一些供应商会给您所有具有相同MAC地址的计算机(我们几年前遇到了这个问题)。 - gizmo
1
MAC是完全不可靠的,因为它可以如此轻易地被更改(只需进行一次谷歌搜索,您就会看到许多免费工具正在执行此操作)。WMI也是如此。 - Gabriel

0
你能找到一些制造商序列号或服务标识吗?
我们的店铺是戴尔专卖店,因此我们使用每台机器独有的服务标识来识别它们。我知道它可以从BIOS中查询,在Linux中至少如此,但我不知道在Windows中该怎么做。

-1

查找CPUID以获取一个选项。在多CPU系统中可能会出现一些问题。


-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接