Получить уникальные системные идентификаторы в C # - PullRequest
6 голосов
/ 21 августа 2009

Какие «уникальные» системные идентификаторы могут быть легко получены с помощью C # (для хеширования, а затем уникальной идентификации системы)? Я мог бы просто хэшировать размер жесткого диска и тому подобное, но мне нужно идентифицировать и различать компьютеры, которые все построены из одних и тех же компонентов, поэтому я не могу пойти на это.

Оцените подсказки, идеи, пример кода!

Ответы [ 6 ]

9 голосов
/ 21 августа 2009

Вот хорошее начало с WMI ...

// Win32_CPU will work too
var search = new ManagementObjectSearcher( "SELECT * FROM Win32_baseboard" );
var mobos = search.Get();

foreach (var m in mobos)
{
  var serial = m["SerialNumber"]; // ProcessorID if you use Win32_CPU
}

Вы можете сделать это с помощью большого количества оборудования и найти решение.

8 голосов
/ 21 августа 2009

Вы можете использовать пространство имен System.Management , чтобы получить всю информацию, относящуюся к аппаратному обеспечению, ProcessorId, MAC-адресам, и намного больше информации, которую можно затем объединить.

Посмотрите на эту статью:

http://www.codeproject.com/KB/system/GetHardwareInformation.aspx

3 голосов
/ 21 августа 2009

Предполагая, что вы говорите о Windows, каждая установка Windows имеет уникальный идентификатор продукта (который можно увидеть при просмотре свойств моего компьютера). Я думаю, что это хранится в HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion:ProductId(REG_SZ). Я так понимаю, ты хочешь большего?

2 голосов
/ 21 августа 2009

MAC-адрес сетевой карты:

foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces())
{
    // probably need to do some filtering on ni.NetworkInterfaceType here
    Console.WriteLine(ni.GetPhysicalAddress());
}
2 голосов
/ 21 августа 2009

Вы можете использовать WMI с C #, чтобы получить немного информации об оборудовании.

Идентификаторы жесткого диска и MAC-адрес Ethernet - это два общих уникальных идентификатора, используемых в схемах идентификации системы. MAC-адрес, теоретически, уникален для каждой сетевой карты.

1 голос
/ 21 августа 2009

Вы можете использовать GUID

Что такое GUID

Для тех из вас, кто не знает, GUID (произносится как goo'id - глобально уникальный идентификатор) - это 128-разрядное целое число, которое можно использовать для однозначной идентификации чего-либо. Вы можете хранить пользователей или продукты в своей базе данных, и вы хотите уникальным образом идентифицировать каждую строку в базе данных. Обычный подход заключается в создании автоинкрементного целого числа, другой способ - создать GUID для ваших продуктов.

Как создать GUID в C #

Метод GUID находится в пространстве имен System. Метод GUID System.Guid.NewGuid () инициализирует новый экземпляр класса GUID.

Есть также несколько перегрузок, доступных для тех из вас, кто хочет, чтобы GUID был отформатирован определенным образом.

Следующий пример реального времени выведет сгенерированный GUID, исходный код также приведен ниже.

Response.Write(@"<br>System.Guid.NewGuid().ToString() = " + System.Guid.NewGuid().ToString());
Response.Write(@"<br>System.Guid.NewGuid().ToString(""N"") = " + System.Guid.NewGuid().ToString("N"));
Response.Write(@"<br>System.Guid.NewGuid().ToString(""D"") = " + System.Guid.NewGuid().ToString("D"));
Response.Write(@"<br>System.Guid.NewGuid().ToString(""B"") = " + System.Guid.NewGuid().ToString("B"));
Response.Write(@"<br>System.Guid.NewGuid().ToString(""P"") = " + System.Guid.NewGuid().ToString("P"));
...