Показать полную графическую версию : проверка записи в реестре
angelada89
07-03-2010, 02:18
осталась последняя проблемка перед завершением программки!
надо чтобы bat проверял запись в реестре и если такая имеется то не запускал exe файл программы
пример:
Если запись HKLM\SOFTWARE\ekzamen\ /v Driverss /t REG_SZ /f >nul есть, то E:\Games\exzamen.exe не запускается!!!
помогите пожалуста с кодом этого чуда=))
Devils0411
07-03-2010, 05:08
Попробуй так:
@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)
Собственно если запись существует, то пакетник завершает свою работу, иначе файл запускается.
или так:
REG Query "HKLM\SOFTWARE\ekzamen" /v "Driverss"&& Exit /B 1
Start "" "E:\Games\exzamen.exe"
angelada89
07-03-2010, 14:45
спасибо щас буду тестить!=))
так он просто не дает запуститься батнику! а надо чтобы батник запускался, просто нельзя было запустить 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 * "Вы ввели правильный ключ. "
он просто не дает запуститься батнику! а надо чтобы батник запускался »"он" это хто?... БАТНИК?.. :not-me:
если есть запись в реестре, то батник сразу бы переходил к вот этому коду »посты #2 и #3 как раз о том, как проверить наличие параметра в реестре, заодно в справке по ERRORLEVEL:IF /?
REG /?
далее exzamen.exe просто может сам запускаться »САМ?.. и часто?.. :flag:
Devils0411
07-03-2010, 16:43
amel27, я тож голову сломал, читая это))
angelada89
07-03-2010, 17:35
блин ну как обьяснить=) если придираться к словам то я тут вообще никогда не донесу суть проблемы=)) ок пробую еще раз!
вы дали код, (2 и 3 пост) но этот КОД не дает запуститься батнику если есть запись в реестре, а надо чтобы код просто не давал запускаться exzamen.exe
Собственно если запись существует, то пакетник завершает свою работу, иначе файл запускается.
но надо сделать так что если запись существует, то пакетник НЕ завершал работу а запретил запуск exzamen.exe и перешел сразу на запрос ввода ключа...
Devils0411
07-03-2010, 18:06
Как вариант:
@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
неа не работает, не запускается пакетник сразу же вырубается
попробуйте просто ради интереса - в конце файла батника с новой строки написать pause и выполнить скрипт - посомтрите почиму вываливается то, что командному файлу не нравится.
angelada89
09-03-2010, 19:52
@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
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.