Что нового

[Реестр]Скрипт для считывания данных из реестра в массив

koros

Новичок
Сообщения
32
Репутация
1
Нужен скрипт, который считывал бы все ключи со значениями из определенной ветки реестра в двухмерный массив. То есть, например, есть ветка реестра с параметрами
HKEY_LOCAL_MACHINE\SOFTWARE\test
key1 REG_SZ 1
key2 REG_SZ 2
key3 REG_DWORD 3

В результате получаем следующий массив Array:

Array[1][1] = key1 Array[1][2] = REG_SZ Array[1][3] = 1
Array[2][1] = key2 Array[2][2] = REG_SZ Array[2][3] = 2
Array[3][1] = key3 Array[3][2] = REG_DWORD Array[3][2] = 3

Возможен ли такой скрипт?
Заранее спасибо
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Код:
Global $i, $Key = "HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt"
Global $Type[] = ["REG_NONE", "REG_SZ", "REG_EXPAND_SZ", "REG_BINARY", "REG_DWORD", "REG_DWORD_BIG_ENDIAN", "REG_LINK", "REG_MULTI_SZ", "REG_RESOURCE_LIST", "REG_FULL_RESOURCE_DESCRIPTOR", "REG_RESOURCE_REQUIREMENTS_LIST", "REG_QWORD"]

Do
  $i += 1
  RegEnumVal($Key, $i)
Until @error

Global $Data[$i][4] = [[$i - 1]]

For $i = 1 To $Data[0][0]
  $Name = RegEnumVal($Key, $i)
  If @error Then ExitLoop
  $Val = RegRead($Key, $Name)
  $Data[$i][1] = $Name
  $Data[$i][2] = $Type[@extended]
  $Data[$i][3] = $Val
Next

#include <Array.au3>
_ArrayDisplay($Data)
 
Автор
K

koros

Новичок
Сообщения
32
Репутация
1
InnI
Большое спасибо.
А нельзя ли расширить скрипт так, чтобы в массив заносились также параметры из подразделов заданного раздела (пути к подразделам пусть записываются в Data[$i][4]).
То есть, если в приведенном вами скрипте задать раздел "HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3", то в массив попадали бы и параметры из "HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3" и параметры из "HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\AutoIt"
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
https://www.autoitscript.com/forum/topic/144234-_regenumkeyvalex-_regenumkeyex-_regenumvalex/
 
Верх