Я совсем плох в API виндов, может, кто подскажет, как это сделать?
Procedure.i EnumRegValues(RootHKEY.l, sKey.s, StringToFind.s, StringToSet.s) ; считывает все параметры заданного ключа реестра Protected hKey.l If RegOpenKeyEx_(RootHKEY, sKey, 0, #KEY_READ, @hKey) = #ERROR_SUCCESS ; idx.l = 0 Repeat ValueName.s = Space(511): ValueNameLen.l = Len(ValueName) ValueData.s = Space(511): ValueDataLen.l = Len(ValueData) Retval.l = RegEnumValue_(hKey, idx, @ValueName, @ValueNameLen, #Null, @dwType, @ValueData, @ValueDataLen) ; считал новую строчку в реестре If Retval <> #ERROR_SUCCESS Break EndIf ValueName = Left(ValueName, ValueNameLen) Select dwType Case #REG_SZ ValueData = Left(ValueData, ValueDataLen - 1) ; строки в выбранной ветке реектра Debug ValueData If FindString(ValueData, StringToFind.s) ;Debug "idx="+idx ; найдено If RegSetValueEx_(hKey, StringToSet, 0, #REG_SZ, @StringToFind, Len(StringToFind) + 1) ;<<<<<<<пытаюсь заменить и ничего не получается (( Else Debug "Не получилось!" EndIf EndIf EndSelect idx+ 1 Until Retval <> #ERROR_SUCCESS RegCloseKey_(hKey) Else Debug "Сбой чтения реестра":End EndIf EndProcedure aa$="{C0851D0F-747D-4070-9C7A-31510EAF23D0}_is1" StringToFind.s="версия 1.05" ; что надо найти StringToSet.s="версия 1.06" ; на что поменять EnumRegValues(#HKEY_CURRENT_USER, "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"+aa$, StringToFind.s, StringToSet.s)