Как однозначно идентифицировать компьютер с помощью C#?

как однозначно идентифицировать компьютер(материнскую плату) с помощью C#(.Net/Mono, локальное приложение)?

издания. мы можем идентифицировать материнскую плату в .Net, используя что-то вроде этого (см. получить уникальные Системные идентификаторы в C#):

using System.Management;
...
ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_MotherboardDevice");
...

но, к сожалению, Mono не поддерживает систему.Управление. Как это сделать под Mono для Linux? - Не знаю: (

5 ответов


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


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

например, активация Windows рассматривает следующие характеристики оборудования:

  • Видеоадаптер
  • SCSI-адаптер
  • адаптер IDE (эффективно материнская плата)
  • сетевой адаптер (NIC) и его MAC-адрес
  • ряд количества RAM (т. е., 0-64mb, 64-128mb, etc.)


попробуйте это:

http://carso-owen.blogspot.com/2007/02/how-to-get-my-motherboard-serial-number.html

лично я бы пошел с серийным номером жесткого диска. Если материнская плата умирает и заменяется, этот ПК больше не действителен. Если жесткий диск заменен, это не имеет большого значения, потому что программное обеспечение было на нем.

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


У вас реально есть MotherboardID, CPUID, Disk Serial и MAC-адрес, из опыта ни один из них не 100%.

наша статистика показывает

  • серийный номер диска отсутствует 0.1 %
  • MAC отсутствует 1.3 %
  • идентификатор материнской платы, отсутствует 30 %
  • CPUID отсутствует 99 %

0.04% испытанных машин не дали никакой информации, мы не смогли даже прочитать имя компьютера. Может быть, это были какие-то виртуальные PC, HyperV или экземпляр VMWare, или, может быть, просто очень заблокирован? В любом случае, ваш дизайн должен быть в состоянии справиться с этими делами.

серийный номер диска является наиболее надежным, но легко изменить, мак можно менять и в зависимости от фильтрации применяется в случае, когда значение может измениться, если драйверы устройств добавил (нормальной работы, как Wireshark и т. д.).

материнская плата и CPUID иногда возвращают недопустимые значения "NONE", " AAAA..", "XXXX..." п.

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