Einzelnen Beitrag anzeigen

Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#1

Explorer und CreateProcessWithLogon

  Alt 5. Apr 2006, 19:26
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?
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat