; Create "acceptable" array $asAcceptable="/R C:\Program Files\MyApp\XLFILES\BPSMA32.XLL" ,"/R C:\Program Files\MyApp\XLFILES\BH_EXT.XLA" ,"/R C:\Program Files\MyApp\XLFILES\BPSMA32.XLL" ; Parallel "present" array of same size Dim $aiPresent[Ubound($asAcceptable)] $sKeyName="HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Excel\microsoft excel" $iValueIndex=0 $sValueName=EnumValue($sKeyName,$iValueIndex) While @ERROR=0 $sKeyValue=ReadValue($sKeyName,$sValueName) $iIndex=ascan($asAcceptable,$sKeyValue) If (1+$iIndex) ; Content of value is in acceptable list $iIndex=ascan($asAcceptable,$sKeyValue) If $aiPresent[$iIndex] "Duplicate entry '"+$sKeyValue+"' found at "+$sKeyName+", "+$sValueName+@CRLF $rc=DelValue($sKeyName,$sValueName) ; Deleted value, so must back up index for enum. $iValueIndex=$iValueIndex-1 Else $aiPresent[$iIndex]=1 EndIf Else ; Not in acceptable array - ignored. EndIf $iValueIndex=$iValueIndex+1 $sValueName=EnumValue($sKeyName,$iValueIndex) Loop ; Write missing keys For $iIndex = 0 To Ubound($asAcceptable) If Not $aiPresent[$iIndex] "Writing '"+$asAcceptable[$iIndex]+"' to 'OPEN"+($iIndex+1)+"'" ? $rc=WriteValue($sKeyName,"OPEN"+($iIndex+1),$asAcceptable[$iIndex],'REG_SZ') EndIf Next
|