powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как прочитать ключ реестра?
10 сообщений из 10, страница 1 из 1
Как прочитать ключ реестра?
    #33272675
Фотография Jetus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник

Привет!
Пишу прогу на VBA в Word'e.
Нужно прочитать строковый ключ реестра. Как это сделать?

З.Ы. Записывать в реестр получается:
Код: plaintext
1.
2.
3.
4.
5.
Sub SetWordSecurityLevel(Level As Integer)
  Dim OShell
  Set OShell = CreateObject("WScript.Shell")
  OShell.RegWrite "HKEY_CURRENT_USER\Software\My\Level", MyString, "REG_SZ"
  Set OShell = Nothing
End Sub


______________________________
Never Surrender - Nothing Impossible!
...
Рейтинг: 0 / 0
Как прочитать ключ реестра?
    #33272694
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
object.RegRead(strName), object.RegDelete strName
...
Рейтинг: 0 / 0
Как прочитать ключ реестра?
    #33272700
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как записать\прочитать параметр в реестр

Автор ответа: Dufa

Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegOpenKeyEx Lib "advapi32" 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 RegSetValueEx Lib "advapi32" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal szData As String, ByVal cbData As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal szData As String, ByRef lpcbData As Long) As Long
Private Declare Function RegCreateKeyEx Lib "advapi32" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, ByRef lpSecurityAttributes As Long, phkResult As Long, lpdwDisposition As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long)
' Registry keys
Private Enum hKey
HKEY_CLASSES_ROOT = &H80000000
HKEY_CURRENT_USER = &H80000001
HKEY_LOCAL_MACHINE = &H80000002
HKEY_USERS = &H80000003
HKEY_PERFORMANCE_DATA = &H80000004
HKEY_CURRENT_CONFIG = &H80000005
HKEY_DYN_DATA = &H80000006
End Enum
' Registry access constants
Private Enum Reg
KEY_QUERY_VALUE = &H1
KEY_SET_VALUE = &H2
KEY_CREATE_SUB_KEY = &H4
KEY_ENUMERATE_SUB_KEYS = &H8
KEY_NOTIFY = &H10
KEY_CREATE_LINK = &H20
KEY_READ = KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY
KEY_WRITE = KEY_SET_VALUE Or KEY_CREATE_SUB_KEY
KEY_ALL_ACCESS = KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_SUB_KEY Or KEY_CREATE_LINK Or KEY_SET_VALUE
REG_OPTION_NON_VOLATILE = 0&
REG_OPTION_VOLATILE = &H1
End Enum
'ФУНКЦИЯ ДЛЯ ЧТЕНИЯ СТРОКОВОГО ПАРАМЕТРА
Private Function RegGetString(Root As hKey, SubKey As String, Key As String) As String
Dim Buffer As String, hKey As Long, nType As Long, nSize As Long
RegGetString = 0
If Not RegOpenKeyEx(Root, SubKey, 0, KEY_READ, hKey) Then
nSize = 0
Call RegQueryValueEx(hKey, Key, 0, nType, Buffer, nSize)
If hKey And nSize > 0 And nType = 1 Then
Buffer = Space(nSize + 1)
RegQueryValueEx hKey, Key, 0, nType, Buffer, nSize
RegGetString = Left(Buffer, nSize - 1)
Call RegCloseKey(hKey)
End If
End If
End Function
'ФУНКЦИЯ ДЛЯ ЗАПИСИ СТРОКОВОГО ПАРАМЕТРА
Private Sub RegSetString(Root As Long, SubKey As String, Key As String, Value As String)
Dim hKey As Long, nDisp As Long
If Not RegCreateKeyEx(Root, SubKey, 0, vbNull, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, 0, hKey, nDisp) Then
Call RegSetValueEx(hKey, Key, 0, 1, Value, Len(Value) + 1)
Call RegCloseKey(hKey)
End If
End Sub
'ФУНКЦИЯ ДЛЯ ЧТЕНИЯ ПАРАМЕТРА ТИПА DWORD
Public Function RegGetDWORD(Root As Long, SubKey As String, strValueName As String) As Long
Dim lResult As Long, lValueType As Long, lBuf As Long, lDataBufSize As Long, keyhand As Long
Call RegOpenKey(Root, SubKey, keyhand)
lDataBufSize = 4
lResult = RegQueryValueEx(keyhand, strValueName, 0&, lValueType, lBuf, lDataBufSize)
If lResult = 0 And lValueType = 4 Then RegGetDWORD = lBuf
Call RegCloseKey(keyhand)
End Function
'ФУНКЦИЯ ДЛЯ ЗАПИСИ ПАРАМЕТРА ТИПА DWORD
Public Sub RegSetDWORD(Root As Long, SubKey As String, strValueName As String, ByVal Value As Long)
Dim lResult As Long, keyhand As Long
Call RegCreateKey(Root, SubKey, keyhand)
lResult = RegSetValueEx(keyhand, strValueName, 0&, 4, Value, 4)
Call RegCloseKey(keyhand)
End Sub
...
Рейтинг: 0 / 0
Как прочитать ключ реестра?
    #33272716
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreyMp Как записать\прочитать параметр в реестр
Автор ответа: Dufa


И это будет работать в Word-е?
...
Рейтинг: 0 / 0
Как прочитать ключ реестра?
    #33272733
Фотография Jetus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник


2 Melkiades: Спасибо!
2 AndreyMp: Не знаю, будет ли это работать, но вариант Melkiades'a проще. Но всё равно спасибо!

______________________________
Never Surrender - Nothing Impossible!
...
Рейтинг: 0 / 0
Как прочитать ключ реестра?
    #33273291
AndreyMp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну как это будет выглядеть в Ворде я не пробовал, но как Вы заметили это АПИ-функции и должны работать.
...
Рейтинг: 0 / 0
Как прочитать ключ реестра?
    #33276058
Azart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так не проще?
Код: plaintext
1.
Set WshShell = CreateObject("WScript.Shell")
        PathDep = WshShell.RegRead("HKCU\Software\TTT\Client\TeleProjectPath")    ' Read from value "Val". 
HKCU\Software\TTT\Client\ - это путь к ключю.
TeleProjectPath - это ключ, значение которого читается.
...
Рейтинг: 0 / 0
Как прочитать ключ реестра?
    #33280910
Sung Chen Young
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
API - слишком сложно, WScript.Shell - слишком просто (например, прочитать все значения определённого ключа не получится, работать с параметрами, в названиях которых есть слеши - тоже). Но есть золотая середина :-) А именно - WMI, класс StdRegProv. Вот здесь есть инфа .
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как прочитать ключ реестра?
    #34722233
pinpam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Azart, спасибо! Начинающему - начинать только с этого.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как прочитать ключ реестра?
    #38295143
Настаев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за пример API
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как прочитать ключ реестра?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]