Страница: 1 |
Вопрос: Номер жесткого диска | Добавлено: 06.03.08 02:05 |
Автор вопроса: ![]() |
Глубокоуважаемые гуру,
Моя программа (VB6) защищена привязкой к заводскому номеру винчестера и прекрасно работает под всеми ОС от Win98 до XP. Но под Вистой возникла проблема: программа защиты просто не видит физического жесткого диска. Это что, Виста не пускает прочесть номер винчестера или API-функции устарели? Проверка производилась так: Private Sub NoMycompSP() Dim VersParams As GETVERSIONOUTPARAMS, _ scip As SENDCMDINPARAMS, _ IdOutCmd As SENDCMDOUTPARAMS Dim cbRead As Long, bIDCmd As Byte, i As Long, l As Long, hDrive As Long Do Call RtlZeroMemory(VarPtr(IdOutCmd), Len(IdOutCmd)) hDrive = CreateFile("\\.\PhysicalDrive" & CStr(i), GENERIC_READ Or GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, 0&, OPEN_EXISTING, 0&, 0&) 'Выходим, если диска с очередным порядковым номером не существует (hDrive = -1) 'Это ключевой момент. Во всех ОС -1 получается, когда цикл перебрал все диски и больше нет, а в Висте сразу выдается -1 If hDrive = INVALID_HANDLE_VALUE Then Exit Do ЗДЕСЬ ОПРЕДЕЛЯЕМ И ЗАПОМИНАЕМ СЕРИЙНЫЕ НОМЕРА ДИСКОВ Loop ЗДЕСЬ ПРОВЕРЯЕМ, ЕСТЬ ЛИ СРЕДИ СЕРИЙНЫХ НОМЕРОВ НУЖНЫЙ НОМЕР End Sub |
Ответы | Всего ответов: 1 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #1 | Добавлено: 06.03.08 03:13 |
.NET
http://www.google.ru/search?complete=1&hl=ru&newwindow=1&q=.NET+HDD+Serial+Number&lr=&aq=f WMI Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2"
![]() Set physicalDrives = objWMIService.ExecQuery("Select * from Win32_PhysicalMedia" ![]() For Each obj in physicalDrives Wscript.Echo obj.Tag & " Serial Number: " & obj.SerialNumber Next API http://www.planetsourcecode.com/vb/scripts/ShowZip.asp?lngWId=1&lngCodeId=28069&strZipAccessCode=tp%2FS280696101 (лично тестил на висте) |
Страница: 1 |
|