Войти

Показать полную графическую версию : [решено] Как и где из реестра считать путь к папке ...\System32\


Drongo
28-07-2010, 21:31
Приветы. :) Вопросов два.

1. Как экспортировать две\три или любое произвольное количество веток реестра в один лог-файл Registry.log. Так я могу сохранить одну ветку
Reg EXPORT "HKHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion" "Registry.log" >nulА как в этом же Registry.cmd дописать ещё такую же команду резервирования, но для другой ветки, чтобы в итоге обе разные ветки попали в один лог. К примеру я хочу добавить ещё эту ветку
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

2. Как и где из реестра можно со 100% гарантией считать имя папки ...\System32\. Я слышал, что в ооочень редких случаях вместо system32 может быть что-либо другое.
Сразу оговорюсь, стандартные ветки, где находятся ключ userinit.exe и т.п, различные службы, чтобы по файлу svchost.exe узнать имя папки - отпадает, вирус может сохранить свой файл с таким же именем в другую папку.

%WinDir% - нам вернёт папку к каталогу Windows. Вариант с конкатенацией, не выход, потому что как уже упоминал, может быть что-то эксзотичное вместо System32%WinDir% + 'System32\'

Спасибо.

deepred
28-07-2010, 22:36
Drongo,

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows
Параметр : SystemDirectory
Значение : %SystemRoot%\system32
Тип : REG_EXPAND_SZ

echo off

set Rkey1="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion"
set Rkey2="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows"

for /f "tokens=2 delims==" %%a in ('set Rkey') Do ^
Reg Query "%%a" >> reg.log"
pause

Drongo
28-07-2010, 23:48
1. Вопрос решён. Спасибо. :up:

Можно ли расшифровку этого скрипта? Хочется понимать его работу. :)echo off
set Rkey1="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion"
set Rkey2="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows"
for /f "tokens=2 delims==" %%a in ('set Rkey') Do ^
Reg Query "%%a" >> reg.log"
pause »Он в принципе работает, только только имена веток, без их параметров
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Management
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Applets
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Control Panel
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Controls Folder
...
...
...
И т.д.

deepred
29-07-2010, 00:28
Drongo,

Он в принципе работает, только только имена веток, без их параметров »

да-да, моя ошибка... В коде при использовании команды REG QUERY следует
применить ключ /s (для вывода всех вложенных подразделов и их параметров)

Echo off & Chcp 1251
Echo off - отключение вывода команд на экран консоли
Chcp 1251 - переключение на кодовую страницу ANSI - "кириллица"



set - установка в качестве переменных разделов реестра
set Rkey1="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion"
set Rkey2="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows"



выполнение команды Reg Query для каждого аргумента входящего в набор
for /f "tokens=2 delims==" %%a in ('set Rkey') Do ^
'set Rkey' возвращает все установленные переменные содержащие в имени "Rkey", но
возвращает она их в виде "Rkey2="HKEY_LOC..." и поэтому разделителем (delims) определяем
символ "=" и извлекаемой подстрокой (tokens) подстроку номер 2. Эта подстрока и будет
определена переменной %%a, которая и является аргументом (именем раздела) для REG QUERY.




Reg Query "%%a" /s >> reg.log
pause
>> reg.log - запись вывода команды REG QUERY в файл, причем каждый новый вывод дописывается
в конец файла.

Drongo
29-07-2010, 14:17
deepred, Спасибо, вопрос решён. Если что будет неясно, я ещё спрошу. :)




© OSzone.net 2001-2012