GUID(グローバルに一意の識別子)

2023-02-24

グラフィカルユーザーインターフェイスD/UUID

世界的にユニークな識別子(GUID、Globally Unique Identifier) はアルゴリズムによって生成されるバイナリ128 ビットの数値識別子。 GUID は主に、複数のノードと複数のコンピュータを備えたネットワークまたはシステムで使用されます。理想的には、あらゆるコンピュータとコンピュータクラスタどちらも 2 つの同一の GUID を生成することはありません。 GUID の総数は 2^128 (3.4×10^38) に達するため、2 つの同一の GUID がランダムに生成される可能性は非常に低いですが、0 ではありません。したがって、GUID の生成に使用されるアルゴリズムでは、通常、このような状況が繰り返されないように、非ランダム パラメーター (時間など) が追加されます。

GUID という用語は、特に次のことを指すこともあります。マイクロソフトUUID標準の実装。
Windows プラットフォームでは、GUID は次のようなものを識別するために Microsoft 製品で広く使用されています。レジストリキー、クラスとインターフェイスの識別、データベース、システムディレクトリなどのオブジェクト。



GUID の形式は「xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx」です。各 x は 0 ~ 9 または a ~ f の範囲の 1 つです。16進数番号。たとえば、6F9619FF-8B86-D011-B42D-00C04FC964FF は有効な GUID 値です。

ソフトウェアの機能

編集 放送


1. GUID が必要な場合、アルゴリズムによって完全に自動的に生成できるため、権限のある組織による管理は必要ありません。

2. GUID は理論的にはユニバース内で一意の値を生成できるため、将来のデータ インポートに非常に便利です。


GUID値の生成による潜在的な欠点が生じている機密保持提唱する注目の。 1999 年 3 月、米国連邦取引委員会は次の要請を受けました。マイクロソフトGUID 値は調査に使用されます。紛争の主な内容は、オフィス97そしてオフィス2000GUID 値の使用を文書化します。 WordファイルなどのOffice文書やエクセル電子データシート、使用される GUID 値はユーザーには見えません。しかし、文書の作成者が特別な方法を採用したとしても、GUID 値の追跡によって追跡できると主張する報告が数多くあります。 上記の問題に対応して、Microsoft は 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マックスとして 長さ)として 長さ
プライベート 関数 GUID生成()として 弦 'GUIDの生成
薄暗い uGUIDとして ガイド
薄暗い sGUIDとして 弦
薄暗い bGUID()として バイト
薄暗い lレンとして 長さ
薄暗い 戻り値として 長さ
l長さ = 40
bGUID =弦(lLen, 0)
共同作成Guid uGUID'構造体を表示可能な文字列に変換します
RetVal = StringFromGUID2(uGUID、VarPtr(bGUID(0))、lLen)
sGUID = bGUID
もし (Asc(Mid$(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 を生成する
定数 文字* 新しいGUID()
{
静的 文字 バッファ[64] = {0};
GUID ガイド;
もし (S_OK == ::CoCreateGuid(&guid))
{
_snprintf(バッファ,サイズ(バッファ)
、「{%08X-%04X-%04x-%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]
);
}
戻る (定数 文字*)バッファ;
}
整数 主要(整数 argc、文字* argv[])
{
シェア
次の:これが最後のものです
前:これは最初の記事であります