Цитата martinello:
Все ведь не перечислишь »
|
Может быть, но кое-что все же, можно сделать.
По сути значения
"версия" состоит из 3 цифр и четырех символов.
1. Натравливаем в цикле с перечислением, фильтр, который отсекает все значения, кроме числовых.
2. Проверяем длину строк на 4 символа, все остальное отсекаем.
3. У нас уже есть путь к ветке реестра, можем уже считывать ключи реестра
Недостаток в том, если есть еще ветки удовлетворяющим условиям, то будут ложные данные считаны
И довольно все это сложно перемудрено не туда...
Код:
!include "MUI2.nsh"
!include "WordFunc.nsh"
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Russian"
OutFile "StrDo.exe"
ShowInstDetails show
Section
${Do}
;перечисляем разделы в ветке After (разделы в $1)
EnumRegKey $1 HKLM "SOFTWARE\After" $0
IntOp $0 $0 + 1
${StrFilter} "$1" "1" "." "" "$2" ;фильтр: только цифры и точка в $2
StrLen $3 $2 ;вычисляем длину строки в $3
${IfNot} $2 == "" ; оператор If с условием, если $2 не равно пустому значению
${AndIf} $3 = 4 ; логика И (если $2 не равно пустому значению И длина строки $3 = 4)
DetailPrint "найденный раздел: $1"
ReadRegStr $4 HKLM "SOFTWARE\After\$1\Prog" "Key" ;теперь можно считывать значения ключеей (к примеру: Key)
DetailPrint `Значение ключа [ Key ] - "$4"`
${Break} ;выход из цикла
${EndIf}
${LoopUntil} $1 == ""
SectionEnd