Seite 1 von 2

Setup/Admin/Benutzerrechte

Verfasst: 14.04.2011 04:26
von purebas
Ich habe ein kleines Setup gebaut, welches mit Adminrechten ausgeführt werden muss.
Klappt auch alles prima. Allerdings habe ich im Abschlußfenster einen Link auf eine
Internetseite genagelt. Wenn der Anwender drauf klickt und noch keine Browser-Instance läuft,
dann wird der Browser mit Adminrechten hochgefahren. Wie kann der Browser aus dem Setup
heraus ohne Adminrechte gestartet werden? Das ganze soll auch noch unter XP funktionieren.

Re: Setup/Admin/Benutzerrechte

Verfasst: 14.04.2011 05:25
von ts-soft
Erst ein Steuerprogram ohne Adminrechte starten, also mit manifest für user.
(Diese manifest ist sehr wichtig, da Vista oder 7 ansonsten im Kompatibilitäts-
modus verfällt und das Steuerprogramm dann trotzdem Adminrechte anfordert.)
Dieses entpackt dann das eigentliche Setup mit manifest für Admin, sowie die
weiteren Dateien in einem Unterverzeichnis von temp. Dann Setup starten
und warten bis beendet, dann temp aufräumen und URL aufrufen (vom Steuerprogram
ohne Adminrechte).

Anders wird es kaum gehen, da die Adminrechte vererbt werden, was sich nur
schwerlich durch COM verhindern läßt.

Re: Setup/Admin/Benutzerrechte

Verfasst: 14.04.2011 20:39
von purebas
Den Ansatz habe ich verstanden. Danke!

Aber so ganz habe ich das mit der UAC-Virtualisierung noch nicht verstanden.

Ich der Pure-Hilfe steht:

User-Modus für Windows Vista anfordern
Diese Option deaktiviert für dieses Executable das "Virtualisierungs"-Feature auf Windows Vista. Virtualisierung veranlasst die Umleitung von Datei- und Registry-Zugriffen auf einen speziellen Anwender-Ordner, wenn der Anwender nicht die benötigten Rechten für das Ausführen der Operation hat. (Dies erfolgt zwecks Kompatibilität mit älteren Programmen.)

Das hört sich doch eher so an, als ob man diese Einstellung meiden sollte.
Oder ist die Compiler-Einstellung "User-Modus" zu dem "User-Manifest" etwas anderes?

Was mir einleuchten würde ist, wenn ich in den Compiler-Einstellungen weder den User noch den Adminmodus aktiviere. Wenn ich dann ein weiteres Programm mit Adminmodus starte, könnte ich Deinen Vorschlag doch so umsetzen, wie Du es erklärt hast. Wenn das Steuerprogramm im User-Modus läuft, dann läuft es ja im Kompatibilitätsmodus. Oder???

Re: Setup/Admin/Benutzerrechte

Verfasst: 14.04.2011 23:00
von ts-soft
purebas hat geschrieben: User-Modus für Windows Vista anfordern
Diese Option deaktiviert für dieses Executable das "Virtualisierungs"-Feature auf Windows Vista. Virtualisierung veranlasst die Umleitung von Datei- und Registry-Zugriffen auf einen speziellen Anwender-Ordner, wenn der Anwender nicht die benötigten Rechten für das Ausführen der Operation hat. (Dies erfolgt zwecks Kompatibilität mit älteren Programmen.)

Das hört sich doch eher so an, als ob man diese Einstellung meiden sollte.
Nein, das wird in diesem Falle nicht funktionieren. Wenn keine Manifest vorhanden, geht Vista oder 7 davon aus, das Du
Admin-Rechte benötigst, wenn der Programmname auch nur Ähnlichkeit zu Setup hat, bzw. sich so verhält. Es popt also
UAC auf, was wir nicht möchten.
Durch die Anforderung des UserModus, kommt Vista nicht aus versehen auf die Idee, wir könnten doch Adminrechte
brauchen, fordern die bloß nicht an, weil das in XP ja auch nicht nötig war.

Re: Setup/Admin/Benutzerrechte

Verfasst: 15.04.2011 14:33
von purebas
Wenn ich im Taskmanager die Spalte "UAC Virtualization" anschaue,
dann steht dort bei Programmen ohne User- oder Admin-Manifest ein "Enabled".
Ab Vista ist es gewünscht, dass dort "Disabled" steht, da durch das Programm
(durch das Manifest) signalisiert werden sollte, ob nun User- oder Adminrechte
genügen bzw. benötigt werden. Habe ich das richtig verstanden?

Das Admin-Manifest nimmt man dann immer her, damit Programme in geschützte
Bereiche von Festplatte und Registry zu schreiben oder Treiber zu installieren.

Ansonsten immer das User-Manifest nehmen?

Alles richtig so?

Re: Setup/Admin/Benutzerrechte

Verfasst: 15.04.2011 16:00
von ts-soft
Genau richtig so.
Ich fordere bei allen normalen Anwendungen den UserModus an, weil für Fehler, die durch eine Virtualisierung entstehen sind kaum
nachvollziebar und machen den Support eines Programms fast unmöglich. Dies macht es natürlich erforderlich, das Programm auch
Vista konform zu programmieren. Wenn jemand kein Vista oder 7 zur Verfügung hat, bzw. die neuen Einschränkungen nicht kennt,
der sollte dann nur die XP-Manifest hinzufügen und nichts anderes, oder besser diese erlernen und sich entsprechendes OS zum
testen besorgen.

Re: Setup/Admin/Benutzerrechte

Verfasst: 15.04.2011 16:58
von purebas
ts-soft hat geschrieben:Dies macht es natürlich erforderlich, das Programm auch Vista konform zu programmieren.
Welche "schlimmsten" Fehler kann man für "V7" programmieren im Vergleich zu XP?

-

Hat der durch UAC gestartete Adminaccount immer Vollzugriff auf alle Bereiche der Festplatte?
Oder gibt es standardmäßig einen "rechtefreien" Austauschordner unter V7?

Re: Setup/Admin/Benutzerrechte

Verfasst: 15.04.2011 17:34
von ts-soft
purebas hat geschrieben:Welche "schlimmsten" Fehler kann man für "V7" programmieren im Vergleich zu XP?
Das schreiben in den Programm-Ordner z.B.
Wenn Du Deine schreibvorgänge überprüfst, merkst Du ja wenn die Rechte fehlen. Anders ist es, wenn
Du den UserModus nicht anforderst, dann schreibst Du unbemerkt in eine virtuelle Datei und das OS
meldet Dir, es wäre alles in Ordnung. Das geht so lange gut, wie Du nicht mit einem Fremdprogramm auf
diese Datei zugreifst, welches nicht virtualisiert wird. Dann fehlen da plötzlich Einträge, da diese ja nur in dem
virtuellem Clone geschrieben wurden.

Nur mit einer Vista konformen Manifest kannst Du die Rückgaben Deiner schreibvorgänge sicher überprüfen,
deshalb kann ich nur abraten, diese Manifest wegzulassen. Natürlich sollte man nicht Vista konformen
programmen auch keine Manifest nachträglich aufdrücken, die würden dann ggffls. nicht mehr funktionieren.

Re: Setup/Admin/Benutzerrechte

Verfasst: 17.04.2011 03:20
von purebas
Ich habe ein Programm mit User-Manifest gemacht und rufe ein Admin-Programm mit "runprogram" auf.
Es passiert jedoch überhaupt garnichts. Wenn ich das User-Manifest rausnehme, dann funktionierts wie gewünscht/gedacht.
Woran kann das liegen? Kannst du mir ein Buch empfehlen, wo ich nachlesen kann, welche Dinge man beachten muss, damit es V7 fähig ist?

Re: Setup/Admin/Benutzerrechte

Verfasst: 17.04.2011 12:50
von purebas
Das letzte Problem habe ich lösen können indem ich statt - runprogram - die API shellexecute() genommen habe.
Komisch... Naja, ich möchte mich aber nicht daran aufhalten...

Ich habe aber noch eine theoretische Frage zum Thema.

Wenn ich ein User-Programm (also Programm mit User-Manifest) habe und zwischendurch beispielsweise einen Schreibzugriff auf den Registrybereich "HKLM" machen möchte, um beispielsweise geänderte Programmeinstellungen zu speichern, dann müsste ich aus dem User-Programm ein entsprechendes Admin-Programm starten, was die UAC-Bestätigung hochbringt und dadurch berechtigt wird in HKLM zu schreiben. Wie bekommt das aufrufende User-Programm mit, dass die Registryeinträge fertig geschrieben wurden? Oder müssen die User-Programme besser so programmiert werden, dass nur am Ende der Benutzerinteraktion ein Admin-Programm gestartet werden sollte? Wie realisiert man am besten eine Fehlerrückmeldung einer Admin-Anwendung an das User-Programm?