Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для kotkovets

Ветеран


Сообщения: 1216
Благодарности: 486

Профиль | Отправить PM | Цитировать


Цитата 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

-------
Спасибо ВСЕМ за то, что тратите свое время, что бы ПОМОЧЬ МНЕ.


Последний раз редактировалось kotkovets, 25-03-2011 в 14:44.


Отправлено: 14:35, 25-03-2011 | #1004