Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как прочитать ключ реестра? / 10 сообщений из 10, страница 1 из 1
16.09.2005, 10:02
    #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
16.09.2005, 10:07
    #33272694
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прочитать ключ реестра?
object.RegRead(strName), object.RegDelete strName
...
Рейтинг: 0 / 0
16.09.2005, 10:08
    #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
16.09.2005, 10:14
    #33272716
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прочитать ключ реестра?
AndreyMp Как записать\прочитать параметр в реестр
Автор ответа: Dufa


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


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

______________________________
Never Surrender - Nothing Impossible!
...
Рейтинг: 0 / 0
16.09.2005, 12:30
    #33273291
AndreyMp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прочитать ключ реестра?
Ну как это будет выглядеть в Ворде я не пробовал, но как Вы заметили это АПИ-функции и должны работать.
...
Рейтинг: 0 / 0
19.09.2005, 10:42
    #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
21.09.2005, 12:28
    #33280910
Sung Chen Young
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прочитать ключ реестра?
API - слишком сложно, WScript.Shell - слишком просто (например, прочитать все значения определённого ключа не получится, работать с параметрами, в названиях которых есть слеши - тоже). Но есть золотая середина :-) А именно - WMI, класс StdRegProv. Вот здесь есть инфа .
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
12.08.2007, 13:58
    #34722233
pinpam
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прочитать ключ реестра?
Azart, спасибо! Начинающему - начинать только с этого.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
12.06.2013, 15:27
    #38295143
Настаев
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как прочитать ключ реестра?
Спасибо за пример API
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как прочитать ключ реестра? / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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