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

Сканирование ветки реестра на то, какие содержатся внутри переменные

25.10.2009, 17:44. Показов 1290. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите плз. Мне нужно просканировать ветвь на то, какие содержаться внутри переменные и их значения (по-моему это так называется :-)). Допустим есть ветвь HKLM/Software..../Run. В ней мне нужно узнать все что здесь есть.. Как ? Спасибо..
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.10.2009, 17:44
Ответы с готовыми решениями:

Мониторинг ветки реестра
Есть ветка HKEY_LOCAL_MACHINE\SOFTWARE\Task_Queue\Parameters\Task_Execution_Duration Что нужно написать, чтоб програма после запуска и до...

Чтение ветки с реестра
мне нужно чтобы программа читала ветку с реестра т.е. с файлов все данные и т.д делаю так var Reg: TRegistry; begin Reg:=...

Права на ветки реестра
В моей программе вывода дерева для ветки реестра HKLM\\SYSTEM\\CurrentControlSet\\Enum\\USB при попытке получить подключи веток Properties...

1
2 / 2 / 1
Регистрация: 19.07.2007
Сообщений: 737
25.10.2009, 17:58
Используй процедуру EnumKeys для получения массива
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
Attribute VB_Name = 'mReg'
Option Explicit
Public Const gKeyName = '...'
Public Const gKeySession = 'SOFTWARE...'
 
Public Enum HKEY_TYPE
    HKEY_CURRENT_USER = &H80000001
    HKEY_LOCAL_MACHINE = &H80000002
    HKEY_CLASSES_ROOT = 1
End Enum
 
Private Enum KeyTypeENUM
    ktKey
    ktValue
End Enum
 
Private Declare Function RegEnumValue Lib 'advapi32.dll' Alias 'RegEnumValueA' (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, ByVal lpData As String, lpcbData As Long) As Long
Private Declare Function RegEnumKey Lib 'advapi32.dll' Alias 'RegEnumKeyA' (ByVal hKey As Long, ByVal iSubKey As Long, ByVal szBuffer As String, ByVal cbBuf As Long) As Long
Private Declare Function RegDeleteValue Lib 'advapi32.dll' Alias 'RegDeleteValueA' (ByVal hKey As Long, ByVal lpValueName As String) As Long
Private Declare Function RegDeleteKey Lib 'advapi32.dll' Alias 'RegDeleteKeyA' (ByVal hKey As Long, ByVal lpSubKey As String) As Long
Private Declare Function RegCreateKeyEx Lib 'advapi32.dll' 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, ByVal lpSecurityAttributes As Long, phkResult As Long, lpdwDisposition As Long) As Long
Private Declare Function RegOpenKey Lib 'advapi32.dll' Alias 'RegOpenKeyA' (ByVal hKey As Long, ByVal szSubKey As String, hkeyResult 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 RegQueryInfoKey Lib 'advapi32.dll' Alias 'RegQueryInfoKeyA' (ByVal hKey As Long, ByVal lpClass As String, lpcbClass As Long, ByVal lpReserved As Long, lpcSubKeys As Long, lpcbMaxSubKeyLen As Long, lpcbMaxClassLen As Long, lpcValues As Long, lpcbMaxValueNameLen As Long, lpcbMaxValueLen As Long, lpcbSecurityDescriptor As Long, ByVal lpftLastWriteTime As Long) As Long
Private Declare Function RegQueryValueEx 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
' Note that if you declare the lpData parameter as String, you must pass it By Value.
Private Declare Function RegSetValueEx Lib 'advapi32.dll' Alias 'RegSetValueExA' (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long
' Note that if you declare the lpData parameter as String, you must pass it By Value.
Private Declare Function RegCloseKey Lib 'advapi32.dll' (ByVal hKey As Long) As Long
 
Private Const ERROR_SUCCESS = 0&
 
Private Const ERROR_NONE = ERROR_SUCCESS
Private Const ERROR_BADDB = 1
Private Const ERROR_BADKEY = 2
Private Const ERROR_CANTOPEN = 3
Private Const ERROR_CANTREAD = 4
Private Const ERROR_CANTWRITE = 5
Private Const ERROR_OUTOFMEMORY = 6
Private Const ERROR_INVALID_PARAMETER = 7
Private Const ERROR_ACCESS_DENIED = 8
Private Const ERROR_NO_MORE_ITEMS = 259
 
Private Const REG_SZ = 1&
Private Const KEY_EVENT = &H1     '  Event contains key event record
Private Const KEY_NOTIFY = &H10
Private Const KEY_ALL_ACCESS = &H1F0    y = sResultBuf
    End If
  Else
    rsSubKey = ''
  End If
 
  EnumKey = lRegErr
End Function
 
Public Function DeleteAllValues(ByVal KeyRoot As HKEY_TYPE, ByVal Section As String, ByVal KeyName As String) As Long
Dim lRegErr As Long
Dim hKey As Long
Dim i As Long
Dim arr As Variant
 
    lRegErr = RegOpenKey(KeyRoot, Section & ' ' & KeyName, hKey)
    If lRegErr <> ERROR_NONE Then
        GoTo lb_out
    End If
    arr = EnumKeys(hKey, ktValue)
    
    If UBound(arr) = -1 Then
        GoTo lb_out
    Else
        For i = LBound(arr) To UBound(arr)
            Debug.Print arr(i, 0) & '=' & arr(i, 1)
            lRegErr = RegDeleteValue(hKey, arr(i, 0))
            If lRegErr <> ERROR_NONE Then
                Exit For
            End If
        Next i
    End If
    
lb_out:
    RegCloseKey hKey
    DeleteAllValues = lRegErr
 
End Function
 
Public Function DeleteAllKeys(ByVal KeyRoot As HKEY_TYPE, ByVal Section As String, ByVal KeyName As String) As Long
Dim lRegErr As Long
Dim hKey As Long
Dim i As Long
Dim arr As Variant
 
    lRegErr = RegOpenKey(KeyRoot, Section & ' ' & KeyName, hKey)
    If lRegErr <> ERROR_NONE Then
        GoTo lb_out
    End If
    arr = EnumKeys(hKey, ktKey)
    
    If UBound(arr) = -1 Then
        GoTo lb_out
    Else
        For i = LBound(arr) To UBound(arr)
            Debug.Print arr(i)
            lRegErr = RegDeleteKey(hKey, arr(i))
            If lRegErr <> ERROR_NONE Then
                Exit For
            End If
        Next i
    End If
    
lb_out:
    RegCloseKey hKey
    DeleteAllKeys = lRegErr
 
End Function
 
Public Function EnumKeys(ByVal hKey As Long, ByVal KeyType As KeyTypeENUM) As Variant
' Iterate over all the values in this key
Const nBufMax = 1024
Dim strClass As String * nBufMax
Dim cbClass As Long, cSubKeys As Long, cbMaxSubKeyLen As Long, cbMaxClassLen As Long, lReserved As Long
Dim cValues As Long, cbMaxValueNameLen As Long, cbMaxValueLen As Long, cbSecurityDescriptor As Long
Dim cbData As Long, cbValueName As Long, lType As Long
Dim strKey As String, strData As String * nBufMax, strValueName As String * nBufMax
Dim aValues() As String
Dim i As Long
        
    cbClass = LenB(StrConv(strClass, vbFromUnicode))
    If RegQueryInfoKey(hKey, strClass, cbClass, lReserved, cSubKeys, cbMaxSubKeyLen, cbMaxClassLen, cValues, cbMaxValueNameLen, _
            cbMaxValueLen, cbSecurityDescriptor, 0) = ERROR_SUCCESS Then
        Select Case KeyType
            Case ktValue
                If cValues > 0 Then
                    ReDim aValues(0 To cValues - 1, 0 To 1)
                    For i = 0 To cValues - 1
                        cbValueName = LenB(StrConv(strValueName, vbFromUnicode))
                        cbData = LenB(StrConv(strData, vbFromUnicode))
                        If RegEnumValue(hKey, i, strValueName, cbValueName, 0, lType, strData, cbData) = ERROR_SUCCESS Then
                            aValues(i, 0) = TruncateAtNull(strValueName)
                            aValues(i, 1) = TruncateAtNull(strData)
                        End If
                    Next
                    EnumKeys = aValues
                End If
            Case ktKey
                If cSubKeys > 0 Then
                    ReDim aValues(0 To cValues - 1)
                    cbValueName = LenB(StrConv(strValueName, vbFromUnicode))
                    For i = 0 To cSubKeys - 1
                        If RegEnumKey(hKey, i, strValueName, cbValueName) = ERROR_SUCCESS Then
                            aValues(i) = TruncateAtNull(strValueName)
                        End If
                    Next
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.10.2009, 17:58
Помогаю со студенческими работами здесь

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

Получение имени ветки реестра
подскажите как получить имя вложенной ветки реестра например есть есть ветка реестра HKEY_CURRENT_USER\\SOFTWARE\\Yandex\\{name} - тут...

VBS. Удаление ветки реестра
Доброго времени суток. Вопрос по VBScript. Подскажите как удалить раздел реестра если он содержит ключи или подразделы имена которых...

Поиск раздела (ветки) реестра
Подскажите, подправьте код. Задача - искать в реестре раздел (ветку). Существует или нет. Код //Поиск ветки (раздела) в...

Изменить параметр ветки реестра
вот ветка HKEY_LOCAL_MACHINE\SOFTWARE\Microso ft\Windows NT\CurrentVersion\Winlogon параметр SHELL его значение равно Explorer.exe ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
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 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru