So, nachdem mir Luckie schon
in diesem Thread gesagt hat, dass er auch schon vergeblich probiert hat, mit
CreateProcessWithLogon einen Ordner im Explorer zu öffnen, frage ich hier nochmal danach.
Hintergrund ist folgender: Ich schreibe ein Programm, in dem es u.a. die Möglichkeit geben soll, Arbeitsplatz und Systemsteuerung oder auch die Laufwerke im Explorer mit den rechten eines anderen Benutzers (vor allem des Administrators) zu öffnen.
Der Arbeistplatz kann ganz einfach angezeigt werden:
Code:
C:\WINDOWS\explorer ::{20D04FE0-3AEA-1069-A2D8-08002B30309D}
Das funktioniert sowohl bei Start->Ausführen (was wohl mit ShellExecute arbeitet) als auch bei Process.Start im .NET-Framework 1.1. Es genügt bei beiden sogar, die
CLSID anzugeben bzw. das Verzeichnis, ohne Angabe des Explorers.
Nun könnte man denken, dass ein Process.Start an einer Stelle, in der man das aktuelle Programm in den Administrator-Kontext (mittels ImpersonateUser) ungeschaltet hat, Prozesse auch in diesem Kontext gestartet werden würde.
Leider funktioniert Windows nicht so, wie ich feststellen musste.
Also bleibt die Möglichkeit, auf
CreateProcessWithLogon auszuweichen. Doch dort erscheint kein Explorer-Fenster, wenn er gestartet wird!
Nun steh ich vor dem Dilemma, dass ich kaum noch eine Idee mehr hab, wie ich das was ich will realisieren kann.
Ich könnte noch anstelle von
CreateProcessWithLogon CreateProcessWithToken oder
CreateProcessAsUser probieren, aber ich bezweifle, dass die sich anders verhalten.
Hat einer eine Idee, was ich noch tun kann oder weiß jemand, warum sich der Explorer nicht via
CreateProcessWithLogon öffnen lässt?