7

以前にも同様の質問をしたことがありますが、現在、必要なものに関するいくつかの制限を減らしています。

C# を使用して、コンピューター上で効率的に一意の識別子を見つける必要があります。特定のコンピューターで常に同じままである必要があり、取得が簡単であれば、多くの要因が複合している可能性があります。

WMI ネットワーク クエリで MAC アドレスを使用することを考えましたが、通常は 10 以上のアダプターがあるため、これは遅すぎます。WHERE IPEnabled=true 句を使用したほうがよいかもしれませんが、おそらくこれよりも優れた方法があると思います。

アイデア?

(PS 完全に一意である必要はありません。衝突の可能性が小さい限り、完璧です。)

4

4 に答える 4

18

まず、次のようにプロセッサ ID を取得します: (への参照を追加System.Management)

    ManagementObjectCollection mbsList = null;
    ManagementObjectSearcher mbs = new ManagementObjectSearcher("Select * From Win32_processor");
    mbsList = mbs.Get();
    string id = "";
    foreach (ManagementObject mo in mbsList)
    {
        id = mo["ProcessorID"].ToString();
    }

//次に、マザーボードのシリアル番号を取得できます。

    ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard");
    ManagementObjectCollection moc = mos.Get();
    string motherBoard = "";
    foreach (ManagementObject mo in moc)
    {
        motherBoard = (string)mo["SerialNumber"];
    }

上記の2つを連結して一意のIDを取得できます

    string myUniqueID = id + motherBoard;
    Console.WriteLine(myUniqueID);

このリンクもチェックしてくださいハードウェアID、CPU ID、マザーボードID、コンピューターのハードディスクIDの検索

于 2012-04-25T06:33:59.120 に答える
2

マシン SID も安定しています。以下にアクセスするさまざまな方法を...

WMI を使用して Windows コンピュータの SID を取得するにはどうすればよいですか?

于 2012-04-25T06:29:31.353 に答える
1

ここに表示される本当に良い例Generating-Uni​​que-for-a-Computer

于 2012-04-25T06:30:58.513 に答える
1

Windows Product Activation に関するこの技術情報を見ることができます。あなたのコメントから判断すると、おそらくここまでやりたくないでしょうが、インスピレーションを与えてくれるかもしれません...

WPA は、次のハードウェア アイテムの一部のシリアル番号に基づいてハッシュを生成します。

  • ディスプレイアダプタ
  • SCSI アダプタ
  • IDE アダプタ
  • ネットワーク アダプタ (MAC アドレス)
  • RAM量の範囲
  • プロセッサの種類
  • プロセッサーのシリアル番号
  • ハードドライブ
  • ハード ドライブ ボリューム シリアル番号
  • CD–ROM / CD-RW / DVD-ROM
于 2012-04-25T06:39:39.830 に答える