Hi,
wer in der Registry nach Userprofilen sucht, kann Glück haben, wenn er alle erwischt..
Bei der Installation erstellt XP den User 'Administrator' mit entsprechenden Einträgen
in der Registry und auch in den Ordnern. Diesen Namen kennt JEDER und wenn der dann
auch noch kein Kennwort hat..
Egal, niemand hindert uns daran, dieses Konto umzubenennen(z.B. 'Verwalter'). Damit
schlägt aber die Verzeichnissuche in der Registry fehl, denn die Verzeichnisse
sind immernoch für den 'Administrator' angelegt(und ich empfehle auch nicht, das zu
ändern)!
Wie komme ich nun trotzdem an die SID von 'Verwalter'?
Richtig, dafür gibts ja Scriptomatic..
Spoiler anzeigen
; Erstellt von AutoIt Scriptomatic
;umgearbeitet von ytwinky ;-)))
Msgbox(1, "GetSid, aber richtig..", myGetSID("", "", 0))
Func myGetSID($User=@UserName, $Host=@ComputerName, $NurEiner=True)
Local $wbemFlagReturnImmediately=0x10, $wbemFlagForwardOnly=0x20, $colItems="", $angemeldet="Angemeldet: "
Local $JaNein[2]=[True, False], $Gesucht="Gesucht: "
If $User="" Then $User=@UserName
If StringInstr($Host, "\\")=1 Then $Host=StringMid($Host, 3)
If $Host="" Then $Host="."
$NurEiner=$JaNein[$NurEiner=False]
$Output="Computer: " &$Host &@Cr
$Output&=StringFormat("%50s", "SID") &StringFormat("%60s", "Name") &@Cr
$objWMIService=ObjGet("winmgmts:\\" &$Host &"\root\CIMV2")
If IsObj($objWMIService) Then
$colItems=$wbemFlagReturnImmediately+$wbemFlagForwardOnly
$colItems=$objWMIService.ExecQuery("SELECT * FROM Win32_AccountSID", "WQL", $colItems)
If IsObj($colItems) Then
For $objItem In $colItems
$s=$objItem.Setting
$s=StringMid($s, StringInStr($s, "SID=")+4) &@Tab
$s&=StringMid($objItem.Element, StringInStr($objItem.Element, "Name=")+5)
If StringInstr($s, Chr(34) &$User &Chr(34)) Then $Gesucht&=$s
If StringInstr($s, Chr(34) &@UserName &Chr(34)) Then $angemeldet&=$s
$OutPut&=StringReplace($s, Chr(34), "") &@Cr
Next
If $NurEiner Then Return StringReplace($Gesucht &@Cr &$angemeldet, Chr(34), "")
Return $OutPut &@Cr &StringReplace($angemeldet, Chr(34), "")
Else
Return "Keine WMI-Objekte gefunden für Klasse: Win32_AccountSID"
Endif
Else
Return $Host &" ist nicht in diesem Netz.."
EndIf
EndFunc
Alles anzeigen
So klappt's auch mit dem 'Verwalter'
Btw: Eigentlich wollte ich ja nur mit der Stringformatierung spielen..
Gruß
ytwinky