圖形使用者介面D/UUID
全域唯一識別符(GUID,Globally Unique Identifier)是一種由演算法產生的二進位長度為128位元的數字標識符。 GUID主要用於在擁有多個節點、多台電腦的網路或系統中。在理想情況下,任何計算機和電腦集群都不會產生兩個相同的GUID。 GUID 的總數達到了2^128(3.4×10^38)個,所以隨機產生兩個相同GUID的可能性非常小,但並不為0。所以,用於產生GUID的演算法通常都加入了非隨機的參數(如時間),以確保這種重複的情況不會發生。
在 Windows 平台上,GUID 廣泛應用於微軟的產品中,用於識別如
註冊表項、類別及介面標識、資料庫、
系統目錄等對象。
GUID 的格式為“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每個 x 是 0-9 或 af 範圍內的一個十六進位數。例如:6F9619FF-8B86-D011-B42D-00C04FC964FF 即為有效的 GUID 值。
1.需要GUID的時候,可以完全由演算法自動生成,不需要一個權威來管理。
2.GUID理論上能產生全宇宙唯一的值,對於以後的資料導入很方便。
由於GUID值產生的潛在弊端已經引起了保密性倡議者的關注。 1999年3月,美國聯邦商務委員會接獲要求,對微軟的GUID值使用進行調查。爭議主要涉及97號辦公室和辦公室2000文檔對GUID值的使用。 Office文檔,如Word文件或Excel電子數據表,所使用的GUID值對使用者是不可見的。但有許多報導宣稱,文件的作者是可以透過GUID值的追蹤查到的,即使作者已經採用特殊方法,他們還是可以被追蹤到。為了回應上述問題,微軟已經發布了一個Office 97修補版SR2,它禁止了GUID功能的使用,並且還可以將現存文檔的GUID去除。
潛在的對Intel處理器序號濫用的問題與上述GUID值的問題本質是一樣的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 號 18 19 20 21 22 23 | 選項 顯式的
私人的 類型 GUID
數據1 作為 長的
數據2 作為 整數
數據3 作為 整數
數據4(8) 作為 位元組
結尾 類型
私人的 宣告 功能 共同創建指南 庫 “ole32.dll” (pguid 作為 GUID) 作為 長的
私人的 宣告 功能 來自GUID2的字串 庫 “ole32.dll” (rguid 作為 任何, 拜爾 lpstrClsId 作為 長的 , 拜爾 最大cb 作為 長的 ) 作為 長的
私人的 功能 GUIDGen() 作為 細繩
暗淡 uGUID 作為 GUID
暗淡 sGUID 作為 細繩
暗淡 bGUID() 作為 位元組
暗淡 長度 作為 長的
暗淡 保留值 作為 長的
長度 = 40
bGUID = 細繩 (lLen, 0)
CoCreateGuid uGUID
RetVal = StringFromGUID2(uGUID, VarPtr(bGUID(0)), lLen)
sGUID = bGUID
如果 (升(中$(sGUID, RetVal, 1)) = 0) 然後 恢復值 = 恢復值 - 1
GUIDGen = 左$(sGUID, RetVal)
結尾 功能
|
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 號 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #包括
#包括
常量 字元 * 新GUID()
{
靜止的 字元 buf[64] = {0};
GUID 引導;
如果 (S_OK == ::CoCreateGuid(&guid))
{
_snprintf(緩衝區, 大小 (緩衝區)
, “{%08X-%04X-%04x-%02X%02X-%02X%02X%02X%02X%02X%02X}”
, guid.Data1
, guid.Data2
, guid.Data3
, guid.Data4[0], guid.Data4[1]
、 guid.Data4[2]、guid.Data4[3]、guid.Data4[4]、guid.Data4[5]
, guid.Data4[6], guid.Data4[7]
);
}
返回 ( 常量 字元 *)緩衝區;
}
整數 主要的( 整數 精胺酸, 字元 * argv[])
{
|