Entwickler-Ecke
Sonstiges (Delphi) - Keine Label-Farbe bei UAC Manifest
Cypher2000 - Mo 25.04.11 15:46
Titel: Keine Label-Farbe bei UAC Manifest
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:
http://ruminatedrumblings.blogspot.com/2008/03/vista-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 - 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.
Cypher2000 - 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 - Mo 25.04.11 18:13
Cypher2000 hat folgendes geschrieben : |
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...
http://www.delphi-library.de/viewtopic.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:
http://www.delphi-library.de/viewtopic.php?p=548600
Cypher2000 - 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! :)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!