![]() |
Delphi Programm, das AdminRechte braucht unter Vista
Hallo Leute,
also ich habe mich jetzt schon durch die Suche "gecrawlt" aber leider nichts wirklich passendes gefunden :? Also folgendes Problem: Ich habe eine Applikation die Adminrechte braucht. Unter XP kein Problem. Unter Vista allerdings dank UAC schon. Das Programm aus dem Installer laufen lassen funtioniert ohne Probleme, beim zweiten Start funktioniert es nicht mehr richtig. Starte ich das Programm dann über das Kontextmenü als Admin, läuft es wieder wunderbar. Also war meine Idee dem programm fix mitzugeben das es mit Adminrechten startet, sollte ja über eine Manifestdatei nicht das Problem sein. Also habe ich (wie im Forum beschrieben) der Exe per Installer eine Manifestdatei (die heisst wie die .EXE plus .manifest) dazukopiert. Sie sieht folgendermassen aus:
Delphi-Quellcode:
Im Projekt selber ist keine Manifest-Komponente eingebunden.
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft.com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="Meine Programname" type="win32"/> <description>Meine Programmbeschreibung</description> <trustInfo xmlns="urn:schemas-microsoft.com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo> </assembly> Tja und was passiert? Gar nichts. Das Programm startet unter Vista beim zweiten Start wieder mit Userrechten (sprich es kommt keine UAC-Abfrage) und geht nicht. Was mache ich falsch? Ich habe im Forum gelesen, das man solche Manifestdateien auch in die .Exe einbinden kann, aber wie? Theoretisch wäre mir lieber die Datei extra dazuzuliefern. Wer kann helfen?? |
Re: Delphi Programm, das AdminRechte braucht unter Vista
Versuch mal das Manifest als Ressource in die Exe einzubinden. Wie das geht, sollte hier im Forum zu finden sein.
|
Re: Delphi Programm, das AdminRechte braucht unter Vista
Leider nichts gefunden, oder bin ich zu blöd?? :gruebel:
|
Re: Delphi Programm, das AdminRechte braucht unter Vista
|
Re: Delphi Programm, das AdminRechte braucht unter Vista
Sorry, man sollte nich nach "Manifest einbinden" suchen :wall:
|
Re: Delphi Programm, das AdminRechte braucht unter Vista
Also leider wieder kein Erfolg. Ich bin wie folgt vorgegangen:
1. Manifest als Textfile im gleichen Folder wie die Exe abspeichern. 2. Mit einem Texteditor einen xyz.rc-File erstellen. Inhalt: Manifest RT_MANIFEST "Demo.exe.manifest" 3. Eine xyz.bat-Datei erstellet. Inhalt: brcc32 xyz.rc 4. Einen Doppelklick auf diese .bat-Datei. 5. Diese xyz.Res-Datei wie folgt in der .dpr vor begin eingetragen. {$R xyz.res} Ergebnis: Gar keines, es ist wie vorher. Sieht jemand meinen Fehler?? |
Re: Delphi Programm, das AdminRechte braucht unter Vista
So kleines Update: Habe mal mit dem PE Builder in die Exe reibgeschaut und das Manifest File wird eingebunden, nur leider ohne jegliches Ergebnis?! :gruebel:
|
Re: Delphi Programm, das AdminRechte braucht unter Vista
Ich hatte vor einer Weile auch mal damit rumgetestet, bin aber grad nicht an einem Vista-Rechner.
Lass mal probehalber uiAccess weg, damit der Defaultwert genommen wird (der ist, glaub ich aber false) Ich schau dann noch mal nach. |
Re: Delphi Programm, das AdminRechte braucht unter Vista
Schau mal in die
![]() |
Re: Delphi Programm, das AdminRechte braucht unter Vista
Ich habe jetzt auch mit diesem Thema zu kämpfen ... bisher erfolglos.
Ich habe die Anleitung von CodeGear (aus der im Post vorher verlinkten PP Präsentation) Schritt für Schritt befolgt. Leider bekomme ich beim Ausführen der Exe die Meldung "Diese Anwendung konnte nicht gestartet werden, weil die Anwendungskonfiguration nicht korrekt ist. Zur Problembehandlung sollten Sie die Anwendung neu installieren." Der Inhalt der ExecutionLevelAdmin.manifest (abgetippt, aber mehrmals kontrolliert. Vllt ist ja trotzdem ein Typo drin)
XML-Code:
Inhalt der ExecutionLevelAdmin.rc:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft.com:asm.v1" manifestVersion="1.0"> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="x86" /> </dependentAssembly> </dependency> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPriviledges> <requestedExecutionLevel level="requireAdministrator"/> </requestedPrivileges> </security> </trustInfo> </assembly>
Code:
Die Automatische Umwandlung hat mit nachfolgender Zeile leider nicht funktioniert (es kam immer die Meldung beim Kompilieren "ExecutionLevelAdmin.res nicht gefunden")
1 24 "ExecutionLevelAdmin.manifest"
Delphi-Quellcode:
Deshalb habe ich diese manuell mit
{$R 'ExecutionLevelAdmin.res' 'ExecutionLevelAdmin.rc'}
Code:
umgewandelt.
brcc32 ExecutionLevelAdmin.rc
So und nun stehe ich mit ganz oben angemerkter Fehlermeldung da und weiß nicht weiter. Kann mir da jetzt helfen? EDIT: So ein Mist! Warum sieht man die Fehler erst nachdem man nachfragt, weil man zuvor Stunden damit verbracht hat, vergeblich rumzuprobieren? Bei "requestedPriviledges" ist natürlich ein "d" zuviel. Und schon geht das ganze ... Aber glücklich bin ich mit der Lösung dann doch nicht wirklich. Es kommt ja jetzt beim Start immer eine UAC Meldung, die man bestätigen muss. Geht das nicht irgendwie noch anders? Also eine einmalige Abfrage wäre ja noch OK, aber bei JEDEM Programmstart?? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz