RunAs 'Explorer.exe' geht nicht...

  • Hallo Gemeinde,

    ich habe für den Helpdesk in unserer Firma ein kleines Tool gebaut um schnell beim User Funktionen mit Adminrechten zu starten. In der alten AutoIT-Version hat das mit dem alten RunAsSet() auch immer super geklappt. So hatte das damals ausgesehen:

    Spoiler anzeigen
    [autoit]

    func RunAsStuff($RunAsSelect)
    if askcode($input[4][0])<>"OK" then Return

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

    RunAsSet("installer", @ComputerName, $installer)
    Select
    Case $RunAsSelect=1
    Run("cmd.exe","C:\")
    Case $RunAsSelect=2
    Run("Explorer.exe","C:\")
    Case $RunAsSelect=3
    Run("control","C:\")
    Case $RunAsSelect=4
    Run("Regedit","C:\")
    EndSelect
    RunAsSet()
    endfunc

    [/autoit]


    So sieht das ganze dann heute aus:

    Spoiler anzeigen
    [autoit]

    func RunAsStuff($RunAsSelect)
    if askcode($input[4][0])<>"OK" then Return

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

    Select
    Case $RunAsSelect=1
    RunAs("installer", @ComputerName, $installer,0,"cmd.exe","C:\")
    Case $RunAsSelect=2
    RunAs("installer", @ComputerName, $installer,0,"Explorer.exe","C:\")
    Case $RunAsSelect=3
    RunAs("installer", @ComputerName, $installer,0,"control","C:\")
    Case $RunAsSelect=4
    RunAs("installer", @ComputerName, $installer,0,"Regedit","C:\")
    Case $RunAsSelect=5
    RunAs("installer", @ComputerName, $installer,0,"mmc C:\windows\system32\compmgmt.msc","C:\")
    Case $RunAsSelect=6
    RunAs("installer", @ComputerName, $installer,0,"Taskmgr.exe","C:\")
    EndSelect

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

    endfunc

    [/autoit]

    Und jetzt das seltsame daran: Nur die Aufrufe 'erplorer.exe' und 'Control' gehen nicht. Alles andere schon. Dazu kommt, wenn ich zB DOS ausfache per cmd.exe (das klappt ja) und dort explorer.exe starte, passiert auch nix. Wenn ich aber normal per Start->Ausführen cmd mache, und dort per RunAs /user:... usw den explorer aufrufe, dann gehts...
    Kann mir das einer erklären? Such ich hier den Fehler im AutoIT-Skript oder in Windows? Wäre cool wenn jemand nen heissen Tip hätte...


    Gruß Mike

    Einmal editiert, zuletzt von mikexmagic (26. April 2010 um 08:48)

  • Stimmt, man kann die "Explorer.exe" aus der CMD mit RunAs starten. Ich dachte immer das geht nicht....

    Nur... Adminrecht hat der Explorer trotzdem nicht !

    Meines Wissens nach, lässt sich der Explorer nur 1x starten und öffnet anschließend nur neue Fenster bei jedem Aufruf.
    Jedes Fenster läuft daher auch weiterhin mir den Rechten, die der erste Explorer hatte.

    Dann würde Dir der Aufruf mit RunAs nämlich nix bringen. Ich starte für solche Zwecke immer der TotalCommander als Admin. Damit klappt es.

    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"

  • Micha_he:

    leider liegst du da falsch. Der Explorer lässt sich durchaus mehrfach starten und dies auch mit unterschiedlichen Rechten. Ich und unser gesamter Helpdesk arbeiten seit Jahren so.
    Und wie bereits beschrieben öffnet sich der explorer per DOS-RunAs (manuell eingegeben) ja ohne Probleme. Im Taskmanager kann schön erkennen unter welchem Kontext die Prozesse laufen...

    Aber danke für den Versuch ;)

    Nachtrag: Es kann aber sein dass man dazu in den Ordneroptionen den Punkt 'Jeden Ordner in einem eigenen Prozess starten' aktiv haben muss. Dies ist bei uns der Fall...

    Einmal editiert, zuletzt von mikexmagic (26. April 2010 um 09:28)

  • Sicher dass die Domain richtig ist?

    Versuch mal die Domain mit

    [autoit]

    @LogonDomain

    [/autoit]

    anzugeben


    edit: Nur um es auszuschließen: der Username und das PW sind korrekt(in groß und Kleinschreibung?)

    greetz Blade

    Weil Denken die schwerste Arbeit ist, die es gibt, beschäftigen sich auch nur wenige damit.

  • Blade: Sorry, aber der user 'installer' ist ein lokal angelegter User uns somit ist die Domain @ComputerName die richtige.
    Und wie gesagt: mit dem alten RunAsSet() hat es wunderbar geklappt und die Calls für den Taskmgr oder cmd funktionieren ja auch einwandfrei.
    Also an der Domain liegt es auch nicht....

    Es geht übrigens ebenfalls nicht wenn ich statt Variablen die echten Werte eingebe. Auch nicht mit DomainAdmins...
    Immer der gleiche Fehler....

  • HI!

    Also wenn es sich um Windows XP handelt dann ist das schon so wie mikexmagic gesagt hat.
    Zumindest solange man mit den den Standardeinstellungen von XP arbeitet.
    Man kann im Explorer unter Extras Ordneroptionen Ansicht den Punkt ordnerfenster in einem eigenen prozess starten anklicken.
    Dann kann man auch einen Explorer unter einem Anderen Benutzer starten.
    Das sollte dann auch mit Autoit klappen.
    Mit dem Commandline "runas /user:Administrator explorer" geht es auf jeden fall dann.

    Siehe dazu auch diesen Link http://www.winfaq.de/faq_html/Conte…p?h=tip1246.htm
    Hier ist der Registrywet angegeben der dafür verantwortlich ist.
    Dies könntest du nutzen um im deinem Script den Wert zu setzen.
    Denn als "normaler" User kannst du diesen Wert nicht umstellen.

    LG
    Concara

    If not :?: then ?( else :thumbup:

  • Äh, sorry... Ja, XP. Vergessen mit anzugeben...
    Die Option ist bei und tatsächlich bereits so eingestellt, lässt sich aber auch vom User selber ändern, da der Key dazu sich ja auch unter HKCU befindet...

    Aber das hilft mir noch nicht weiter ?(

  • Sorry hab mich wohl nicht ganz verständlich ausgedrückt.
    Dieser Wert muss bei dem User gesetzt werden den du als Administrator angibst nicht bei dem User der gerade angemeldet ist.
    Also der Wert muss beim Administrator angegeben werden.
    Hmm dann kannst du es allerdings nicht mit einem Registry eintrag machen.
    Außer es kennt jemand einen Weg wie man unter Autoit einen HKCU Wert eines anderen Benutzers ändern kann.

    If not :?: then ?( else :thumbup:

  • Concara: Danke, du hast mir den entscheidenden Wink gegeben. Wenn die Option bei ausführenden User gesetzt sein muss, muss AutoIt das beim Ausführen auch wissen. Also muss ich doch das Profil mit laden.
    Heisst im Klartext dass ich das logon_flag im RunAs nicht auf '0' sondern auf '1' setze. Das hat geholfen... So einfach kann das sein.
    Vielen Dank an alle :rock:

  • Fein wenn es jetzt klappt.
    Das mit dem logon_flag wollt ich dir eigendlich auch noch schreiben.

    Du musst dann aber den Punkt "ordnerfenster in einem eigenen prozess starten" beim Administrator schon gesetzt haben?
    Machst du das manuell oder hast du ein Lösung so wie ojo geschrieben hat?

    LG
    Concara

    Ps.: Wenn deine Frage beantwortet ist kannst du es ja als geschlossen kennzeichnen.

    If not :?: then ?( else :thumbup:

  • Ich habe den Eintrag bereits im Default User so gesetzt. Das ist unser Trick ;)
    Den DefaultUser verteilen wir während den PC-Setups bereits mit auf die Geräte.
    Das Default-User -Verzeichnis wird einfach durch ein vorbereitetes ersetzt...