Я совсем плох в 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)