Аватар для fireday
307 / 138 / 6
Регистрация: 17.04.2013
Сообщений: 1,943

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

12.02.2014, 17:01. Показов 4313. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Для хранения данных (название песен) хочу использовать реестр
название ключа - название песни, значение ключа - время добавления песни

Cтолкнулся с проблемой - не знаю как получить список ключей в ветке


Читаю значения так
Visual Basic
1
2
3
4
5
6
7
8
Public Function RegRead(ByVal RegPath As String) As String
On Error GoTo IfErr
  Set Reg = CreateObject("WScript.Shell")
  RegRead = Reg.RegRead(RegPath)
  Set Reg = Nothing
Exit Function
IfErr: RegRead = ""
End Function
Есть ли аналог для получения списка имен ключей?


Использовать файл не хочу
Писать все в 1 ключ не вариант
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.02.2014, 17:01
Ответы с готовыми решениями:

Записать полученный список имён ключей реестра в txt файл
Как построчно записать полученный список имён ключей реестра в txt файл? Делал так: RegistryKey r =...

Как получить доступ к 64-битной ветке реестра?
Как из 32-битного приложения на VB2010 получить доступ к 64-битной ветке реестра (OS Windows 7 x64)? Нужно получить список программ...

Запись полученных имен ключей реестра после 100 строки в текстовый файл
Этот код записывает полученные имена ключей из реестра. Как сделать так, чтобы список имен ключей записывался например после 100 строки в...

18
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
12.02.2014, 17:23
Основные ключи

HKEY_CURRENT_USER или HKCU
HKEY_LOCAL_MACHINE или HKLM
HKEY_CLASSES_ROOT или HKCR
HKEY_USERS или HKEY_USERS
HKEY_CURRENT_CONFIG

Пример :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControl Set\Control\Nls\CodePage\EUDCCodeRange

Добавлено через 5 минут
Наверное не совсем то, скорее всего там нужна функция
с названием KeyNext ... чтото вроде этого
1
 Аватар для fireday
307 / 138 / 6
Регистрация: 17.04.2013
Сообщений: 1,943
12.02.2014, 17:27  [ТС]
FelixMacintosh, нужна функция для получения списка с именами ключей
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
12.02.2014, 17:58
А что если тебе поступить проще

GetAllSettings
0
 Аватар для fireday
307 / 138 / 6
Регистрация: 17.04.2013
Сообщений: 1,943
12.02.2014, 18:04  [ТС]
FelixMacintosh, она же, вроде, работает только в HKEY_CURRENT_USER/SOFTWARE/VB and VBA Program Settings/ ?
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
12.02.2014, 18:07
Цитата Сообщение от fireday Посмотреть сообщение
Для хранения данных (название песен) хочу использовать реестр
Не занимайтесь ерундой, реестр не для этого предназначен.
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
12.02.2014, 18:08
Пример безопасного использования реестра

Visual Basic
1
2
3
4
5
6
7
8
9
Private Sub Command1_Click()
    Dim V, v1
    Call SaveSetting("X", "Y", "Z1", "=1")
    Call SaveSetting("X", "Y", "Z2", "=2")
    V = GetAllSettings("X", "Y")
    For Each v1 In V
        Print v1, GetSetting("X", "Y", v1)
    Next
End Sub
0
 Аватар для fireday
307 / 138 / 6
Регистрация: 17.04.2013
Сообщений: 1,943
12.02.2014, 18:12  [ТС]
FelixMacintosh, конечно спасибо, но писать надо не в HKEY_CURRENT_USER/SOFTWARE/VB and VBA Program Settings/

SoftIce, записи будут удаляться, можно удалить 1 запись в реестре, не трогая других, в файле так просто не выйдет

Над хранением в файле думал
строка - название песни, время добавления
но вот при удалении придется перезаписывать (ведь можно удалить из начала, а записей может быть большее 100)
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
12.02.2014, 18:50
Набросал быстренько

Я просто сам не лезу никогда к реестру системных и прочих разделов, так как
не считаю свой уровень знаний, достаточным для этого

А чтоб удалить DeleteSetting
всё просто и безопасно используется 1 ветка реестра

Для демонстрации правильней было-бы даже так,
без конструкции For Each

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Command1_Click()
    Dim V, v1, s$, j$(), f&
    s = "Пример записи параметров в раздел реестра"
    j = Split(s) 'Создаём список
    For f = 0 To UBound(j)
        Call SaveSetting("X", "Y", f, j(f)) 'Запись в реестр
    Next
    Cls
    V = GetAllSettings("X", "Y")
    For f = 0 To UBound(V)
        Print V(f, 0), V(f, 1)
    Next
    DeleteSetting "X", "Y" 'Полное удаление ветки "X", "Y"
End Sub
1
 Аватар для fireday
307 / 138 / 6
Регистрация: 17.04.2013
Сообщений: 1,943
12.02.2014, 19:22  [ТС]
FelixMacintosh, спасибо, но не стоило объяснять
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
12.02.2014, 19:31
Ну мало, ли, теперь кто спросит, можно указать на эту страницу
А для чтения записи в системные разделы, вот ...
1
 Аватар для PAnT0P
1492 / 587 / 107
Регистрация: 26.03.2012
Сообщений: 1,039
12.02.2014, 19:33
Цитата Сообщение от fireday Посмотреть сообщение
записи будут удаляться, можно удалить 1 запись в реестре, не трогая других, в файле так просто не выйдет
Над хранением в файле думал
строка - название песни, время добавления
но вот при удалении придется перезаписывать (ведь можно удалить из начала, а записей может быть большее 100)
Плохо думал, подумай еще раз в сторону ini или xml файла
Для примера, делал недавно библиотеку для книг fb2, в качестве базы использовал xml файл, в базе более 120 тысяч наименований книг, все работает довольно шустро.
1
 Аватар для fireday
307 / 138 / 6
Регистрация: 17.04.2013
Сообщений: 1,943
12.02.2014, 20:34  [ТС]
PAnT0P, пример кода для работы с xml привести можешь? (или не на вб писал?)
0
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
12.02.2014, 21:08
можно из своей программы
считать//записать//удалить//сделать отдельную запись плейлиста (формат PLS)
ровно так, как это делает WinAmp или KMPlayer, тем более, что
информация там хранится обычным текстом

Добавлено через 5 минут
и отдельным файлом, можно вести записи как в полных путях, так и в отосительных,
а главное если всё правильно сделать будет полная совместимисть с популярными плейерами
1
 Аватар для PAnT0P
1492 / 587 / 107
Регистрация: 26.03.2012
Сообщений: 1,039
12.02.2014, 21:16
Цитата Сообщение от fireday Посмотреть сообщение
PAnT0P, пример кода для работы с xml привести можешь? (или не на вб писал?)
Делал на VB.Net, если интересует завтра покажу

Добавлено через 6 минут
Но в твоем случае мне кажется больше подойдет ini файл
1
 Аватар для Антихакер32
1201 / 473 / 46
Регистрация: 06.01.2014
Сообщений: 1,797
Записей в блоге: 19
12.02.2014, 22:02
а в реестр записать только путь последнего используемого
плейлиста, и номер трека, будет и абсолютная совместимость
и твоя программа писанная исключительно на VB 6.0 будет
помнить какая композиция проигрывалась

Добавлено через 6 минут
да чуть не забыл, не используй в реестре символы разделителя [ \ ]
так как при чтении это может трактоватся как отдельный раздел

Подменяй такие символы любым другим например: Key = Replace(Key, "\", "#")

Добавлено через 17 минут
Цитата Сообщение от fireday Посмотреть сообщение
Над хранением в файле думал
строка - название песни, время добавления
но вот при удалении придется перезаписывать (ведь можно удалить из начала, а записей может быть большее 100)
тоже не совсем понял, ты не знал о рандомном способе записи ?

Добавлено через 14 минут
Вот ссыль на демонстрацию произвольного доступа
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
12.02.2014, 22:31
Лучший ответ Сообщение было отмечено как решение

Решение

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
Option Explicit
 
Private Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, ByVal cbName As Long) As Long
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 RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
 
Private Const HKEY_CURRENT_USER = &H80000001
Private Const ERROR_NO_MORE_ITEMS = 259&
Private Const MAX_PATH = 260
 
Private Sub Form_Load()
    Dim hKey As Long, i As Long, q As Long, buf As String
    
    If RegOpenKey(HKEY_CURRENT_USER, "Software", hKey) Then Exit Sub
    
    buf = Space(MAX_PATH + 1)
    
    Do Until RegEnumKey(hKey, i, buf, MAX_PATH + 1)
        q = InStr(1, buf, vbNullChar)
        If q Then
            Debug.Print Left(buf, q)
        End If
        i = i + 1
        DoEvents
    Loop
    
    RegCloseKey hKey
End Sub
3
 Аватар для PAnT0P
1492 / 587 / 107
Регистрация: 26.03.2012
Сообщений: 1,039
12.02.2014, 22:50
Вот накатал пример для хранения в ini файле
Вложения
Тип файла: zip Playlist.zip (4.1 Кб, 28 просмотров)
2
 Аватар для fireday
307 / 138 / 6
Регистрация: 17.04.2013
Сообщений: 1,943
13.02.2014, 23:04  [ТС]
PAnT0P, спасибо большое, хороший вариант. думаю так и реализую
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.02.2014, 23:04
Помогаю со студенческими работами здесь

Как из 32х битного приложения получить доступ к ветке реестра HKEY_LOCAL_MACHINE\SOFTWARE\ на 64x
Привет, Столкнулся с проблемой, читаю из ветки реестра 'HKEY_LOCAL_MACHINE\SOFTWARE\' параметры, но вот беда, если ос 64х, то чтение...

Доступ к ветке реестра
Есть что-то криминальное в том, если поставить только чтение и выполнение вот на эту ветку: HKLM\Software\Microsoft\Windows NT\Current...

Вопрос по ветке реестра
Нужна ли данная ветка реестра или ее лучше удалить? C:\WINDOWS\System32\hidserv.dll Активен Ключ реестра HKEY_LOCAL_MACHINE, ...

Доступ к ветке реестра
Всем привет, проблемa в общем такая: У меня есть программа, которая обращается к вот такой ветке "HKEY_LOCAL_MACHINE\SYSTEM\Uops...

Нет доступа к ветке реестра
Всем доброго дня! Пытаюсь дать пользователю право и полный доступ на удаление параметра HideBasedOnVelocityId из...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

Новые блоги и статьи
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