Тема: CMD Перегляд змісту реєстру командою reg query

Добридень шановні друзі.
Я розроблюю одну утиліту у cmd. Стикнувся з проблемою.
Мені треба перевірити значення реєстру по замовчуванню - hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping\Autorun.inf

Ось код:

Прихований текст

setlocal
set "regpath=hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping\Autorun.inf"
for /f "tokens=3" %%i in ('reg query "%regpath%" /ve' ) do set /a "value=%%i"
if '%value%'=="@SYS:DoesNotExist" (set reestr=1)
if `%reestr%`==`1` ( echo Комп'ютер вiд autorun.inf - ЗАХИЩЕН. ) else ( echo - Комп'ютер вiд autorun.inf - НЕ ЗАХИЩЕН. )
pause

Якщо значення ключа = "@SYS:DoesNotExist" - то reestr = 1
значення = "@SYS:DoesNotExist"
Шось не працює. На скріні я вказав місце де cmd "не підхоплює" %value%

Хлопці та дівчата, якщо знаєте, підскажіть де я у коді помиляюсь, або напишіть правильний варіант виконання коду.

К.т. Я зна що цей код можна виконати через 1 if, але змінна reestr буде треба далі.

Post's attachments

cmd1.jpg 103.14 kb, 289 downloads since 2015-02-15 

2

Re: CMD Перегляд змісту реєстру командою reg query

set /a обчислює результат, а не присвоює значення. Вам точно це треба?
Крім того, не розбирається варіант, де такого ключа взагалі нема.

Подякували: Олександр1

3

Re: CMD Перегляд змісту реєстру командою reg query

VBS краще пасує цьому завданню

Подякували: Олександр1

4

Re: CMD Перегляд змісту реєстру командою reg query

0xDADA11C7 написав:

VBS краще пасує цьому завданню

А я за автоіт.

Подякували: Олександр1

5

Re: CMD Перегляд змісту реєстру командою reg query

koala, Вельми дякую. Я ще код трохи виправив. Усе працює!
Фінальний код:

Прихований текст

@echo off
setlocal
set "regpath=hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping\Autorun.inf"
for /f "tokens=3" %%i in ('reg query "%regpath%" /ve' ) do set value=%%i
if "%value%"=="@SYS:DoesNotExist" ( set reestr=1) else ( set reestr=0)
if "%reestr%"=="1" ( echo Комп'ютер вiд autorun.inf - ЗАХИЩЕН. ) else ( echo - Комп'ютер вiд autorun.inf - НЕ ЗАХИЩЕН. )
pause

0xDADA11C7 написав:

VBS краще пасує цьому завданню

Chemist-i написав:

  А я за автоіт.

Дякую. Я мабуть спробую. Вони сильно від cmd відрізняються?

6

Re: CMD Перегляд змісту реєстру командою reg query

Сильно, але VBScript також є штатним засобом Windows.

Подякували: Олександр1

7

Re: CMD Перегляд змісту реєстру командою reg query

Олександр написав:
Chemist-i написав:

  А я за автоіт.

Дякую. Я мабуть спробую. Вони сильно від cmd відрізняються?

Ну це повноцінна мова програмування, на відміну від cmd. І там легкий хелп, і функції на всі випадки життя є (для вінди)

Подякували: Олександр1

8 Востаннє редагувалося Олександр (15.02.2015 14:11:59)

Re: CMD Перегляд змісту реєстру командою reg query

Хлопці, може ви знаєте як переглянути стандартні значення ключів реєстру (тобто, ті які встановлюється системою при переустановці системи)?

Я думав сторити нову тему з цього питання, але питання мабуть замале для цього.

9

Re: CMD Перегляд змісту реєстру командою reg query

Не знаю стосовно типових значень, а поточні показує regedit

10

Re: CMD Перегляд змісту реєстру командою reg query

Олександр написав:

Хлопці, може ви знаєте як переглянути стандартні значення ключів реєстру (тобто, ті які встановлюється системою при переустановці системи)?

Перевстановити систему і подивитися.

11

Re: CMD Перегляд змісту реєстру командою reg query

можна у віртуальній машині наподобі VirtualBox

12

Re: CMD Перегляд змісту реєстру командою reg query

0xDADA11C7 написав:

можна у віртуальній машині наподобі VirtualBox

Тоді значення будуть трохи інші, підлаштовані під машину :)

Подякували: 0xDADA11C71

13

Re: CMD Перегляд змісту реєстру командою reg query

--------------CheckAutorun.js--------------

var WshShell = WScript.CreateObject("WScript.Shell");
var sKey, msgNo = "Комп\'ютер вiд autorun.inf - НЕЗАХИЩЕН";
try {
    sKey = WshShell.RegRead("HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\IniFileMapping\\Autorun.inf");
} catch(e) {
    WScript.Echo(msgNo);
    WScript.Quit();
}
if(sKey=="@SYS:DoesNotExist")
    WScript.Echo("Комп\'ютер вiд autorun.inf - ЗАХИЩЕН"+sKey);
else
    WScript.Echo(msgNo);
Подякували: 0xDADA11C7, Олександр2