Войти

Показать полную графическую версию : [решено] скрипт изменения значения ветки реестра в процессе установки программы


adima
25-03-2012, 18:58
Требуется изменение значения ветки реестра в процессе установки программы
Алгоритм:
1) ждем появления параметра ветки реестра
2) когда появился параметр в реестре меняем его значение на другое

Iska
25-03-2012, 20:20
Каков глубинный смысл менять именно «в процессе»? Дожидаемся окончания процесса установки и меняем значение параметра.

adima
25-03-2012, 21:12
смысл в том что это антивирус и когда установился он защищает ветки реестра от изменений

ferget
25-03-2012, 23:01
отключить антивирус, поменять значение, включить антивирус

Iska
25-03-2012, 23:04
1. Какой антивирус?
2. Проверьте, есть ли возможность внести изменения до установки — не «затрёт» ли антивирус его своим значением при установке.
3. Если это продолжение уже имевшегося обсуждения в какой-либо из имеющихся тем на форуме — есть смысл привести на него ссылку здесь.

adima
26-03-2012, 15:04
1.ESET Антивирус
2. Возможность есть

Скрипт я нашел но есть прoблемы:

$path = "HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip";
Dim $minidb[1];
For $i=1 To 10
$val=RegEnumVal($path, $i);
If (@error<>0) Then ExitLoop
ReDim $minidb[$i];
$minidb[$i-1]=$val;
Next
While 1
For $i=1 To 10
$val=RegEnumVal($path, $i);
If (@error<>0) Then ExitLoop
If $minidb[$i-1]<>$val Then ;;;;;
MsgBox(48,"Test", "Обнаружены изменения!")
EndIf
Next
WEnd

Проблема:
Через раз вылетает с ошибкой ;;;;; Array variable has incorrect number of subscripts or subscript dimension range exceeded

Iska
27-03-2012, 06:21
Что-то не очень понятное. Всё, что Вам нужно — читать и ждать:
AutoItSetOption("MustDeclareVars", 1)

Local $sSubKey = "HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip"
Local $sValueName = "Path2"
Local $sValue

Do
Sleep(100)

$sValue = RegRead($sSubKey, $sValueName)
Until $sValue <> ""

MsgBox(48, "Параметр создан", "[" & $sSubKey & "\" & $sValueName & "] = " & $sValue)

Iska
27-03-2012, 09:38
Дополнение: в вышеприведённом коде подразумевается, что созданный параметр будет не пустой. Иначе так и будет крутиться внутри цикла до бесконечности.




© OSzone.net 2001-2012