| Rush | Дата: Суббота, 06 Июнь 2009, 15:07 | Сообщение # 1 |
Обозреватель-консультант
Группа: Проверенные
Сообщений: 216
Репутация: 10
Награды: 1
Статус: Offline
| Баловался тут с ММВ и в ходе этого баловства получилось и кое-что полезное. Собственно, в примере все описано. Code ***** Заполнение переменных ***** ** ветка реестра (например, автозагрузка) section$='hkcu\Software\Microsoft\Windows\CurrentVersion\Run' ** ключ key$='VDMAuto' ** значение (маршрут этого приложения) value$='<SrcDir>\\'+CBK_AppFileName ** файл (например, заполненной базы, который нужен для работы) base$='<SrcDir>\base.ini' ***** Собственно, работа ***** ** запуск проверки из командной строки (надо писать параметры ** очень тщательно, иначе их легко сделать неработоспособными) p$='hide,wait /c for /f "tokens=1,3,*" %a in (\'reg query "'+section$+'" /v '+key$+'\') do (echo %a | find /c "'+key$+'" > <Temp>\rq.tmp & echo %b %c | find /i /c "'+value$+'" >> <Temp>\rq.tmp)' Run("cmd","p$") ** проверка существования ключа key=VAL(StrFromFile(<Temp>\rq.tmp,1,1)) ** проверка значения на нужный маршрут path=VAL(StrFromFile(<Temp>\rq.tmp,2,1)) ** проверка файла на нулевую длину (или существование) ini$=StrFromFile(base$,1,-1) lenfile=LEN(ini$) ** запись ключа реестра, если проверка соответствует таким критериям: ** 1) если ключа не существует, а база не нулевая ** 2) если ключ существует, а маршрут не соответствует текущему расположению If (key<lenfile | path<key) Then p$='wait,hide /c reg add "'+section$+'" /v '+key$+' /t reg_sz /d "'+value$+'" /f' Run("cmd","p$") End ** удаление временного файла Run("cmd","hide /c del <Temp>\rq.tmp /q") ** в принципе, основное здесь - автоматическая замена ключа при изменении ** расположения приложения. Если база не нужна, то вместо key<lenfile ** надо использовать key=0
Сообщение отредактировал Rush - Суббота, 06 Июнь 2009, 15:15 |
| |
| |