2024年4月3日发(作者:)

GUID概念

GUID: 即Globally Unique Identifier(全球唯一标识符) 也称作 UUID(Universally

Unique IDentifier) 。 GUID是一个通过特定算法产生的二进制长度为128位的数字标识

符,用于指示产品的唯一性。GUID 主要用于在拥有多个节点、多台计算机的网络或系统

中,分配必须具有唯一性的标识符。

在 Windows 平台上,GUID 广泛应用于微软的产品中,用于标识如如注册表项、类

及接口标识、数据库、系统目录等对象。

GUID格式

GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9

或 a-f 范围内的一个32位十六进制数。(8-4-4-4-12)例如:

6F9619FF-8B86-D011-B42D-00C04FC964FF 即为有效的 GUID 值。

GUID特点

★GUID在空间上和时间上具有唯一性,保证同一时间不同地方产生的数字不同。

★世界上的任何两台计算机都不会生成重复的 GUID 值。

★需要GUID的时候,可以完全由算法自动生成,不需要一个权威机构来管理。

★GUID的长度固定,并且相对而言较短小,非常适合于排序、标识和存储。

GUID争议

由于GUID值产生的潜在弊端已经引起了保密性提倡者的关注。1999年3月,美国

联邦商务委员会接到要求,对微软的GUID值使用进行调查。争议主要涉及Office 97和

Office 2000文档对GUID值的使用。Office文档,如Word文件或Excel电子数据表,

所使用的GUID值对用户是不可见的。但有很多报道宣称,文档的作者是可以通过GUID

值的跟踪查到的,即使作者已经采用特殊方法,他们还是可以被追踪到。 为了回应上述问

题,微软已经发布了一个Office 97修补版SR2,它禁止了GUID功能的使用,并且还可

以将现存文档的GUID去除。

潜在的对Intel处理器序列号滥用的问题与上述GUID值的问题本质是一样的。

在 API 参数中,需要给出的往往不是类或者 DLL/EXE 文件的真是名称,而是使用他

们的 GUID(全局统一ID)。GUID 是微软对 UUID(统一唯一标识)的解释,理论上在

整个空间和时间维上是唯一的,因此使用 GUID 来代替真实名称,可以防止系统中有两个

相同名称的对象而造成混淆。

一个 GUID 是一个128位长(16字节)的数,形如

xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx。其中前4字节为随机数;5-8字节为时间戳,

记录了从1490年开始到该GUID的生成时间(低16位字在前,以分钟为单位),从而保

证了时间上的唯一;9-10字节与机器重启次数有关;最后6字节一般为该机器的网卡地址

(如果这台机器没有网卡,则使用另一常数),从而保证了空间上的唯一。

在系统中,GUID 保存在注册表(运行→regedit)的 HKEY_CLASSES_ROOT 项下。

HKEY_CLASSES_ROOT 其实是 HKEY_LOCAL_MACHINESOFTWARECLASSES 的