Подтвердить что ты не робот

WIN32_Processor:: Is ProcessorId Unique для всех компьютеров

Я хочу использовать что-то уникальное для системы лицензирования. я решил использовать ProcessorID из класса Win32_Processor Management.

Я попытался использовать две разные системы с одинаковым типом процессора.

Он показывает мне тот же идентификатор процессора для обеих систем. Я использую этот код

public static String GetCPUId()
{
    String processorID = "";

    ManagementObjectSearcher searcher = new ManagementObjectSearcher(
        "Select * FROM WIN32_Processor");

    ManagementObjectCollection mObject = searcher.Get();

    foreach (ManagementObject obj in mObject)
    {
        processorID = obj["ProcessorId"].ToString();
    }

    return processorID;
}
4b9b3361

Ответ 1

Нет, не может быть гарантировано, что он будет уникальным, поскольку процессор может даже не поддерживать инструкцию CPUID, и в этом случае вызов не может быть гарантирован успешным.

Кроме того, вы пренебрегаете тем, что машина может иметь в себе несколько процессоров, поэтому получение идентификатора одного процессора не помогает.


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

Хэш (а не только любой, но тот, который имеет очень мало коллизий) различных значений аппаратного обеспечения, может быть достаточным. Вероятно, вы захотите использовать вещи, которые достаточно встроены в систему, такие как процессор, информация о материнской плате, но не вещи, которые легко отсоединяются/меняются, например, USB-диски/концентраторы и т.д.

Ответ 2

Большинство систем лицензирования полагаются на несколько аппаратных компонентов для создания отпечатка пальца. Единственный компонент не используется как единственный уникальный ключ. Поэтому вы можете принять во внимание следующее:

  • MAC-адреса всех сетевых адаптеров (может оказаться сложным, если у них есть док-станция или включить/отключить их беспроводную связь на ноутбуке).
  • CPUID
  • Номера компонентов компонента материнской платы (например, контроллеры IDE или SCSI)
  • Серийный номер системного диска (НЕ Идентификатор тома, который легко изменить)
  • и др.

При объединении в целом вы получите уникальное представление о машине. Опасность, конечно, происходит, когда пользователь меняет что-то на своей машине. Они теряют лицензию? Должны ли они связаться с вами?

Также обратите внимание, что для классов WMI часто требуются права администратора для чтения той информации, которую вы ищете, что было бы настоящей проблемой для пользователей Vista и Windows 7.

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

Ответ 3

Идентификатор процессора или CPUID предназначены для идентификации модели и набора функций процессора (ARM, x86/x64).

Pentium III поддерживал серийный номер процессора (PSN). В дополнение к поддержке только процессоров Pentium III (и Transmeta Efficeon и Crusoe) функция должна была быть включена в BIOS и проблемы конфиденциальности.

Итак, нет, ProcessorID не уникален для всех компьютеров. Кроме того, он вряд ли будет уникальным для разных компьютеров в вашей компании (поскольку многие организации покупают несколько компьютеров той же модели).