Programming: Visual Basic
Как в Visual Basic 6.0 работать с реестром на удалённом компьютере
В этой статье объясняется, как в приложении
Visual Basic получить доступ к реестру на удалённой машине с использованием API
функций. Данная технология работает в операционных системах Windows XP, Windows
2000, или Windows NT 4.0.
Замечание: Для того, чтобы получить доступ к реестру в этих ОС, необходимо
запустить приложение с правами на чтение реестра.
Создание демонстрационного приложения
Запустите Visual
Basic 6.0, и создайте стандартный проект EXE.
Кликните правой кнопкой
мыши по форме, а затем по View Code в меню Shortcut. Добавьте следующее
выражение в начало кода:
Option Explicit
Объявите константы,
чтобы использовать их для доступа к реестру:
Private Const HKEY_CLASSES_ROOT = &H80000000
Private Const HKEY_CURRENT_USER = &H80000001
Private Const HKEY_LOCAL_MACHINE = &H80000002
Private Const HKEY_USERS = &H80000003
Private Const KEY_QUERY_VALUE = &H1
Private Const KEY_SET_VALUE = &H2
Private Const KEY_ALL_ACCESS = &H3F
Private Const REG_SZ As Long = 1
Private Const ERROR_SUCCESS = 0&
Так же нам потребуется
объявить следующие функции работы с реестром:
Private Declare Function RegConnectRegistry Lib "advapi32.dll" _
Alias "RegConnectRegistryA" _
(ByVal lpMachineName As String, _
ByVal hKey As Long, _
phkResult As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" _
(ByVal hKey As Long) As Long
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" _
Alias "RegOpenKeyExA" _
(ByVal hKey As Long, _
ByVal lpSubKey As String, _
ByVal ulOptions As Long, _
ByVal samDesired As Long, _
phkResult As Long) As Long
Private Declare Function RegQueryValueExString Lib "advapi32.dll" _
Alias "RegQueryValueExA" _
(ByVal hKey As Long, _
ByVal lpValueName As String, _
ByVal lpReserved As Long, _
lpType As Long, _
ByVal lpData As String, _
lpcbData As Long) As Long
Ещё нам потребуется
глобальная переменная:
Private hRemoteReg As Long
Добавьте следующий код
в обработчик события Form_Load. Этот код вызывает функцию RegConnectRegistry
для присоединения к удалённому реестру. Замените параметр \\RemoteMachineName
на имя компьютера, к реестру которого хотите получить доступ:
Private Sub Form_Load()
Dim lRet As Long
'Connect to the remote registry
lRet = RegConnectRegistry("\\RemoteMachineName", _
HKEY_LOCAL_MACHINE, _
hRemoteReg)
If (lRet = ERROR_SUCCESS) Then
MsgBox "Successfully connected to remote registry"
Else
MsgBox "Error:" & Err.LastDllError
Unload Me
Exit Sub
End If
End Sub
Следующий код нужно
добавить в обработчик события Form_Unload:
Private Sub Form_Unload(Cancel As Integer)
Dim lRet As Long
If hRemoteReg <> 0 Then
lRet = RegCloseKey(hRemoteReg)
End If
End Sub
В дизайнере формы
(Form Designer) добавьте на форму элемент управления Command. Поумолчанию
ему будет присвоено имя Command1.
Чтобы создать обработчик
события для кнопки сделайте двойной клик по Command1. И добавьте следующий
код в функцию обработчика:
Private Sub Command1_Click()
Dim lRetVal As Long
Dim hKey As Long
Dim sValue As String
lRetVal = RegOpenKeyEx(hRemoteReg, _
"HARDWARE\DESCRIPTION\System", 0, KEY_QUERY_VALUE, hKey)
If lRetVal <> ERROR_SUCCESS Then
MsgBox "Cannot open key"
Else
sValue = String(255, " ")
lRetVal = RegQueryValueExString(hKey, _
"SystemBIOSVersion", 0&, REG_SZ, sValue, 255)
If lRetVal <> ERROR_SUCCESS Then
MsgBox "Cannot query value"
Else
MsgBox sValue
End If
lRetVal = RegCloseKey(hKey)
If lRetVal <> ERROR_SUCCESS Then
MsgBox "Cannot close key"
End If
End If
End Sub
Проверка
Для компиляции и запуска
проекта нажмите F5.
Появившееся диалоговое
окошечко свидетельствует о том, что подключение к удалённому реестру прошло успешно.
Нажмите OK.
Появится главная форма приложения.
Кликните по Command1.
Будет показано значение, которое хранится в удалённом реестре по следующему адресу:
HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\SystemBIOSVersion
Для проверки правильности
этого значения, запустите на удалённой машине regedit.exe. В редакторе реестра
(Registry Editor), кликните Find в меню Edit. Наберите SystemBIOSVersion
, а затем кликните Find Next. После короткой паузы редактор реестра покажет
значение в этом ключе; сравните это значение с тем, которое появилось в Вашем приложении.
При перепечатке любого материала
с сайта, видимая ссылка на источник www.warayg.narod.ru
и все имена, ссылки авторов обязательны.
© 2005
|