Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
 Аватар для fireday
307 / 138 / 6
Регистрация: 17.04.2013
Сообщений: 1,943

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

12.02.2014, 17:01. Показов 4281. Ответов 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-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru