Script "LoginAs"

  • Hi Leute,

    ich habe ein weiterst Script fertiggestellt und möchte es nun veröffentlichen.
    Das Tool nennt sich "LoginAS" und meldet einen Benutzer unter einem anderem Benutzer an. Das Script funktioniert unter Domain und Arbeitsgruppen Benutzern.
    Da das Tool unter Autoit geschrieben ist kann man es anpassen und so in andere Scripte einpassen.

    Zum testen liegt eine Datei "testlogin.au3" bei um den angemeldeten Benutzernamen anzeigen zu lassen. Die Datei muß noch kompeliert werden.

    EDIT: 28.05.2009
    Hi Leute ich habe es ja versprochen, das ich das Script anpasse.
    Die Arbeit wurde mir von ytwinky und bernd670 schon fast abgenommen :D Danke Euch natürlich nochmal.
    Ich selber habe auch nochmal rumgespielt und stelle die neue Version nun online.

    Also testen und die Verbesserungen hier posten.

    MfG
    Der_Doc

    2 Mal editiert, zuletzt von Der_Doc (28. Mai 2009 um 14:52)

  • Hi Der_Doc,
    das Skript hat mir so gut gefallen, daß ich erstmal einen Baustein meines
    momentanen Projektes eingebastelt habe. Sei mir bitte nicht böse, daß ich
    es etwas umgemodelt habe, so gefällt es mir einfach besser :D
    _GetUser() liest (theoretisch) auch andere Computer ein, es muß halt nur
    der Name übergeben werden ;)
    Gruß
    ytwinky

    Spoiler anzeigen
    [autoit]


    ;~ Author: <Der_Doc>
    ;~ Name: <LoginAs.exe>
    ;~ AutoIt Version: 3.2.2.0 & aktuelle Beta
    ;~ Version: <1.1>
    ;~ Datum: 02.03.2007
    ;~ Ergänzungen: ytwinky, MD
    #include <GUIConstants.au3>
    Dim $Programm
    GUICreate("Ausführen als..", 375, 140)
    GUICtrlCreateLabel("Programm:", 45, 12)
    GUICtrlCreateLabel("Benutzername:", 45, 42)
    GUICtrlCreateLabel("Kennwort:", 45, 72)
    GUICtrlCreateLabel("Domain:", 45, 102)
    GUICtrlCreateIcon("shell32.dll", 194, 5, 60, 32,32)
    $In_Programm=GUICtrlCreateInput(@ComSpec, 120, 10, 169, 21)
    $Durchsuchen=GUICtrlCreateButton ("Durchsuchen", 290, 11, 80, 20)
    $In_Domain=GUICtrlCreateCombo(@LogonDomain, 120, 100, 169, $CBS_DROPDOWNLIST+$CBS_AUTOHSCROLL)
    GUICtrlSetData(-1, @ComputerName &'-Arbeitsgruppe|' &@LogonDomain &'-Domain', @LogonDomain)
    $In_Benutzer=GUICtrlCreateCombo('Benutzer wählen', 120, 40, 169, 21, $CBS_DROPDOWNLIST+$CBS_AUTOHSCROLL)
    GUICtrlSetData($In_Benutzer, _GetUsers(GUICtrlRead($In_Domain)))
    $In_Kennwort=GUICtrlCreateInput('', 120, 70, 169, 21, $ES_PASSWORD)
    $bt_Login=GUICtrlCreateButton("RunIt", 314, 100, 57, 21, $BS_DEFPUSHBUTTON)
    GUICtrlSetFont(-1, 10, 800, 0)
    $Copy=GUICtrlCreateLabel("© 2007 Der_Doc && ytwinky", 245, 127)
    GUISetState(@SW_SHOW)
    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Durchsuchen
    $Programm=FileOpenDialog("Programm-Auswahl", @ScriptDir &"\", "Anwendung (*.exe)", 1)
    If $Programm<>"" And FileExists($Programm) Then GUICtrlSetData($In_Programm, $Programm)
    Case $bt_Login
    RunAsSet()
    $Programm=GUICtrlRead($In_Programm)
    If FileExists($Programm) Then
    Select
    Case GUICtrlRead($In_Benutzer)="Benutzer wählen"
    Msgbox(32, "Fehler-PopUp", "Erst Benutzernamen eintragen", 2)
    GUICtrlSetState($In_Benutzer, $GUI_FOCUS)
    Case GUICtrlRead($In_Kennwort)=""
    Msgbox(32, "Fehler-PopUp", "Erst Kennwort eintragen", 2)
    GUICtrlSetState($In_Kennwort, $GUI_FOCUS)
    Case Else
    RunAsSet(GUICtrlRead($In_Benutzer), GUICtrlRead($In_Domain), GUICtrlRead($In_Kennwort))
    Run($Programm)
    RunAsSet()
    Exit
    EndSelect
    Else
    Msgbox(16, "Ooops..", "Das angegebene Programm " &$Programm &" gibt es nicht!")
    EndIf
    EndSwitch
    Wend

    [/autoit] [autoit][/autoit] [autoit]

    Func _GetUsers($Domain="localhost")
    Local $wbemFlagReturnImmediately=0x10, $wbemFlagForwardOnly=0x20, $colItems="", $s
    Local $objWMIService=ObjGet("winmgmts:\\" &$Domain &"\root\CIMV2")
    $colItems=$objWMIService.ExecQuery("Select * FROM Win32_UserAccount", "WQL", $wbemFlagReturnImmediately*$wbemFlagForwardOnly)
    If IsObj($colItems) Then
    For $objItem In $colItems
    If Not $objItem.Disabled Then $s&=$objItem.Name &"|"
    Next
    Else
    Msgbox(0, "WMI-Ausgabe","Keine WMI-Objekte gefunden für Klasse: Win32_UserAccount")
    Exit 12
    EndIf
    Return StringLeft($s, StringLen($s)-1)
    EndFunc

    [/autoit]

    (Ich) benutze stets die aktuelle (Beta) und SciTE..

  • Kann ich dann auch in Benutzerkonten rein wo ich des passwort nich selber kenne ( z.B bei meiner Mutter?

  • Ich glaube, so große Sicherheits-Löcher hat nicht einmal Windows !

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Wieso bekomme ich folgede Fehlermeldungen?
    E:\LoginAs.au3(15,68) : WARNING: $ES_PASSWORD: possibly used before declaration.
    $In_Kennwort = GUICtrlCreateInput("", 115, 40, 169, 21,$ES_PASSWORD)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    E:\LoginAs.au3(16,74) : WARNING: $CBS_DROPDOWNLIST: possibly used before declaration.
    $In_Domain = GUICtrlCreateCombo("", 115, 70, 169, BitOR($CBS_DROPDOWNLIST,
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    E:\LoginAs.au3(16,91) : WARNING: $CBS_AUTOHSCROLL: possibly used before declaration.
    $In_Domain = GUICtrlCreateCombo("", 115, 70, 169, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    E:\LoginAs.au3(19,80) : WARNING: $BS_DEFPUSHBUTTON: possibly used before declaration.
    $Button_Login = GUICtrlCreateButton("Login", 330, 55, 57, 35, $BS_DEFPUSHBUTTON)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    E:\LoginAs.au3(59,59) : ERROR: syntax error
    RunAsSet($In_Benutzer1, $In_Domain1 , $In_Kennwort1,)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    • Offizieller Beitrag

    Hallo,

    das Programm ist noch mit Version 3.2.2.0 erstellt worden. Seit dem haben sich ein paar Include's geändert und den Befehl RunAsSet gibt es nicht mehr.

    So sollte es wieder gehen (ungetestet):

    Spoiler anzeigen
    [autoit]

    ;~ Author: <Der_Doc>
    ;~ Name: <LoginAs.exe>
    ;~ AutoIt Version: 3.2.2.0 & aktuelle Beta
    ;~ Version: <1.1>
    ;~ Datum: 02.03.2007
    ;~ Ergänzungen: ytwinky, MD
    ;~ Angepasst an Version 3.3.0.0 (27.05.2009) bernd670
    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Dim $Programm
    GUICreate("Ausführen als..", 375, 140)
    GUICtrlCreateLabel("Programm:", 45, 12)
    GUICtrlCreateLabel("Benutzername:", 45, 42)
    GUICtrlCreateLabel("Kennwort:", 45, 72)
    GUICtrlCreateLabel("Domain:", 45, 102)
    GUICtrlCreateIcon("shell32.dll", 194, 5, 60, 32, 32)
    $In_Programm = GUICtrlCreateInput(@ComSpec, 120, 10, 169, 21)
    $Durchsuchen = GUICtrlCreateButton("Durchsuchen", 290, 11, 80, 20)
    $In_Domain = GUICtrlCreateCombo(@LogonDomain, 120, 100, 169, $CBS_DROPDOWNLIST + $CBS_AUTOHSCROLL)
    GUICtrlSetData(-1, @ComputerName & '-Arbeitsgruppe|' & @LogonDomain & '-Domain', @LogonDomain)
    $In_Benutzer = GUICtrlCreateCombo('Benutzer wählen', 120, 40, 169, 21, $CBS_DROPDOWNLIST + $CBS_AUTOHSCROLL)
    GUICtrlSetData($In_Benutzer, _GetUsers(GUICtrlRead($In_Domain)))
    $In_Kennwort = GUICtrlCreateInput('', 120, 70, 169, 21, $ES_PASSWORD)
    $bt_Login = GUICtrlCreateButton("RunIt", 314, 100, 57, 21, $BS_DEFPUSHBUTTON)
    GUICtrlSetFont(-1, 10, 800, 0)
    $Copy = GUICtrlCreateLabel("© 2007 Der_Doc && ytwinky", 245, 127)
    GUISetState(@SW_SHOW)
    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Durchsuchen
    $Programm = FileOpenDialog("Programm-Auswahl", @ScriptDir & "\", "Anwendung (*.exe)", 1)
    If $Programm <> "" And FileExists($Programm) Then GUICtrlSetData($In_Programm, $Programm)
    Case $bt_Login
    $Programm = GUICtrlRead($In_Programm)
    If FileExists($Programm) Then
    Select
    Case GUICtrlRead($In_Benutzer) = "Benutzer wählen"
    MsgBox(32, "Fehler-PopUp", "Erst Benutzernamen eintragen", 2)
    GUICtrlSetState($In_Benutzer, $GUI_FOCUS)
    Case GUICtrlRead($In_Kennwort) = ""
    MsgBox(32, "Fehler-PopUp", "Erst Kennwort eintragen", 2)
    GUICtrlSetState($In_Kennwort, $GUI_FOCUS)
    Case Else
    RunAs(GUICtrlRead($In_Benutzer), GUICtrlRead($In_Domain), GUICtrlRead($In_Kennwort), 1, $Programm)
    Exit
    EndSelect
    Else
    MsgBox(16, "Ooops..", "Das angegebene Programm " & $Programm & " gibt es nicht!")
    EndIf
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _GetUsers($Domain = "localhost")
    Local $wbemFlagReturnImmediately = 0x10, $wbemFlagForwardOnly = 0x20, $colItems = "", $s
    Local $objWMIService = ObjGet("winmgmts:\\" & $Domain & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("Select * FROM Win32_UserAccount", "WQL", $wbemFlagReturnImmediately * $wbemFlagForwardOnly)
    If IsObj($colItems) Then
    For $objItem In $colItems
    If Not $objItem.Disabled Then $s &= $objItem.Name & "|"
    Next
    Else
    MsgBox(0, "WMI-Ausgabe", "Keine WMI-Objekte gefunden für Klasse: Win32_UserAccount")
    Exit 12
    EndIf
    Return StringLeft($s, StringLen($s) - 1)
    EndFunc ;==>_GetUsers

    [/autoit]
  • Hi Leute,
    ja sorry ich werde mich nachher hinsetzten und werde das Script an die neue Version anpassen.
    Die Fehler kommen von den Includes.

    Aber wenn man kein Passwort hat, kein Login. :D Ich muß Micha he recht geben. :rofl: auch ein falsches Passwort hilft dir net weiter.

    SO SIEHE POST1 NEU VERSION ONLINE
    Vista getestet.

    MfG
    Der_Doc

    Einmal editiert, zuletzt von Der_Doc (28. Mai 2009 um 14:53)