Как однозначно идентифицировать компьютер с помощью C#?
как однозначно идентифицировать компьютер(материнскую плату) с помощью C#(.Net/Mono, локальное приложение)?
издания. мы можем идентифицировать материнскую плату в .Net, используя что-то вроде этого (см. получить уникальные Системные идентификаторы в C#):
using System.Management;
...
ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_MotherboardDevice");
...
но, к сожалению, Mono не поддерживает систему.Управление. Как это сделать под Mono для Linux? - Не знаю: (
5 ответов
напишите функцию, которая принимает несколько уникальных аппаратных параметров в качестве входных и генерирует хэш из них.
например, активация 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..." п.
вы также должны отметить, что эти функции могут быть очень медленными для вызова (они могут занять несколько секунд даже на быстром ПК), поэтому, возможно, стоит как можно раньше запустить их в фоновом потоке, вы в идеале не хотите блокировать их.