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)
Собственно если запись существует, то пакетник завершает свою работу, иначе файл запускается.
|
или так:
Код:
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 * "Вы ввели правильный ключ. "
|
Цитата:
Цитата angelada89
он просто не дает запуститься батнику! а надо чтобы батник запускался »
|
"он" это хто?... БАТНИК?.. :not-me:
Цитата:
Цитата angelada89
если есть запись в реестре, то батник сразу бы переходил к вот этому коду »
|
посты #2 и #3 как раз о том, как проверить наличие параметра в реестре, заодно в справке по ERRORLEVEL:
Цитата:
Цитата 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 |
неа не работает, не запускается пакетник сразу же вырубается
|
попробуйте просто ради интереса - в конце файла батника с новой строки написать 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.
© OSzone.net 2001-