Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   проверка записи в реестре (http://forum.oszone.net/showthread.php?t=169381)

angelada89 07-03-2010 02:18 1362720

проверка записи в реестре
 
осталась последняя проблемка перед завершением программки!
надо чтобы bat проверял запись в реестре и если такая имеется то не запускал exe файл программы
пример:
Если запись HKLM\SOFTWARE\ekzamen\ /v Driverss /t REG_SZ /f >nul есть, то E:\Games\exzamen.exe не запускается!!!
помогите пожалуста с кодом этого чуда=))

Devils0411 07-03-2010 05:08 1362746

Попробуй так:
Код:

@Echo off
For /F "tokens=1" %%a in ('reg query "HKLM\SOFTWARE\ekzamen" /v "Driverss"') do set regpath=%%a 
If DEFINED regpath (
goto :EOF) Else (
start E:\Games\exzamen.exe)

Собственно если запись существует, то пакетник завершает свою работу, иначе файл запускается.

amel27 07-03-2010 11:28 1362818

или так:
Код:

REG Query "HKLM\SOFTWARE\ekzamen" /v "Driverss"&& Exit /B 1
Start "" "E:\Games\exzamen.exe"


angelada89 07-03-2010 14:45 1362932

спасибо щас буду тестить!=))

так он просто не дает запуститься батнику! а надо чтобы батник запускался, просто нельзя было запустить exzamen.exe


или есть вариант другой: если есть запись в реестре, то батник сразу бы переходил к вот этому коду

Код:

:LOOP 
If %less% GTR 0 (          msg * "Внимание осталось %less% дней"            )
Else (          Set /P ink= "%prd% Dnej zakonchilos, vvedite key: "       
reg add HKLM\SOFTWARE\ekzamen\ /v Driverss /t REG_SZ /f >nul                 
If /I Not "!ink!"=="%key%" Echo Ne verno, poprobujte eshe raz^^^!& GoTo LOOP         
If /I  "!ink!"=="%key%"  GoTo HHH

а далее если ключ верен то запись с реестра удаляется и все! далее exzamen.exe просто может сам запускаться

Код:

:HHH 
reg delete HKLM\SOFTWARE\ekzamen\ /v Driverss /f >nul 
reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v driver /f>nul 
msg * "Вы ввели правильный ключ. "


amel27 07-03-2010 16:41 1363000

Цитата:

Цитата angelada89
он просто не дает запуститься батнику! а надо чтобы батник запускался »

"он" это хто?... БАТНИК?.. :not-me:

Цитата:

Цитата angelada89
если есть запись в реестре, то батник сразу бы переходил к вот этому коду »

посты #2 и #3 как раз о том, как проверить наличие параметра в реестре, заодно в справке по ERRORLEVEL:
Код:

IF /?
REG /?

Цитата:

Цитата angelada89
далее exzamen.exe просто может сам запускаться »

САМ?.. и часто?.. :flag:

Devils0411 07-03-2010 16:43 1363004

amel27, я тож голову сломал, читая это))

angelada89 07-03-2010 17:35 1363034

блин ну как обьяснить=) если придираться к словам то я тут вообще никогда не донесу суть проблемы=)) ок пробую еще раз!


вы дали код, (2 и 3 пост) но этот КОД не дает запуститься батнику если есть запись в реестре, а надо чтобы код просто не давал запускаться exzamen.exe

Цитата:

Собственно если запись существует, то пакетник завершает свою работу, иначе файл запускается.
но надо сделать так что если запись существует, то пакетник НЕ завершал работу а запретил запуск exzamen.exe и перешел сразу на запрос ввода ключа...

Devils0411 07-03-2010 18:06 1363054

Как вариант:
Код:

@Echo off
For /F "tokens=1" %%a in ('reg query "HKLM\SOFTWARE\ekzamen" /v "Driverss"') do set regpath=%%a 
If DEFINED regpath cacls E:\Games\exzamen.exe /T /E /D Все >nul


angelada89 08-03-2010 00:44 1363336

неа не работает, не запускается пакетник сразу же вырубается

Berline 09-03-2010 09:48 1364094

попробуйте просто ради интереса - в конце файла батника с новой строки написать pause и выполнить скрипт - посомтрите почиму вываливается то, что командному файлу не нравится.

angelada89 09-03-2010 19:52 1364630

Код:

@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion
CHCP 1251
:: Первый запуск скрипта и запоминание даты в файл fstStrt.lst
:: Скрипт после этого НЕ перемещать, иначе не найдет файл fstStrt.lst !!!
::reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v driver /t REG_SZ /d E:\Games\exzamen.bat /f>nul
If Not Exist fstStrt.lst Echo %date%>fstStrt.lst& Exit

For /F "tokens=1" %%a in ('reg query "reg query "HKLM\SOFTWARE\ekzamen" /v "Driverss"') do set regpath=%%a
If DEFINED regpath cacls E:\Games\exzamen.exe /T /E /D Все >nul
:: Второй и последующие запуски скрипта

For /F %%I In (fstStrt.lst) Do Set fstStrt=%%I

:: Для тестов можно раскомментировать строку и вписать в нее дату первого запуска
Set fstStrt=25.01.2009

:: Период, в течении которого будет работать, вписать в строку ниже
Set prd=30
Set key=123456
Call :JDat %date%
Set less=%JDate%
Call :JDat %fstStrt%
Set /a less=JDate+prd-less
:LOOP
If %less% GTR 0 (
        msg * "Внимание осталось %less% дней"
       
) Else (
        Set /P ink= "%prd% Dnej zakonchilos, vvedite key: "
        reg add HKLM\SOFTWARE\ekzamen\ /v Driverss /t REG_SZ /f >nul       
        If /I Not "!ink!"=="%key%" Echo Ne verno, poprobujte eshe raz^^^!& GoTo LOOP
        If /I  "!ink!"=="%key%"  GoTo HHH
:HHH
reg delete HKLM\SOFTWARE\ekzamen\ /v Driverss /f >nul
reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v driver /f>nul
msg * "Вы ввели правильный ключ. Спасибо за использование лицензионного софта!"
)

 

:JDat
Set dat=%1
Set /a m=(1%dat:~3,2%-114)/12
Set /a JDate=1%dat:~0,2%+((1%dat:~3,2%-102-m*12)*367+((%dat:~6%+m)*487-49-(%dat:~6%+m)/100)*9)/12
GoTo:EOF

вот весь код, нифига не получается, все равно запускает файл exzamen.exe


Время: 02:53.

Время: 02:53.
© OSzone.net 2001-