圖形使用者介面D/UUID
全域唯一識別符(GUID,Globally Unique Identifier)是一種由演算法產生的二進位長度為128位元的數字標識符。 GUID主要用於在擁有多個節點、多台電腦的網路或系統中。在理想情況下,任何計算機和電腦集群都不會產生兩個相同的GUID。 GUID 的總數達到了2^128(3.4×10^38)個,所以隨機產生兩個相同GUID的可能性非常小,但並不為0。所以,用於產生GUID的演算法通常都加入了非隨機的參數(如時間),以確保這種重複的情況不會發生。
GUID 的格式為“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每個 x 是 0-9 或 af 範圍內的一個十六進位數。例如:6F9619FF-8B86-D011-B42D-00C04FC964FF 即為有效的 GUID 值。
1.需要GUID的時候,可以完全由演算法自動生成,不需要一個權威來管理。
由於GUID值產生的潛在弊端已經引起了保密性倡議者的關注。 1999年3月,美國聯邦商務委員會接獲要求,對微軟的GUID值使用進行調查。爭議主要涉及97號辦公室和辦公室2000文檔對GUID值的使用。 Office文檔,如Word文件或Excel電子數據表,所使用的GUID值對使用者是不可見的。但有許多報導宣稱,文件的作者是可以透過GUID值的追蹤查到的,即使作者已經採用特殊方法,他們還是可以被追蹤到。為了回應上述問題,微軟已經發布了一個Office 97修補版SR2,它禁止了GUID功能的使用,並且還可以將現存文檔的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()作為 細繩 '產生GUID 暗淡 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) 結尾 功能 |
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 常量 字元* 新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[]) { |