Что такое хороший уникальный идентификатор ПК?

Я смотрел на код в этом учебном руководстве, и я нашел, что это использует My.Computer.Name сохранять настройки, которые не должны перемещаться между компьютерами. Совершенно возможно, однако, для пользователя иметь два тождественно именованных ПК. Если они хотели иметь то же имя пользователя на каждом ПК, например, они могут закончить с двумя ПК по имени ПК имени пользователя.

Каковы некоторые хорошие методы идентификации различных ПК? ПК связывали GUID с ними, или я должен изучить осуществление порядкового номера некоторых аппаратных средств? Я не забочусь, сохраняется ли идентификация посредством переустановки Windows.

(Учебное руководство, которое я связал, находится в VB.Net, но я реализую его в C#),

41
задан dlras2 9 August 2010 в 18:41
поделиться

7 ответов

Некоторые хорошие идентификаторы:

  • MAC-адрес: Его довольно легко получить, и он обычно уникален. Однако его можно легко подделать/изменить, поэтому все зависит от того, насколько уникальным он должен быть.
  • Серийный номер процессора: Он недоступен на многих старых системах, но он есть. Посмотрите эту страницу MSDN. Он не изменится, но он привязан к компьютеру.
  • Серийный номер жесткого диска: скорее всего, он не изменится, но может доставить неудобства, если жесткий диск выйдет из строя. Посмотрите эту страницу MSDN.
43
ответ дан 27 November 2019 в 00:27
поделиться

Если вы на windows HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\ CurrentVersion\ProductId уникален для каждой машины/каждой установки windows. в то время как в некоторых других ответах, таких как MAC-адрес, Proc SN и HD SN будут оставаться неизменными между переустановками windows/ситуациями двойной загрузки.

19
ответ дан 27 November 2019 в 00:27
поделиться

Используйте MAC-адрес сетевой карты. Он должен быть уникальным. Однако его можно изменить. Это зависит от того, насколько злонамеренными будут ваши пользователи и насколько критичным является ваше приложение.

Некоторые примеры кода для этого:

public string GetMACAddress() {
    ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
    ManagementObjectCollection moc = mc.GetInstances();

    string MACAddress = String.Empty;

    foreach (ManagementObject mo in moc) {
        if (MACAddress == String.Empty) { // only return MAC Address from first card
            if ((bool)mo["IPEnabled"] == true) MACAddress = mo["MacAddress"].ToString();
        }
        mo.Dispose();
    }

    return MACAddress;
}
2
ответ дан 27 November 2019 в 00:27
поделиться

Можно использовать MAC любого сетевого интерфейса. Вы также можете объединить несколько источников информации. Например, серийный номер жесткого диска, mac, тип процессора, чтобы вычислить хэш.

1
ответ дан 27 November 2019 в 00:27
поделиться

Я не думаю, что возможно иметь два ПК с одинаковым именем в одном домене. Вы пробовали перехватить имя домена?

0
ответ дан 27 November 2019 в 00:27
поделиться

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

0
ответ дан 27 November 2019 в 00:27
поделиться

Взгляните сюда: Получение метки обслуживания с компьютера Dell с использованием .net?

Вы можете извлечь некоторые уникальные данные из реестра.

0
ответ дан 27 November 2019 в 00:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: