Okay, round 2. Is this better?

Break On
Dim $SO
$SO=SetOption('Explicit','On')
$SO=SetOption('NoVarsInStrings','On')
$SO=SetOption('NoMacrosInStrings','On')

Dim $BaseKey,$DataKey,$UserID
Dim $ArrayBaseKey,$Key,$Profile
Dim $DataSid,$ProfileSID
$BaseKey = 'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\'
$DataKey = 'ProfileImagePath'
$DataSid = 'Sid'
$ArrayBaseKey = ArrayEnumKey($BaseKey)
For Each $Key In $ArrayBaseKey
If $Key
$Profile = Split(ReadValue($BaseKey+$Key,$DataKey),'\')[2]
$ProfileSID = ReadValue($BaseKey+$Key,$DataSid)
'SID2Name: ' SidToName($Key) ?
'Registry Account Name: ' + $Profile ?
'SID: ' + $Key ?
'SID (REG value): ' + $ProfileSID ??
EndIf
Next

Function ArrayEnumValue($regsubkey)
Dim $retcode, $valuecounter, $currentvalue, $valuearray
If Not KeyExist($regsubkey)
Exit 87
EndIf
$valuecounter=0
Do
$currentvalue=EnumValue($regsubkey,$valuecounter)
If Not @ERROR
ReDim PreServe $valuearray[$valuecounter]
$valuearray[$valuecounter]=$currentvalue
$valuecounter=$valuecounter+1
EndIf
Until @ERROR
$arrayenumvalue=$valuearray
Exit 0
EndFunction

Function arrayenumkey($regsubkey)
Dim $retcode, $subkeycounter, $currentsubkey, $subkeyarray
If Not KeyExist($regsubkey)
Exit 87
EndIf
$subkeycounter=0
Do
$currentsubkey=EnumKey($regsubkey,$subkeycounter)
If Not @ERROR
ReDim PreServe $subkeyarray[$subkeycounter]
$subkeyarray[$subkeycounter]=$currentsubkey
$subkeycounter=$subkeycounter+1
EndIf
Until @ERROR
$arrayenumkey=$subkeyarray
Exit 0
EndFunction



Edited by NTDOC (2006-06-24 02:48 AM)