6

Delphi アプリの一意のコンピュータ ID をすばやく生成するにはどうすればよいですか? 以前は c# で簡単に実行できましたが、これは時々失敗しました。IDを「静的」にしたいのですが、ハードウェアの変更やOSの再インストールによってIDが変更されてもかまいません。レジストリに保存して、アプリの起動時に確認する予定でした。レジストリを更新します。(レジストリ部分のコーディング方法は知っています。一意の ID についてのみヘルプが必要です)。

ありがとう。

4

4 に答える 4

6

ハードディスクのシリアル番号または MAC アドレスを使用します。

https://stackoverflow.com/questions/331106/how-to-get-serial-number-from-hard-disks (リンク切れ)
一意のマシン ID の生成

于 2009-12-06T02:44:47.847 に答える
5

グローバルに一意の識別子を作成する SysUtils.CreateGUID を見てください。構文:

function CreateGUID(out Guid: TGUID): HResult; stdcall;

D2010 のヘルプから抜粋した小さな例:

{
This example demonstrates the usage of some GUID 
related routines along with the type itself.
}
procedure TForm2.FormCreate(Sender: TObject);
var
  MyGuid0, MyGuid1 : TGUID;

begin
  { Create a new GUID from the string representation. }
  MyGuid0 := StringToGUID('{00020400-0000-0000-C000-000000000046}');
  Memo1.Lines.Add('The GUID is: ' + GUIDToString(MyGuid0));

  {
  Accessing GUID's internal fields
  Using the Format function to obtain the same output as GUIDToString
  }
  Memo1.Lines.Add(Format('GUID using formatting is: ' +
       '{%0.8X-%0.4X-%0.4X-%0.2X%0.2X-%0.2X%0.2X%0.2X%0.2X%0.2X%0.2X}',
       [MyGuid0.D1, MyGuid0.D2, MyGuid0.D3,
       MyGuid0.D4[0], MyGuid0.D4[1], MyGuid0.D4[2], MyGuid0.D4[3],
       MyGuid0.D4[4], MyGuid0.D4[5], MyGuid0.D4[6], MyGuid0.D4[7]]));

  { Autogenerate a random GUID at run time. }
  if CreateGUID(MyGuid1) <> 0 then
     Memo1.Lines.Add('Creating GUID failed!')
  else
     Memo1.Lines.Add('The generated guid is: ' + GUIDToString(MyGuid1));

  { Generating second random GUID. }
  CreateGUID(MyGuid0);

  { Testing if two guids are equal. }
  if IsEqualGUID(MyGuid0, MyGuid1) then
     Memo1.Lines.Add('This cannot happen! CreateGUID guarantees that ' +
                     '2 randomly generated GUIDs cannot be equal!');
end;

HTH

于 2009-12-05T16:44:25.790 に答える
0

次の理由により、UUID アルゴリズムの使用を試みることができます。

  • ハードウェアに依存しない
  • 本当にランダムです
  • プラットフォームに依存しません。

ただし、注意してください: ハードウェアの独立性を実現するには、マシンの MAC アドレスを使用しないアルゴリズムを選択する必要があります。Microsoft の GUID はこれを使用しています (これが、LOVE YOU ウイルスの作成者を突き止めた方法です。覚えていますか?)

于 2009-12-05T12:57:53.433 に答える