Получить уникальные системные идентификаторы на C#

StackOverflow https://stackoverflow.com/questions/1308956

  •  19-09-2019
  •  | 
  •  

Вопрос

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

Цените подсказки, идеи, примеры кода!

Это было полезно?

Решение

Вот хорошее начало с 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
}

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

Другие советы

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

Взгляните на эту статью:

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

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

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

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

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

foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces())
{
    // probably need to do some filtering on ni.NetworkInterfaceType here
    Console.WriteLine(ni.GetPhysicalAddress());
}

Вы могли бы рассмотреть возможность использования Руководство по

Что такое 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"));
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top