Hallo zusammen,
nennt mich zu dämlich die SuFu hier und von Google zu benutzen, aber vielleicht bin ich mit den Stichwörtern "Admin(istrator) Kontext" ja eh auf dem Holzweg.
Bisher habe ich die
UAC immer umgangen, indem ich sie bei mir deaktiviert und beim Kunden alles als Administrator installiert (nicht dauerhaft ausgeführt) habe. Ich möchte mich jetzt jedoch mal ernsthaft mit dem Thema beschäftigen und habe noch einige Probleme/Fragen:
Beispiel Domäne (Benutzer ohne Rechte, Admin ist anderer Account)
Mein NSIS Installer fordert vom Benutzer explizit Admin-Rechte (Zugangsdaten) an und jodelt alles durch. Zum Abschluss wird mein Programm gestartet (asInvoker, also immer noch im Admin Kontext).
Wenn ich jetzt in die Registry nach
HKCU schreibe, geht das (logischerweise) in die Registry vom Administrator, nicht von dem Benutzer, der den Installer gestartet hat. Damit kann man leben.
Das Problem ist allerding, dass ich nun (beim ersten Start) keinen Zugriff auf die Datenbank (Dateibasiert) habe, die auf den Netzlaufwerk liegt, das der Benutzer verbunden hat. Ich müsste also vor der Installation den Computer oder Windows-Explorer (Run-As) als "Administrator" anmelden und dann dort ebenfalls das Netzlaufwerk verbinden, damit ich während/nach der Installation auf die Datenbank zugreifen kann. Geht ja auch noch so...
Aber jetzt wird's kompliziert, und das haben manche von Euch bestimmt auch schon erlebt: Man lädt einen Installer herunter (Benutzer ohne Admin-Rechte), führt ihn aus, gibt Zugangsdaten für einen Admin-Account ein, und dann kommt die Fehlermeldung nach dem Motto "Datei existiert nicht", da der Administrator-Account nicht auf den Desktop des Benutzers zugreifen kann. Direkt nach Laufwerk C: oder ähneliches kann der Benutzer die Datei nicht "zwischenspeichern", also muss man den Umweg über "Gemeinsame Dokumente" o.ä. gehen. Zum heulen.
Auch gibt es auf meinem Laptop hier nur (m)einen Benutzer. Delphi 2007 starte ich aktuell ohne Administrator-Rechte, da seit dem Wiederanschalten der
UAC mein substituiertes Laufwerk beim Starten von Delphi
mit Administrator-Rechten nicht mehr verfügbar ist (Laufwerk E:\ wird simuliert für z.B. einen Ordner C:\Quellcodes\Delphi\2011\Projekte\Aktuell\blabla ). Welches Kontext oder welches Profile ist das denn nun schon wieder? Wenn ich auf den Windows-Explorer Rechte Maustaste --> Als Administrator ausführen mache, ist Laufwerk E: ganz normal verfügbar. Warum in Delphi nicht?
Ich befürchte ihr werdet mir bestätigen, dass es
nicht möglich ist, ein Programm (z.B. Windows Explorer) einfach mit Administrator-Rechten (von einem anderen Benutzer, über RunAs) so auszuführen, dass trotzdem noch
meine Eigenen Dateien, Netzlaufwerke und substituierte Ordner angezeigt werden.
Wie fahre ich denn nun fort? Soll ich den Kunden einen Handzettel mitgeben auf dem steht "Vor der Installation verbinden Sie bitte bei Ihrem Administrator-Account alle Netzlaufwerke so wie bei ihrem Benutzer!" oder "Starten Sie den Installer niemals von einem Netzlaufwerk, einem substituierten Ordner, Ihrem Desktop oder ihren Eigenen Dateien und Downloads, da sonst das Setup nicht ausgeführt werden kann!"?
Mal im Ernst, es muss doch möglich sein, dass ich einerseits Schreibrechte auf die Registry (
HKLM) habe und andererseits auf das Netzlaufwerk das der Benutzer gerade verbunden hat.
Wie bekomme ich mein Delphi 2007 im Administrator-Modus und Windows XP SP3 Kompatibilität dazu, dass es mir mein Laufwerk E: wieder anzeigt? Was ist an dem
UAC-Administrator anders, als an dem Administrator, wenn die
UAC aus ist?
Wie ermittle ich den Kontext, die SID oder was auch immer, damit ich im Windows-Explorer die Ansicht so nachstellen kann, wie Sie Delphi 2007 im Adminmodus mit
UAC darstellt (also ohne Laufwerk E: und die Netzlaufwerke)?
Fragen über Fragen.
Schon für kleine Denkanstöße bin ich wie immer dankbar.