web-dev-qa-db-ja.com

一意のコンピューターID

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

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

30
StuffHappens

あなたが言ったように、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シリアルとハードディスクシリアルを持っている可能性は、すでにほとんどありません。

37
djdd87

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

4
Daniel Goldberg

ネットワークアダプターのMACアドレス? Windows OSインストールのセキュリティ識別子(SID)? (あなたが扱っているウィンドウであると仮定して)GUIDをPCごとに生成できますか?

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

4
AndySw