Setup/Admin/Benutzerrechte
Setup/Admin/Benutzerrechte
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.
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.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Setup/Admin/Benutzerrechte
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.
(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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Setup/Admin/Benutzerrechte
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???
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???
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Setup/Admin/Benutzerrechte
Nein, das wird in diesem Falle nicht funktionieren. Wenn keine Manifest vorhanden, geht Vista oder 7 davon aus, das Dupurebas 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.
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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Setup/Admin/Benutzerrechte
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?
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?
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Setup/Admin/Benutzerrechte
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.
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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Setup/Admin/Benutzerrechte
Welche "schlimmsten" Fehler kann man für "V7" programmieren im Vergleich zu XP?ts-soft hat geschrieben:Dies macht es natürlich erforderlich, das Programm auch Vista konform zu programmieren.
-
Hat der durch UAC gestartete Adminaccount immer Vollzugriff auf alle Bereiche der Festplatte?
Oder gibt es standardmäßig einen "rechtefreien" Austauschordner unter V7?
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Setup/Admin/Benutzerrechte
Das schreiben in den Programm-Ordner z.B.purebas hat geschrieben:Welche "schlimmsten" Fehler kann man für "V7" programmieren im Vergleich zu XP?
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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Setup/Admin/Benutzerrechte
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?
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
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?
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?