Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/40: Рейтинг темы: голосов - 40, средняя оценка - 4.83
5 / 5 / 0
Регистрация: 07.04.2010
Сообщений: 328

Получить аппаратный номер диска

01.05.2015, 09:15. Показов 8993. Ответов 56
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Есть такая проблема, у меня отсутствует в VB6 файл справки VBENLR98.CHM.
В частности я хотел посмотреть в нем описание команды fso.GetDrive и fdrv.SerialNumber.
Просьба поделиться этим файлом.
Спасибо всем откликнувшимся.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.05.2015, 09:15
Ответы с готовыми решениями:

Как средствами VB получить заводской серийный номер диска?
Где-то на форуме я читал про определение серийного номера диска, cd и т.д. Был совет использовать функцию getvolumeinformation, но это...

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

Получить аппаратный номер жесткого диска
Всем привет. Подскажите, пожалйуста, как узнать аппаратные номер жесткого диска ? (visual basic 2005). Спасибо

56
8 / 8 / 2
Регистрация: 09.02.2014
Сообщений: 124
01.05.2015, 10:59
GIP,
http://193.68.19.127/install/V... /cd2/Msdn/
2
5 / 5 / 0
Регистрация: 07.04.2010
Сообщений: 328
01.05.2015, 11:09  [ТС]
скачал, windows файл открывает, в нем пусто
vb6 говорит, что файл справки поврежден.....вот незадача.....

размер скаченного файла 774574
0
8 / 8 / 2
Регистрация: 09.02.2014
Сообщений: 124
01.05.2015, 13:10
GIP,
Сожалею.
Поищи еще в поисковых сайтах.
0
5 / 5 / 0
Регистрация: 07.04.2010
Сообщений: 328
01.05.2015, 13:14  [ТС]
Да, спасибо в любом случае.
Пытался искать, но первые попытки что-либо скачать конкретно разозлили мой антивирусник....
0
8 / 8 / 2
Регистрация: 09.02.2014
Сообщений: 124
01.05.2015, 15:42
GIP,
Вероятно этот файл есть в VB4 или VB5 т.к. там есть встроенная справочная система , VB6 уже отправляет за справкой в MSDN .
0
5 / 5 / 0
Регистрация: 07.04.2010
Сообщений: 328
01.05.2015, 16:11  [ТС]
у меня на компе установлен Vb5 и vb6 одновременно, т.е. я пользуюсь компонентами Vb6, а работаю на vb5. Так вот по компонентам от VB6 Vb5 отправляет на эти файлы справки. У меня все файлы (Adodc98.chm, Cmctl198.chm и т.д.) есть , и они самостоятельно открываются, заморочка только с этим файлом, по идее он должен быть у тех, кто установил себе VB6...в моей версии этого файла нет....и msdn тоже нет....

файл Vbenlr98.chm скачал - он окрывается пустой, потом понял, что тупанул, потому что он без файла Vbenlr98.chi
не работает, скачал его тоже из папки второй - теперь файл открывается и в нем есть меню, но блин, содержимое не отображает......вот не везет.....

Добавлено через 5 минут


пишет Переход на веб-страницу отменен !
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,704
Записей в блоге: 14
01.05.2015, 18:18
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

GIP, выкладываю замечательный help по FSO на русском:
Вложения
Тип файла: zip Vbscript.zip (131.5 Кб, 30 просмотров)
4
5 / 5 / 0
Регистрация: 07.04.2010
Сообщений: 328
01.05.2015, 18:38  [ТС]
Catstail, спасибо.

Не подскажите по свойству SerialNumber. В описании это серийный номер диска.
Я насколько понимал может быть только номер самого винчестера, а не диска,
причем это номер может по какой-то причине меняться, например после переустановки операционной системы...
заранее спасибо....
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,704
Записей в блоге: 14
01.05.2015, 18:45
GIP, может меняться. А можно и самому поменять сменить серийный номер
1
5 / 5 / 0
Регистрация: 07.04.2010
Сообщений: 328
01.05.2015, 18:52  [ТС]
еще раз спасибо, т.е. при переустановки windows она присваивает новый серийный номер диску, или это происходит только если переформатируешь диск ?

И самый главный вопрос можно ли добраться до аппаратного номера диска, который постоянный через fso или win32 ?
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
02.05.2015, 09:43
Catstail,
выкладываю замечательный help по FSO
Видимо одного файла мало...
Ничего не показывает
Миниатюры
Получить аппаратный номер диска   Получить аппаратный номер диска  
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,704
Записей в блоге: 14
02.05.2015, 10:16
Alex77755, это автономный chm-файл... У меня в XP он открывается без проблем.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
02.05.2015, 10:21
Catstail,
У меня тоже ХРюша, но чего-то файлу не хватает. Не показывает ничего
Только разделы
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
02.05.2015, 10:25
по FSO у меня файлик:
Вложения
Тип файла: rar FSO - тяжелая артиллерия VB6.rar (62.4 Кб, 24 просмотров)
2
5 / 5 / 0
Регистрация: 07.04.2010
Сообщений: 328
02.05.2015, 10:57  [ТС]
Alex77755, спасибо за инфу.
Не подскажите как на VB5 или VB6 прочитать аппаратный номер жесткого диска ?
0
8 / 8 / 2
Регистрация: 09.02.2014
Сообщений: 124
02.05.2015, 12:27
GIP,
Вот нашел это, но не проверял. Будете использовать на свой страх и риск.
Открываете физический диск в WinHex, нажимаете один раз на раздел в таблице сверху. Alt+F12 - Boot Sector FAT/NTFS (в зависимости от ФС). Находите там серийник, меняете, Enter, закрыть окно, Ctrl+S. Все, после перезагрузки должен смениться серийник раздела.

А, вообще вставьте Ваш вопрос в поисковый сайт и там увидите много интересного.
0
5 / 5 / 0
Регистрация: 07.04.2010
Сообщений: 328
02.05.2015, 12:33  [ТС]
yurimo100, большое спасибо, но я не про то просил .....

мне нужно просто прочитать номер винчестера кодом из программы и менять его мне не нужно ........
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
02.05.2015, 12:41
GIP,
Не. Не помню. Где-то валялся пример, но не могу найти.
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
02.05.2015, 13:13
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Вот через WinAPI:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
Option Explicit
 
Private Type LARGE_INTEGER
    lowpart             As Long
    highpart            As Long
End Type
Private Type DISK_EXTENT
    DiskNumber          As Long
    Padding             As Long
    StartingOffset      As LARGE_INTEGER
    ExtentLength        As LARGE_INTEGER
End Type
Private Type VOLUME_DISK_EXTENTS
    NumberOfDiskExtents As Long
    Padding             As Long
    Extents(255)        As DISK_EXTENT
End Type
Private Type STORAGE_PROPERTY_QUERY
    PropertyId          As Long
    QueryType           As Long
    Dat(3)              As Byte
End Type
Private Type STORAGE_DESCRIPTOR_HEADER
    Version             As Long
    Size                As Long
End Type
Private Type STORAGE_DEVICE_DESCRIPTOR
    desc                As STORAGE_DESCRIPTOR_HEADER
    DeviceType          As Byte
    DeviceTypeModifier  As Byte
    RemovableMedia      As Byte
    CommandQueueing     As Byte
    VendorIdOffset      As Long
    ProductIdOffset     As Long
    ProductRevOffset    As Long
    SerialNumberOffset  As Long
    BusType             As Long
    RawPropertiesLength As Long
End Type
 
Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsW" (ByVal nBufferLength As Long, _
                                                                                                ByVal lpBuffer As Long) As Long
 
Private Declare Function DeviceIoControl Lib "kernel32" (ByVal hDevice As Long, _
                                                         ByVal dwIoControlCode As Long, _
                                                         lpInBuffer As Any, _
                                                         ByVal nInBufferSize As Long, _
                                                         lpOutBuffer As Any, _
                                                         ByVal nOutBufferSize As Long, _
                                                         lpBytesReturned As Long, _
                                                         lpOverlapped As Any) As Long
                                                         
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileW" (ByVal lpFileName As Long, _
                                                                        ByVal dwDesiredAccess As Long, _
                                                                        ByVal dwShareMode As Long, _
                                                                        lpSecurityAttributes As Any, _
                                                                        ByVal dwCreationDisposition As Long, _
                                                                        ByVal dwFlagsAndAttributes As Long, _
                                                                        ByVal hTemplateFile As Long) As Long
 
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
 
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, _
                                                                     Source As Any, _
                                                                     ByVal Length As Long)
 
 
Private Const FILE_SHARE_READ                       As Long = &H1
Private Const FILE_SHARE_WRITE                      As Long = &H2
Private Const OPEN_EXISTING                         As Long = 3
Private Const IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS  As Long = &H560000
Private Const IOCTL_STORAGE_QUERY_PROPERTY          As Long = &H2D1400
Private Const StorageDeviceProperty                 As Long = 0
Private Const PropertyStandardQuery                 As Long = 0
 
Private Function GetHardDiskSerialNumber(LogDrive As String) As String
    Dim hFile   As Long
    Dim ext     As VOLUME_DISK_EXTENTS
    Dim Size    As Long
    Dim retn    As Long
    ' Открываем логический диск
    hFile = CreateFile(StrPtr("\\.\" & LogDrive), _
                       0, _
                       FILE_SHARE_READ Or FILE_SHARE_WRITE, _
                       ByVal 0, _
                       OPEN_EXISTING, _
                       0, _
                       0)
    
    If hFile <> -1 Then
        ' Запрашиваем физический диск (предполагаем что он 1)
        retn = DeviceIoControl(hFile, _
                               IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS, _
                               ByVal 0, _
                               0, _
                               ext, _
                               Len(ext), _
                               Size, _
                               ByVal 0)
        
        CloseHandle hFile
        ' Открываем физический диск
        hFile = CreateFile(StrPtr("\\.\PhysicalDrive" & CStr(ext.Extents(0).DiskNumber)), _
                           0, _
                           FILE_SHARE_READ Or FILE_SHARE_WRITE, _
                           ByVal 0, _
                           OPEN_EXISTING, _
                           0, _
                           0)
        
        If hFile <> -1 Then
            Dim propQuery   As STORAGE_PROPERTY_QUERY
            Dim buffer()    As Byte
            ' Запрашиваем информацию
            ReDim buffer(32767)
            
            retn = DeviceIoControl(hFile, _
                                   IOCTL_STORAGE_QUERY_PROPERTY, _
                                   propQuery, _
                                   Len(propQuery), _
                                   buffer(0), _
                                   UBound(buffer) + 1, _
                                   Size, _
                                   ByVal 0)
                                   
            If retn Then
                Dim desc    As STORAGE_DEVICE_DESCRIPTOR
                Dim snHex() As Byte
                Dim symb    As Long
                Dim code    As Long
                ' Отсюда можно получить много информации
                CopyMemory desc, buffer(0), Len(desc)
                ' Нас интересует серийный номер
                symb = desc.SerialNumberOffset
                ' Если он представлен конвертируем его из HEX в строку
                If symb > 0 Then
                    Do Until buffer(symb) = 0
                    
                        If buffer(symb) > &H39 Then
                            ' A..F
                            code = (buffer(symb) - &H37) Or code * &H10
                        ElseIf buffer(symb) > &H46 Then
                            ' a..f
                            code = buffer(symb) - &H57 Or code * &H10
                        Else
                            ' 0..9
                            code = buffer(symb) - &H30 Or code * &H10
                        End If
                        
                        symb = symb + 1
                        
                        If ((symb - desc.SerialNumberOffset) And 3) = 0 Then
                            GetHardDiskSerialNumber = GetHardDiskSerialNumber & Chr$(code And &HFF) & Chr$((code \ &H100) And &HFF)
                            code = 0
                        End If
                        
                    Loop
                End If
                
            End If
        
            CloseHandle hFile
            
        End If
        
    End If
    ' Обрезаем пробелы
    GetHardDiskSerialNumber = Trim$(GetHardDiskSerialNumber)
    
End Function
 
Private Sub Form_Load()
    MsgBox Chr$(34) & GetHardDiskSerialNumber("C:") & Chr$(34)
End Sub
Еще можно через WMI, там медленней но меньше кода.
6
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.05.2015, 13:13
Помогаю со студенческими работами здесь

Получить номер материнской платы и номер диска, который находится в дисководе в данный момент
Делаю базу данных на Visual Studio 2010 на языке Visual Basic. Необходимо собрать информацию о компьютере (желательно - номер материнской...

Как получить серийный номер DVD диска
Здравствуйте нужно чтобы по кнопке узнавался серийный номер CD/DVD диска и выдавал в label есть примерный код, но не знаю ка его...

СРОЧНО! Как получить номер диска CD-ROM?
Привет всем! На FoxPro 6.0 мне нужно написать процедуру, которая проверяет, установлен ли диск с определенным номером тома в дисковод...

Как правильно использовать WMI (получить сериный номер жесткого диска)
Здравствуйте! Пишу программу в VB 2010, Windows 7, 64 bit. Для нахождения серийника винта пробовал код: Public Function GetHDDIDWMI()...

Какой апи функцией можно получить номер жесткого диска (не тома)
То есть хотелось бы вытащить из жесткого диска его биос-номер но не номер тома


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru