Как получить серийный номер жесткого диска windows 7, когда разрешение пользователя является стандартным
i want protect of my application .so i read serial number hard drive and compare. the application has good result in mode administrator user but it has bad result in mode standard user. i wrote my application with c#.but for read serial number hard i used of a dll file that i wrote with delphi. <pre>hDevice := CreateFile( '\\.\PhysicalDrive0:', GENERIC_READ or GENERIC_WRITE , FILE_SHARE_READ or FILE_SHARE_WRITE , nil, OPEN_EXISTING, 0, 0 );
эта строка кода в режиме стандартного пользователя возвращает ошибку.
Что я уже пробовал:
i try use of .net. so i using of WMI class(Win32_DiskDrive) but this method has result bad in mode standard user too. private string getserial() { string SerialNumber = ""; string dataForSerial = string.Empty; ManagementObjectSearcher Finder = new ManagementObjectSearcher("Select * from Win32_OperatingSystem"); string Name = ""; foreach (ManagementObject OS in Finder.Get()) Name = OS["Name"].ToString(); //Name = "Microsoft Windows XP Professional|C:\WINDOWS|\Device\Harddisk0\Partition1" int ind = Name.IndexOf("Harddisk") + 8; int HardIndex = Convert.ToInt16(Name.Substring(ind, 1)); Finder = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive WHERE Index=" + HardIndex); foreach (ManagementObject HardDisks in Finder.Get()) foreach (ManagementObject HardDisk in HardDisks.GetRelated("Win32_PhysicalMedia")) SerialNumber = HardDisk["SerialNumber"].ToString(); // SerialNumber = dataForSerial; return SerialNumber; } please help me. thank you
phil.o
Репост из Команда Run функция CreateFile в Win32 в качестве обычного пользователя[^]
Ответ Дейва Кресковяка может быть не таким, как вы ожидали, но вот факт: доступ к необработанным устройствам, как вы пытаетесь сделать, требует привилегий администратора, по соображениям безопасности Более того, попытка защитить ваше приложение, полагаясь на серийный номер жесткого диска, не является универсальным решением, которое будет работать в любом случае: некоторые установки не устанавливают никакого серийного номера на жестком диске. Не говоря уже о том, что приложение C# может быть реверсивно спроектировано за считанные секунды для любого, кто достаточно мотивирован, чтобы взломать ваше приложение.
Dave Kreskowiak
Я только что попробовал проверить вашу схему. Мой рабочий ноутбук вернул определенный серийный номер. Затем я проверил свой рабочий стол, и он вернул серийный номер, который был немного другим. Ладно, ничего страшного.
У меня есть дюжина виртуальных машин, работающих на рабочем столе, и я проверил каждую из них. Виртуальные машины Windows 7 возвращали два разных серийных номера, хотя один из них был одинаковым для настольной машины. Все виртуальные машины Windows 10 возвращали один и тот же серийный номер. А еще лучше, они вернули точно такой же серийный номер, что и мой ноутбук!
Основывать свою схему на серийном номере жесткого диска не получится.
mzandi
я хочу знать, почему результат WMI является deffrent в стандартном режиме и пользователь администратор в Windows 7