一意のコンピューターIDを取得する方法を探しています。
この投稿 によると、この目的でプロセッサIDを使用することはできません。マザーボードIDを取得できますか?コンピューターを識別する最良の方法は何ですか?
あなたが言ったように、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シリアルとハードディスクシリアルを持っている可能性は、すでにほとんどありません。
マザーボードIDは非常にユニークな識別子です。もう1つのオプションは、ネットワークカードのMACアドレスを使用することです。これは非常にユニークです。
ネットワークアダプターのMACアドレス? Windows OSインストールのセキュリティ識別子(SID)? (あなたが扱っているウィンドウであると仮定して)GUIDをPCごとに生成できますか?
正確に何を達成しようとしていますか?