Du hattest ja schon per PN nach einer Änderung meiner Funktion gefragt.
Hier habe ich mal zwei Funktionen zum Suchen in der Registry:
Spoiler anzeigen
MsgBox(0, 'Key-Search', _RegKeySearch('HKEY_LOCAL_MACHINE', 'AutoIt v3'))
MsgBox(0, 'Val-Search', _RegValSearch('HKEY_LOCAL_MACHINE', 'v3.3.6.1'))
Func _RegKeySearch($sRegPath, $sKeySearch)
Local $sKey, $sVal, $sVar, $ret, $i = 0, $j = 0
While True
$i += 1
$sKey = RegEnumKey($sRegPath, $i)
If $sKey == $sKeySearch Then Return $sRegPath & '\' & $sKey
If @error Then ExitLoop
$ret = _RegKeySearch($sRegPath & '\' & $sKey, $sKeySearch)
If $ret <> '' Then ExitLoop
WEnd
Return $ret
EndFunc
Func _RegValSearch($sRegPath, $sValSearch)
Local $sKey, $sVal, $sVar, $ret, $i = 0, $j = 0
While True
$i += 1
$sKey = RegEnumKey($sRegPath, $i)
If @error Then ExitLoop
$ret = _RegValSearch($sRegPath & '\' & $sKey, $sValSearch)
If $ret <> '' Then ExitLoop
$j = 0
While True
$j += 1
$sVal = RegEnumVal($sRegPath & '\' & $sKey, $j)
If @error Then ExitLoop
$sVar = RegRead($sRegPath & '\' & $sKey, $sVal)
If $sVar == $sValSearch Then Return $sRegPath & '\' & $sKey & '\' & $sVal
WEnd
WEnd
Return $ret
EndFunc
Einmal kannst Du nach einem Key suchen lassen und die andere Funktion ist zum suchen nach einem Wert.
Es muss aber der ganze Key/Wert übergeben werden, nicht nur ein Bruchstück. Wenn das gewünscht ist, muss der Vergleich mit StringInStr oder StringRegExp erfolgen.