Autor Beitrag
Cypher2000
Hält's aus hier
Beiträge: 15

Win XP
Delphi 7
BeitragVerfasst: Mo 25.04.11 15:46 
Hallo liebes Delphi-Forum! :)

Ich habe eine Möglichkeit gesucht ein Programm direkt bei Start mit Adminrechten auszustatten und habe dies dann nach dieser Anleitung über ein Manifest umgesetzt: ruminatedrumblings.b...ta-uac-manifest.html
(Die XML Codes im Text funktionieren nicht, aber der im Kommentar tut es.)

Wenn ich das Manifest beim compilen weglasse ist alles normal. Wenn das Manifest jedoch dazugenommen wird dann funktioniert die UAC Abfrage zwar, aber nach dem Start des Programms werden die Label Felder farblich falsch dargestellt.

Als Beispiel habe ich ein Label "Test" bei dem "Color" (Hintergrundfarbe) auf "clRed" und "Font.Color" (Textfarbe) auf "clYellow" gesetzt ist. Demnach ist das ja gelber Text auf rotem Grund.
Nach Einbinden des Manifests ist der Text zwar immer noch gelb, aber der Hintergrund nicht mehr rot sondern hat die Fensterfarbe. So als währe "Color" wieder auf dem Standartwert. (Ist es aber natürlich nicht.)

Woran könnte das liegen und wie kann ich es beheben?

Vielen Dank! :)

PS: Ich habe über Google gefunden, dass Manifests irgendeine Art "Standartdesign" aktivieren oder so... Liegt das vielleicht daran? Und wie kann ich das dann beheben?

//edit:
Achso: Delphi 7 kommt zum Einsatz.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19322
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 25.04.11 16:51 
Mit dem Manifest sagst du Windows, dass deine Anwendung sich nahtlos in die eingestellte Windowsumgebung einfügen soll. Dazu gehören aber auch die vom Benutzer eingestellten Farben.

Wenn du diese ignorieren willst, musst du statt TLabel eben z.B. TStaticText benutzen oder das Label auf ein TPanel mit der entsprechenden Farbe setzen.

Nebenbei kannst du auch statt des Manifests deine eigene Exe mit ShellExecute und dem Verb runas ausführen. Das hat den Vorteil, dass du bei einem Fehlschlag dem Benutzer anzeigen kannst, dass deine Exe Adminrechte benötigt und vor allem den Grund dafür. Denn ohne triftigen Grund würde ich nie Adminrechte zulassen, sondern das Programm löschen.

Für diesen Beitrag haben gedankt: Cypher2000
Cypher2000 Threadstarter
Hält's aus hier
Beiträge: 15

Win XP
Delphi 7
BeitragVerfasst: Mo 25.04.11 17:55 
Danke für deine Antwort! Ich habe jetzt mal das Manifest durch dein vorgeschlagenes "runas" ersetzt und es scheint zu funktionieren. Vielen Dank dafür! :D

Nur ein Problem habe ich jetzt noch: Anscheinend hat das Programm jetzt Adminrechte ohne dass der UAC Prompt erscheint.
Vielleicht liegts auch an meiner Testweise...
Ich habe eine Datei namens "test.txt" in den "Programme (x86)" Ordner geschoben. Wenn ich die Datei per Explorer lösche (Rechtsklick -> Löschen) muss ich vorher mit UAC bestätigen, dass ich das auch wirklich machen will.
Wenn ich aber Testweise das Programm mit "runas" starte und über einen Testbutton "DeleteFile("[bla]/test.txt");" ausführe dann wird die Datei tatsächlich gelöscht ohne dass ich vorher über UAC irgendetwas bestätigen musste.
Werden vorherige UAC Bestätigungen sozusagen "gecached" oder warum geht das einfach so? Sonst wäre UAC selbst ja ziemlich sinnlos wenn man's einfach mit "runas" umgehen kann.

//edit:
Ok, tut mir leid. Ich hatte Delphi selbst mit Adminrechten ausgeführt und die sind natürlich gleich beim Ausführen auf das Programm übernommen worden.
Jetzt funktioniert alles wie es sein soll, vielen Dank! :)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19322
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 25.04.11 18:13 
user profile iconCypher2000 hat folgendes geschrieben Zum zitierten Posting springen:
Ich hatte Delphi selbst mit Adminrechten ausgeführt und die sind natürlich gleich beim Ausführen auf das Programm übernommen worden.
Das kann Probleme verursachen. Besser ist es Delphi 7 (laut deinem Profil) richtig einzurichten und ohne Adminrechte auszuführen...
www.delphi-library.d...ewtopic.php?p=544403

// EDIT:
Und nebenbei:
Was haben Dateien eigentlich im Ordner deines Programms zu suchen, die du mit dem Programm verändern willst? :shock:
Solche Dateien gehören z.B. ins Anwendungsdatenverzeichnis:
www.delphi-library.d...ewtopic.php?p=548600
Cypher2000 Threadstarter
Hält's aus hier
Beiträge: 15

Win XP
Delphi 7
BeitragVerfasst: Mo 25.04.11 18:31 
Delphi 7 lief nur für ein paar Stunden als Admin weil ich sonst ständig die UAC des Programms bei jeder kleinen Änderung bestätigen musste. Irgendwann habe ich das dann vergessen und so entstand dann das "seltsame Verhalten" von runas. ;)

Und keine Sorge, ich ändere nichts im Programmordner. Ich wollte nur austesten ob das mit den Adminrechten klappt und da boten sich die Ordner "Programme (x86)" und "Windows" an weil man in denen ja nur mit Adminrechten rumhantieren kann.


Im Grunde bin ich mir jetzt nicht einmal mehr sicher ob ich überhaupt Adminrechte brauche...
Naja aber zukünfig weiß ich aufjedenfall wie es jetzt geht.
Vielen Dank! :)