Сравнение снимков реестра через Reg Compare

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,280
Реакции
5,750
Баллы
718
Сырой вариант, сделанный на основе этой темы: http://safezone.cc/threads/kak-sravnit-mezhdu-soboj-snimki-reestra.23579/

Может, у кого будет желание доработать (выдает очень много фолсов).

Принцип работы:
Батник RCompare_1_shoot.cmd создает снимки:
- HKCU (под привилегией Администратора)
- HKLM\System (под привилегией System)
- HKLM\Software (под привилегией System)

Батник RCompare_2_shoot.cmd по схожему принципу запускает команду reg compare.
(типа RegShot-a - 1 снимок - исходный, 2 - после модификаций).

Не забудьте положить рядом PsExec.exe

CMD/BATCH:
set @x=0; /*
@echo off
cd /d "%~dp0"
net session >NUL 2>NUL || (
  echo Admin privilegies required !
  if "%~1"=="" cscript.exe //nologo //e:jscript "%~fs0"
  exit /b
)
:: ----------------------------

md temp 2>NUL
cd temp

::
::  Current user privilegy (Admin)
::

if "%~1" neq "System" (
  echo.
  echo Backup HKCU

  rem Сохранение улья
  reg save HKCU HKCU.hiv /y

  rem Монтирование улья из файла
  reg load HKLM\test HKCU.hiv

  psexec -s -i "%comspec%" /c "%~fs0" System
  exit /B
)

::
::  System privilegy
::

:: Аналогично для HKLM
echo.
echo Backup HKLM\System

reg save HKLM\System HKLM_SYS.hiv /y
reg load HKLM\test2 HKLM_SYS.hiv

echo.
echo Backup HKLM\Software

reg save HKLM\Software HKLM_SOFT.hiv /y
reg load HKLM\test3 HKLM_SOFT.hiv

goto :eof

*/new ActiveXObject('Shell.Application').ShellExecute (WScript.ScriptFullName,'Admin','','runas',1);

CMD/BATCH:
@set @x=0; /*
@echo off
cd /d "%~dp0Temp"
net session >NUL 2>NUL || (
  echo Admin privilegies required !
  if "%~1"=="" cscript.exe //nologo //e:jscript "%~fs0"
  exit /b
)

::
::  Current user privilegy (Admin)
::
if "%~1" neq "System" (
  echo Comparing HKCU
  reg compare HKCU HKLM\Test /s /od > "..\Compare1.txt"

  psexec -s -i "%comspec%" /c "%~fs0" System
  exit /B
)

::
::  System privilegy
::

:: /s - проверка рекурсивно
:: /od - вывести только различия
echo.
echo Comparing HKLM\System
reg compare HKLM\System HKLM\Test2 /s /od > "..\Compare2.txt"

echo.
echo Comparing HKLM\Software
reg compare HKLM\Software HKLM\Test3 /s /od >> "..\Compare2.txt"

echo.
echo Complete.

:: Recode 866 (psexec) -> 1251
chcp 866
for %%? in ("") do chcp 1251 & cmd /d /a /c set /p=яю<NUL > .tmp
chcp 866
cmd /d /u /c type ..\Compare2.txt >> .tmp
chcp 1251
cmd /d /a /c type .tmp > ..\Compare2.txt
del .tmp

copy /b /y ..\Compare1.txt + ..\Compare2.txt ..\Compare.txt

start "" notepad "..\Compare.txt"

:: очистка
del ..\Compare1.txt
del ..\Compare2.txt

reg unload HKLM\test
reg unload HKLM\test2
reg unload HKLM\test3
del HKCU.hiv
del HKLM_SYS.hiv
del HKLM_SOFT.hiv
del /f /a HKCU.hiv{*}.TM.blf
del /f /a HKCU.hiv{*}*.regtrans-ms
del /f /a HKCU.hiv.LOG*
del /f /a HKLM_SYS.hiv{*}.TM.blf
del /f /a HKLM_SYS.hiv{*}*.regtrans-ms
del /f /a HKLM_SYS.hiv.LOG*
del /f /a HKLM_SOFT.hiv{*}.TM.blf
del /f /a HKLM_SOFT.hiv{*}*.regtrans-ms
del /f /a HKLM_SOFT.hiv.LOG*

goto :eof

*/new ActiveXObject('Shell.Application').ShellExecute (WScript.ScriptFullName,'Admin','','runas',1);
 

Вложения

Кирилл

Команда форума
Администратор
Сообщения
14,049
Реакции
6,114
Баллы
993
Да,дорабатывать нужно.
Идея хороша.
 
Сверху Снизу