::  ::  ::  ::  :: 管理

什么是guid

Posted on 2008-06-16 04:31 nt05 阅读(260) 评论(0)  编辑 收藏 引用 所属分类: windows nt
globally unique identifier(GUID——全局唯一标识符)

分配给COM对象的标识符(ID)。它通过一种复杂的算法生成,该算法保证所有的COM对象都有着唯一的ID,而不会出现名字冲突。
GUID(全球唯一标识)是微软使用的一个术语,由一个特定的算法,给某一个实体,如Word文档,创建一个唯一的标识,GUID值就是这个唯一的标识 码。GUID广泛应用于微软的产品中,用于识别接口、复制品、记录以及其他对象。不同类型的对象对应不同的GUID值。例如,一个微软Access数据库 使用的是16字节域为复制品创建一个唯一标识。

  微软的某种GUID值本质、形成GUID值方法以及由于GUID值产生的潜在弊端已经引起了保密性提倡者的关注。1999年3月,美国联邦商务委员会接到要求,对微软的GUID值使用进行调查。

  争议主要涉及Office 97和Office 2000文档对GUID值的使用。发现表明,为Office文档产生的GUID值与计算机网卡统一标识值一致。这个事实表明,Office文档,如 Word文件或Excel电子数据表,所使用的GUID值对用户是不可见的。有很多报道宣称,文档的作者是可以通过GUID值的跟踪查到的,即使作者已经 采用特殊方法,他们还是可以被追踪到的。

  为了回应上述问题,微软已经发布了一个Office 97修补版SR2,它禁止了GUID功能的使用,并且还可以将现存文档的GUID去除。

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

GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成GUID的API。生成算法很有意思,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。GUID的唯一缺陷在于生成的结果串会比较大。
GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。例如:6F9619FF-8B86-D011-B42D-00C04FC964FF 即为有效的 GUID 值。
GUID    guid;   
   CoCreateGuid(&guid);   
    
   char    strData1[9];   
   char    strData2[5];   
   char    strData3[5];   
   char    strData4[8][3];   
    
   sprintf(strData1,"%08X",guid.Data1);   
   sprintf(strData2,"%04X",guid.Data2);   
   sprintf(strData3,"%04X",guid.Data3);   
   sprintf(strData4[0],"%02X",guid.Data4[0]);   
   sprintf(strData4[1],"%02X",guid.Data4[1]);   
   sprintf(strData4[2],"%02X",guid.Data4[2]);   
   sprintf(strData4[3],"%02X",guid.Data4[3]);   
   sprintf(strData4[4],"%02X",guid.Data4[4]);   
   sprintf(strData4[5],"%02X",guid.Data4[5]);   
   sprintf(strData4[6],"%02X",guid.Data4[6]);   
   sprintf(strData4[7],"%02X",guid.Data4[7]);   
    
   m_strID.Format("{%s-%s-%s-%s%s-%s%s%s%s%s%s}",strData1,strData2,strData3,   
   strData4[0],strData4[1],strData4[2],strData4[3],strData4[4],strData4[5],strData4[6],strData4[7]);

Guid 简单类型

定义用于通过 GUID 值标识对象的值的类型。

<xs:simpleType name="Guid">
<xs:restriction
base="string"
>
<xs:pattern
value="[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}"
/>
</xs:restriction>
</xs:simpleType>

以下模式由 Guid 简单类型定义:

[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}

一个作为 GUID 值的字符串,它是唯一的 128 位数字。例如 5b2fc63a-8af4-44cb-960c-aefdced908d6。