32

一意のコンピューター ID を取得する方法を探しています。

この投稿によると、この目的でプロセッサ ID を使用することはできません。マザーボードIDを取得できますか? コンピュータを識別する最良の方法は何ですか?

4

3 に答える 3

38

あなたが言ったように、CPU IDは一意ではありませんが、別のハードウェア識別子と一緒に使用して独自の一意のキーを作成できます。

参照アセンブリSystem.Management

したがって、次のコードを使用して CPU ID を取得します。

string cpuInfo = string.Empty;
ManagementClass mc = new ManagementClass("win32_processor");
ManagementObjectCollection moc = mc.GetInstances();

foreach (ManagementObject mo in moc)
{
     cpuInfo = mo.Properties["processorID"].Value.ToString();
     break;
}

次に、次のコードを使用して HD ID を取得します。

string drive = "C";
ManagementObject dsk = new ManagementObject(
    @"win32_logicaldisk.deviceid=""" + drive + @":""");
dsk.Get();
string volumeSerial = dsk["VolumeSerialNumber"].ToString();

次に、これら 2 つのシリアル番号を組み合わせて、そのマシンの uniqueId を取得できます。

string uniqueId = cpuInfo + volumeSerial;

明らかに、ID を取得するハードウェア コンポーネントが多いほど、一意性が高くなります。ただし、同じマシンが同一の CPU シリアルとハード ディスク シリアルを持つ可能性は、すでにほとんどありません。

于 2010-08-13T07:59:29.383 に答える
5

ネットワークアダプタのMACアドレス? Windows OS インストールのセキュリティ識別子 (SID)? (扱っているのは Windows だと仮定します) 各 PC の GUID を生成していただけませんか?

正確に何を達成しようとしていますか?

于 2010-08-13T07:59:27.677 に答える
4

マザーボード ID はかなりユニークな識別子です。もう 1 つのオプションは、ネットワーク カードの MAC アドレスを使用することです。これは、ほぼ一意です。

于 2010-08-13T07:57:32.810 に答える