Я ищу способ получить уникальный идентификатор компьютера.
Согласно этой записи я не могу использовать ID процессора для этой цели. Могу ли я взять ID материнской платы? Как лучше всего идентифицировать компьютер?
Как вы уже сказали, CPU Id не будет уникальным, однако вы можете использовать его с другим аппаратным идентификатором, чтобы создать свой собственный уникальный ключ.
Справочная сборка System.Management
Итак, используйте этот код для получения идентификатора CPU:
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:
string drive = "C";
ManagementObject dsk = new ManagementObject(
@"win32_logicaldisk.deviceid=""" + drive + @":""");
dsk.Get();
string volumeSerial = dsk["VolumeSerialNumber"].ToString();
Затем вы можете просто объединить эти два серийника, чтобы получить уникальный идентификатор для этой машины:
string uniqueId = cpuInfo + volumeSerial;
Очевидно, что чем больше аппаратных компонентов вы получите идентификаторы, тем выше будет уникальность. Однако вероятность того, что одна и та же машина будет иметь идентичные серийные номера процессора и жесткого диска, уже ничтожно мала.
ID материнской платы - довольно уникальный идентификатор. Другой вариант - использовать MAC-адрес сетевых карт, которые в значительной степени уникальны.
MAC-адрес сетевого адаптера? Идентификатор безопасности (SID) установленной ОС Windows? (при условии, что вы имеете дело с окнами) Не могли бы вы просто сгенерировать GUID для каждого ПК?
Чего именно вы пытаетесь достичь?