2024年1月31日发(作者:)

windows终端唯一标识一、概述作为windows终端唯一标识,有很多种。不同的可客户群体,因其专业性、习惯性以及使用场景的不同,选择的标识也不同。以下对7种标识【硬盘序列号、windows产品编号、系统编号、主板编号、CPU编号、网卡地址、IP地址】进行阐述。二、各种标识1、硬盘序列号硬盘序列号作为设备唯一标识存在的问题是,很多机器可能存在多块硬盘,特别是服务器,而且机器更换硬盘是很可能发生的事情。而且,不一定所有的电脑都能获取到硬盘序列号。API#如下5种方式获取硬盘编号#可运行在Powershell和Cmdwmicpathwin32_physicalmediagetSerialNumberwmicpathWin32_DiskDrivegetSerialNumberwmicdiskdrivegetSerialNumber#只能运行在powershell上gwmiWin32_DiskDrive|%{$_.()}gwmiwin32_physicalmedia|%{$_.()}唯一性统计验证从少许的几台终端验证看,硬盘序号都是不一样的。本人电脑额外增加了一个固态硬盘,所以查询的硬盘序号有2个。

2、Windows产品编号产品编号并不唯一,不同系统或者机器重复的概率也比较大。虚拟机中克隆的系统,使用同一个镜像安装激活的系统,其产品编号就可能一模一样。API#如下提供3种方式获取windows产品编号#仅能运行在powershell上(gp"HKLM:SOFTWAREMicrosoftWindowsNTCurrentVersion").ProductIdgpv"HKLM:SOFTWAREMicrosoftWindowsNTCurrentVersion"ProductId#可运行在Powershell、CmdREGQUERY"HKLMSOFTWAREMicrosoftWindowsNTCurrentVersion"/vProductId唯一性统计验证基于产品编号对终端分析统计数据如下图所示;从下图得出:一个产品编号下,可能存在很多个终端。

3、系统编号Windows安装时会唯一生成一个GUID,但在实际测试中,会存在多个终端GUID相同,可能是通过克隆而来的操作系统。API#如下提供2种获取windows产品编号方式#仅可运行在Powershell(gpHKLM:SOFTWAREMicrosoftCryptography).MachineGUID

#可运行在Powershell,CmdREGQUERYHKLMSOFTWAREMicrosoftCryptography-vMachineGUID唯一性统计验证基于系统编号对终端分析统计数据如下,下面截图上可以看出,存在一个系统编号下有9个终端。4、主板编号主板UUID是很多授权方法和微软官方都比较推崇的方法,即便重装系统UUID应该也不会变。但是这个方法也有缺陷,因为不是所有的厂商都提供一个UUID,当这种情况发生时,wmic会返回“FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF”,即一个无效的UUID。

API#如下4种方式获取主板编号#可运行在Powershell,CmdwmiccsproductgetIdentifyingNumber,UUID#均仅运行在powershell上gwmiWin32_ComputerSystemProduct|selectIdentifyingNumber,UUIDgwmiWin32_BIOS|%SerialNumbergwmiWin32_SystemEnclosure|%SerialNumber唯一性统计验证基于主板编号对终端分析统计数据如下:从图一和图二看,几乎每个终端对应的主板编号都不一样。图二中出现了一个主板编号对应2个终端,显然这个主板编号是不正常结果。图一

图二5、CPU编号目前CPU编号无法唯一标识设备,Intel现在可能同一批次的CPU编号都一样,不再提供唯一的ID。而且经过实际测试,新购买的同一批次PC的CPU编号很可能一样。这样作为设备的唯一标识就会存在问题。

API#提供2种方式获取CPU_ID#效率高,可运行在Powershell、Cmdwmiccpugetprocessorid|select-Skip1|?{$_.trim()-ne''}#效率低,仅可运行在PowershellgwmiWin32_Processor|%processorid唯一性统计验证基于CPU_ID对终端分析统计数据如下,一个CPU_ID下,存在很多个终端。6、网卡地址一个电脑可能存在多个网卡,多个MAC地址,如典型的笔记本可能存在有线、无线、蓝牙等多个MAC地址,随着不同连接方式的改变,每次MAC地址也会改变。而且,当安装有虚拟机时,MAC地址会更多。MAC地址另外一个更加致命的弱点是,MAC地址很容易手动更改。因此,MAC地址基本不推荐用作设备唯一ID。API#如下是获取启用网卡地址,并排除虚拟机网卡;仅可运行在Powershell上(gwmiwin32_networkadapter|?{$_.NetEnabled-and$_.ServiceName-ne'VMnetAdapter'}|%MACAddress)-join','唯一性统计验证略,无需统计,网络常识。

7、IP地址在配置静态IP,且网卡不变的情况下,IP不会变。但是实际的场景,大部分终端都是动态IP,会因重启系统和网卡,插拔网线、网卡切换等操作而改变,使其不能作为终端唯一标志。API#如下是获取启用网卡绑定IP,并排除虚拟机网卡;仅可运行在Powershell上(gwmiwin32_NetworkAdapterConfiguration|?{$_.ipenabled-like$true-and$_.ServiceName-ne'VMnetAdapter'-and$_.DefaultIPGateway}|%{if($_.ipaddress-ne$null){$_.ipaddress[0]}})-join','唯一性统计验证略,无需统计,网络常识。三、总结1、如果对设备做唯一性标识,主板编号是最佳选择。(1)如果主板编号(默认编号)不唯一,取固定的网卡(最好排除移动网卡)地址作为第二唯一标识。2、如果对操作系统做唯一性标识,主板编号与系统编号组合是最佳选择。(1)如果主板编号(默认编号)和系统编号组合仍不唯一,取固定的网卡(最好排除移动网卡)地址作为第二唯一标识。