Ordner im Explorer öffnen

  • Hallo zusammen,

    ich habe ein großes Problem! Ich habe ein Programm geschieben, daß nach bestimmten Kriterien nach Ordnern sucht und dann in ein Listenfeld einträgt. Wenn nun eine Zeile der Liste markiert wird, soll beim Klick auf einen Button der entsprechende Ordner geöffnet werden, so als ob man im "Ausführen" Dialog den Ordner eingibt. Ich verwende den Befehl

    [autoit]

    Run ("explorer.exe " & $file,"")

    [/autoit]

    Das Problem: Diese Netzwerkordner sollen unter einem anderen Benutzer geöffnet werden. Also habe ich mir gedacht, man muß die exe von meinem Programm nur mit "Ausführen als..." als anderer Nutzer starten, der Leserechte im entsprechenden Ordner hat. Geht aber nicht :( Es öffnet sich einfach kein Fenster.

    Wie kann ich das hinbekommen???

  • Fast. Der User markiert den Ordnereintrag in der Liste und klickt auf einen Button. Dann soll der Ordner geöffnet werden. Den Befehl RunAsSet habe ich schon probiert, aber das geht auch nicht.
    Es gibt wohl eine Besonderheit beim explorer.exe: Auch wenn ich cmd.exe mit "Ausführen als" starte und dann den Netzordner öffnen möchte (explorer.exe \\server1\test), geht das nicht. Irgendwie scheint der mit den Rechten nicht zurecht zu kommen.
    Habe auch schon mal mit MapAddDrive herumgespielt, um das Laufwerk zu mappen (wenn es geht ohne Buchstabe) und zu öffnen. War aber auch nicht von Erfolg gekrönt :(

  • Ich zeig es mal an einem Beispiel:

    [autoit]

    $target = "X:\Programmieren\AutoIt"

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

    Run(@WindowsDir & "\explorer.exe " & $target)

    [/autoit]
    • Offizieller Beitrag

    Vielleicht hilft das:

    Zitat

    Startparameter für den Windows-Explorer

    Mit Hilfe von Startparametern können Sie das Startfenster des Explorers individuell anpassen. Klicken Sie dazu auf "Start | Ausführen" und geben Sie in der Befehlszeile den gewünschten Befehl ein. Die Eingabe bestätigen Sie mit "OK". Wollen Sie den Explorer öfter mit bestimmten Parametern starten, empfiehlt es sich, eine Verknüpfung auf dem Desktop anzulegen und deren "Eigenschaften" zu verändern. Die entscheidende Zeile finden Sie im Register "Verknüpfung" unter der Bezeichnung "Ziel".

    Die Syntax des Explorer-Aufrufs lautet "Explorer [/e[,Verzeichnis]] [/n] [/root,Objekt] [[/select],Unterobjekt]". Wird kein Parameter angegeben, so startet der Explorer mit einem geteilten Fenster im Hauptverzeichnis "C:\". Der Parameter "/e,[Verzeichnis]" startet den Explorer mit einem geteilten Fenster im angegebenen Verzeichnis, "/n" startet ihn in einem ungeteilten Fenster ohne Baumstruktur.

    Der Parameter "/root"Verzeichnis" oder "/root,\\Servername\Verzeichnis" öffnet ein Arbeitsplatz-Fenster für das entsprechende Verzeichnis, wobei das angegebene Verzeichnis die höchste erreichbare Ebene der Verzeichnisstruktur darstellt. Lautet der Aufruf "Explorer /root"" - also ohne Angabe eines Verzeichnisnamens - öffnet sich ein Fenster mit dem Inhalt des Desktops. Der Parameter "/select,[Verzeichnis]" markiert das benannte Verzeichnis in der linken Fensterhälfte des Explorers.

  • Ich weiß nicht wie bei euch folgendes funktioniert:

    [autoit]

    Run("explorer.exe")

    [/autoit]

    da denkt meiner explorer.exe wär im Script-Verzeichnis deshalb steuer ich den Explorer mit @WindowsDir an

  • Startet die Explorer.exe für Taskleiste etc wenn die aber schon vorhanden ist den Explorer ;)

  • Danke für die Hilfe, aber das löst das Problem leider nicht.
    Mein Fehler war nicht im Aufruf der explorer.exe, sondern in der Explorer.exe selbst. Leider hat Microsoft nur eine explorer.exe, die sowohl die Startleiste als auch den Dateimanager enthält. Die explorer.exe wird gleich beim Windowsstart geladen und kann nicht unter einem anderen Benutzerkonto gestartet werden. Das war für mein Programm aber erforderlich.

    Ich habe folgende Lösung gefunden: Der Internetexplorer kann auch die Funktion des Windows Explorers übernehmen, doch im Gegensatz zu selbigem startet der IE immer in einem eigenen Prozeß und kann problemlos unter einem anderen Benutzerkonto gestartet werden.