Войти

Показать полную графическую версию : [решено] Получение списка неизвестных ключей реестра


morgan1991
06-03-2009, 14:43
Здравствуйте!
В очередной раз прошу помощи.
Допустим есть ключ HKEYLM\test
В нём есть три папки:
HKEYLM\test\1
HKEYLM\test\2
HKEYLM\test\3

Причём с неизвестными именами

Вот как по средствам аутоит определить как называются эти папки?
Их нужно считать.

Creat0R
06-03-2009, 18:27
как по средствам аутоит определить как называются эти папки? »
Какие папки? как скрипт будет знать что ему нужно, в ветке могут быть множество ключей. Если имеется в виду перечитывание всей ветки, то возможно поможет Расширенная библиотека для работы с реестром (http://creator-lab.ucoz.ru/load/3-1-0-49).

morgan1991
06-03-2009, 22:46
Ничего полезного я в ней не нашол, может просто е понял... (плохо с английским)
Вообщем мне нужно следующее:
Есть ветка:
hkeyy\ggg\test
в ней со временем будут появляться ветки с разными именами и будет появляться следующее:
hkeyy\ggg\test\имя_ветки
hkeyy\ggg\test\имя_ветки2
hkeyy\ggg\test\имя_ветки3
в каждой такой ветке будут ключи path типа REG_SZ

Вот как искать все эти ключи не зная имя_ветки, имя_ветки2, имя_ветки3 ???

proxy
06-03-2009, 23:04
Вот как искать все эти ключи не зная имя_ветки, имя_ветки2, имя_ветки3 ???
1. простым перебором по названию "имя_ветки"
т.е. сначала счиать названия всех ключей из "hkeyy\ggg\test\" в массив например:
While 1
$var = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE", $i)
If @error <> 0 then ExitLoop
MsgBox(4096, "SubKey #" & $i & " under HKLM\Software: ", $var)
WEnd
а далее читать данные из все ключей которые в массиве.

2. определять по лигике програамы в какой из "имя_ветки" стоит читать данные...
т.е. если ныжны данные бля "блока2", то читаь из "имя_ветки2", а если из "блока1" то из "имя_ветки"

Creat0R
06-03-2009, 23:10
как искать все эти ключи не зная имя_ветки, имя_ветки2, имя_ветки3 ? »
Вот так:

#include <Registry_UDFs.au3>
#include <Array.au3>
;

;Получаем ветку ключей
$aKeys = _RegReadKeyValueToArray("hkeyy\ggg\test", 0)

_ArrayDisplay($aKeys)

;Из полученных ключей, извлекаем имена в ключах
For $i = 1 To $aKeys[0]
$aNameKeys = _RegReadKeyValueToArray($aKeys[$i], 1)
If $aNameKeys[0] > 0 Then _ArrayDisplay($aNameKeys)
Next

morgan1991
07-03-2009, 00:18
спс




© OSzone.net 2001-2012