Страница: 1 |
Страница: 1 |
Вопрос: Номер жесткого диска
Добавлено: 06.03.08 02:05
Автор вопроса: Иван | Web-сайт:
Глубокоуважаемые гуру,
Моя программа (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
Автор ответа:
HACKER
Разработчик 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 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
(лично тестил на висте)