Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Delphi Programm, das AdminRechte braucht unter Vista (https://www.delphipraxis.net/86441-delphi-programm-das-adminrechte-braucht-unter-vista.html)

Tom4321 14. Feb 2007 10:35


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:
<?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>
Im Projekt selber ist keine Manifest-Komponente eingebunden.

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??

Luckie 14. Feb 2007 10:41

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.

Tom4321 14. Feb 2007 10:46

Re: Delphi Programm, das AdminRechte braucht unter Vista
 
Leider nichts gefunden, oder bin ich zu blöd?? :gruebel:

Phoenix 14. Feb 2007 10:49

Re: Delphi Programm, das AdminRechte braucht unter Vista
 
Hier im Forum suchenRessourcen einbinden - liefert z.B. http://www.delphipraxis.net/internal...=478975#478975

Tom4321 14. Feb 2007 10:49

Re: Delphi Programm, das AdminRechte braucht unter Vista
 
Sorry, man sollte nich nach "Manifest einbinden" suchen :wall:

Tom4321 14. Feb 2007 11:07

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??

Tom4321 14. Feb 2007 12:02

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:

sh17 14. Feb 2007 12:07

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.

Phoenix 14. Feb 2007 12:23

Re: Delphi Programm, das AdminRechte braucht unter Vista
 
Schau mal in die PowerPoint-Slides von CodeGear zu dem Thema:

CodeX 23. Feb 2007 13:47

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:
<?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>
Inhalt der ExecutionLevelAdmin.rc:
Code:
1 24 "ExecutionLevelAdmin.manifest"
Die Automatische Umwandlung hat mit nachfolgender Zeile leider nicht funktioniert (es kam immer die Meldung beim Kompilieren "ExecutionLevelAdmin.res nicht gefunden")
Delphi-Quellcode:
{$R 'ExecutionLevelAdmin.res' 'ExecutionLevelAdmin.rc'}
Deshalb habe ich diese manuell mit
Code:
brcc32 ExecutionLevelAdmin.rc
umgewandelt.


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??

HeikoAdams 23. Feb 2007 14:53

Re: Delphi Programm, das AdminRechte braucht unter Vista
 
Zitat:

Zitat von CodeX
Geht das nicht irgendwie noch anders? Also eine einmalige Abfrage wäre ja noch OK, aber bei JEDEM Programmstart??

Also bei den manchmal sehr komischen Ansichtspunkten von Microsoft zum Thema Sicherheit würde es mich fast wundern, wenn es keine Möglichkeit gibt. Andererseits würden Sie damit ihr ach so tolles UAC ja adabsurdum führen und überflüssig machen. Gehe also vorsichtshalber mal davon aus, das es keinen (gewollten) Weg gibt.

Luckie 23. Feb 2007 15:04

Re: Delphi Programm, das AdminRechte braucht unter Vista
 
Schalt UAc ab. Könnte man es mit einem Programm umgehen, wäre es nutzlos.

CodeX 23. Feb 2007 15:11

Re: Delphi Programm, das AdminRechte braucht unter Vista
 
Es geht ja nicht um mich, sondern um die Leute, die meine Software verwenden sollen. Ich kann schlecht darauf bestehen, dass Sie deswegen auf UAC verzichten sollen.

"Umgehen" würde ich das ganze nicht nennen. Ich hätte es auch nicht ganz abwegig gefunden, wenn es eine Möglichkeit geben würde, seine Entscheidung ("Ja, erlauben") dauerhaft zu speichern (sofern sich die Datei nicht ändert). Wenn sich der User entschließt, dies zu tun, wurde ja nichts umgangen. Nun gut, sollte es eine solche Funktion nicht geben, ist das eine andere Sache.

Kann man hier etwas mit einem Service machen? Ich kenne mich mit dem Thema leider nicht aus, könnte mir aber vorstellen, dass man hier eventuell etwas machen könnte.

mkinzler 23. Feb 2007 15:12

Re: Delphi Programm, das AdminRechte braucht unter Vista
 
Du kannst höchstens den Vertrauensgrad deiner Anwendung erhöhen, in dem du eine Signatur anforderst oder diesen Trick verwndest (geht aber zum Glück nicht mehr lang) :zwinker:

Luckie 23. Feb 2007 15:21

Re: Delphi Programm, das AdminRechte braucht unter Vista
 
Gerade gefunden: http://blog.m-ri.de/index.php/2007/0...ttributesnull/

CodeX 23. Feb 2007 17:09

Re: Delphi Programm, das AdminRechte braucht unter Vista
 
Zitat:

Zitat von mkinzler
Du kannst höchstens den Vertrauensgrad deiner Anwendung erhöhen, in dem du eine Signatur anforderst oder diesen Trick verwndest (geht aber zum Glück nicht mehr lang) :zwinker:

Habe ich das richtig in Erinnerung, dass so eine Zertifizierung jedes Mal mit rund 300Euro zu Buche schlägt? Nicht sehr prickelnd ...
Der "Trick" macht die Meldung ja auch nicht wirklich weg. Umfärben ist ja keine Lösung.

Zitat:

Zitat von Luckie

Ich muss zugeben, ich habe leider nicht wirklich verstanden, was der Artikel letztendlich aussagt.
Zitat:

Zitat von Martin’s Blog
Also liebe Programmierer Gemeinde! Bitte die SECURITY_ATTRIBUTES richtig ausfüllen mit einer DACL die eben nicht mehr nur den lokalen Admin enthält. Diese bei CreateNamedPipe verwenden und dann kann das Programm auch normal mit asInvoker gestartet werden.
Ach ja! Und ehe ich es vergessen ein Empty DACL ist hier nicht im Sinne des Erfinders…

Ist das jetzt eine Lösung für das Problem? :cry:

Sko 23. Feb 2007 17:16

Re: Delphi Programm, das AdminRechte braucht unter Vista
 
Zitat:

Zitat von Luckie
Schalt UAc ab. Könnte man es mit einem Programm umgehen, wäre es nutzlos.

[wahrscheinlich_doch_aber_nicht_so_ganz_ot]
gestern bei heise
[/wahrscheinlich_doch_aber_nicht_so_ganz_ot]

CodeX 24. Feb 2007 01:47

Re: Delphi Programm, das AdminRechte braucht unter Vista
 
Zitat:

Zitat von CodeX
Zitat:

Zitat von Luckie

Ich muss zugeben, ich habe leider nicht wirklich verstanden, was der Artikel letztendlich aussagt.
[...]
Ist das jetzt eine Lösung für das Problem? :cry:

Auch wenn meine Frage banal klingt, würde mich über eine Antwort freuen.

Und um meine Idee mit dem Service nochmal aufzugreifen: Wäre die folgende Vorgehensweise möglich?
Bei der Installation wird nebst dem Programm noch ein Service installiert. Beim Starten des Programms wird geprüft, ob Administrator-Rechte vorhanden sind. Ist dies nicht der Fall, wird das dem Service mitgeteilt und das Programm beendet sich selbst. Der Service startet nun das Programm wieder. Das Programm hat nun die gleichen Rechte wie der Service. Es erfolgt keine UAC Abfrage. Meine Überlegungen setzen voraus, dass der Service bereits mit Administratorrechten läuft.
Wäre das so realisierbar?

Luckie 24. Feb 2007 02:57

Re: Delphi Programm, das AdminRechte braucht unter Vista
 
Zitat:

Zitat von CodeX
Zitat:

Zitat von Luckie

Ich muss zugeben, ich habe leider nicht wirklich verstanden, was der Artikel letztendlich aussagt.

Dann findest du hier http://www.michael-puff.de/Developer..._06/dacl.shtml erstmal Hintergrundinformationen. Und wenn du das verstanden hast, kannst du ja mal den Autor direkt selber fragen.

gsh 24. Feb 2007 11:04

Re: Delphi Programm, das AdminRechte braucht unter Vista
 
Zitat:

Zitat von CodeX
Und um meine Idee mit dem Service nochmal aufzugreifen: Wäre die folgende Vorgehensweise möglich?
Bei der Installation wird nebst dem Programm noch ein Service installiert. Beim Starten des Programms wird geprüft, ob Administrator-Rechte vorhanden sind. Ist dies nicht der Fall, wird das dem Service mitgeteilt und das Programm beendet sich selbst. Der Service startet nun das Programm wieder. Das Programm hat nun die gleichen Rechte wie der Service. Es erfolgt keine UAC Abfrage. Meine Überlegungen setzen voraus, dass der Service bereits mit Administratorrechten läuft.
Wäre das so realisierbar?

1. Ich würde glaub ich dein Programm gleich wieder deinstallieren wenn ich sehen würde das ein service mit installiert wird und das ohne einen trifftigen grund.
2. Lauft der Service unter dem SYSTEM konto (ist bei XP zumindest so und ich glaub nicht das sich das verändert hat) und wenn du jetzt aus einem service heraus das Programm startest dann läuft des auch unter dem SYSTEM konto und niemand würde deine Exe dann sehen da dein Programm dann keinen Zugriff auf den Desktop hat.
Du müsstest den Benutzernamen und das Passwort vom Benutzer kennen um ein Programm aus dem Service starten zu können das es der benutzer dann sieht und wenn du des auch noch beim setup fragst dann installier ich dein Prog gar nicht erst :zwinker:

DevidEspenschied 2. Mär 2007 12:25

Re: Delphi Programm, das AdminRechte braucht unter Vista
 
Zitat:

Zitat von CodeX
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]<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

...

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 ...

Ich habe ebenfalls versucht, meine Applikation Vista-tauglich zu machen (unter Delphi 2005 Pro). Das funktioniert auch einwandfrei, aber nur dann, wenn ich die Applikation nicht aus Delphi heraus starte.

Starte ich die Applikation bspw. über den Explorer, kommt das Fenster mit der Zustimmung des Administrators. Starte ich sie jedoch aus Delphi heraus, scheint Delphi anscheinend ein Problem mit dem sicheren Desktop zu haben, der für die Admin-Abfrage von Vista über den regulären Desktop geblendet wird. Delphi wartet demzufolge auf die Abfrage von sicheren Desktop, den ich aber nirgens erreichen kann. Kann das jemand nachvollziehen ? Tritt das Problem bei Delphi 2006 auch auf ?

Falls ich keine Lösung finde, hilft wohl nur Delphi 2007 mit Vista Support weiter.

CodeX 2. Mär 2007 16:36

Re: Delphi Programm, das AdminRechte braucht unter Vista
 
Ich entwickle unter XP und habe keine Probleme mit der neu eingebundenen manifest Datei. Läuft auch aus Delphi heraus ohne Probleme. Wenn ich Deinen Text aber richtig gedeutet habe, Läuft Dein Delphi aber direkt unter Vista.

Trotzdem noch zwei Hinweise von mir zum Thema "Vista-Manifest".
1. Irgendwo weiter oben stand eine Anleitung mit einer "Programm.exe.manifest" Datei. Diese Lösung ist nicht praktikabel, da diese Datei ja dann nicht eingebunden wird, sondern extra mitgeliefert werden muss.
2. Der Code aus der PP-Präsentation beinhaltet nicht das "Aussehen" des OS. Ich habe die WindowsXP Manifest-Datei deshalb als grundlage genommen und hier nur noch den Teil mit den Rechtezuweisungen ergänzt. Damit sieht das Programm immer entsprechend des Betriebssystems (2000, XP, Vista) aus und erfüllt die notwendigen Voraussetzungen für Vista.

DevidEspenschied 2. Mär 2007 18:26

Re: Delphi Programm, das AdminRechte braucht unter Vista
 
Zitat:

Zitat von CodeX
Wenn ich Deinen Text aber richtig gedeutet habe, Läuft Dein Delphi aber direkt unter Vista.

Ja, und ich genau hier liegt das Problem. Delphi 2005 und vielleicht auch Delphi 2006 scheinen mit dem sicheren Desktop einige Probleme zu haben, so dass hier wirklich nur das Warten auf Delphi 2007 hilft. Mein Ziel ist es ebenfalls, die Manifest-Datei direkt ins EXE-File einzubinden, und nicht eine separate Manifest-Datei mitliefern zu müssen.

Zitat:

Zitat von CodeX
Der Code aus der PP-Präsentation beinhaltet nicht das "Aussehen" des OS. Ich habe die WindowsXP Manifest-Datei deshalb als grundlage genommen und hier nur noch den Teil mit den Rechtezuweisungen ergänzt. Damit sieht das Programm immer entsprechend des Betriebssystems (2000, XP, Vista) aus und erfüllt die notwendigen Voraussetzungen für Vista.

Dieser Absatz ist vielleicht noch etwas erklärungsbedürftig. Ich habe die gleiche PP-Vorlage genommen (nur eben aus Invoker den Administrator gemacht), und es funktioniert unter Vista. Der Nachteil ist, dass sie als vorliegende RES-Datei natürlich auch unter XP eingebunden wird, und sich dadurch seltsame Nebeneffekte einstellen. So sehen bspw. die Schalter vom Typ TButton anders aus, und ich kann bspw. bei einem StaticText nicht mehr die Farbe ändern.

Besteht vielleicht die Möglichkeit, dass Du Deine funktionierende Manifest-Datei hier nochmal komplett reinsetzt bzw. sie mir per EMail bzw. PN schickst. Das wäre wirklich eine große Hilfe.

Danke schonmal im voraus,

Devid

CodeX 2. Mär 2007 19:15

Re: Delphi Programm, das AdminRechte braucht unter Vista
 
Aber sicher doch.

ExecutionLevelAdmin.manifest
XML-Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">

<assemblyIdentity
    name="PROGRAMMNAME"
    processorArchitecture="*"
    version="1.0.0.0"
    type="win32"/>

<description>Windows Shell</description>

<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="x86"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        />
    </dependentAssembly>
</dependency>


  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="requireAdministrator"/>
      </requestedPrivileges>
    </security>
  </trustInfo>

</assembly>
ExecutionLevelAdmin.rc
Code:
1 24 "ExecutionLevelAdmin.manifest"
Da das Einbinden als
Delphi-Quellcode:
{$R 'ExecutionLevelAdmin.res' 'ExecutionLevelAdmin.rc'}
nicht zwingend funktionieren muss (tut es zumindest bei mir nicht),

einfach umwandeln in ExecutionLevelAdmin.res mit der Kommandozeile
Code:
brcc32 ExecutionLevelAdmin.rc

hoika 2. Mär 2007 20:17

Re: Delphi Programm, das AdminRechte braucht unter Vista
 
Hallo,

eine prinzipielle Frage,
wozu braucht dein Programm Admin-Rechte ?

Per Service geht es auf jeden Fall.
Ich schlage mich auch gerade damit rum
(automatische Programmupdate)

Willkommen im Club.


Heiko

CodeX 4. Mär 2007 23:30

Re: Delphi Programm, das AdminRechte braucht unter Vista
 
Zitat:

Zitat von hoika
eine prinzipielle Frage,
wozu braucht dein Programm Admin-Rechte ?

Per Service geht es auf jeden Fall.
Ich schlage mich auch gerade damit rum
(automatische Programmupdate)

Ich verwende einige hardwarenahe Funktionen aus der WMI, die eben nur mit ausreichend Rechten durchgeführt werden können.

Hm, oben wurde geschrieben, dass das mit dem Service so nicht geht; Du schreibst, dass das funktioniert.
Also mein Gefühl sagte mir ja auch, dass das nur so gehen könnte.

Ich werde es wohl einfach mal selbst ausprobieren. Ich hoffe das ist nicht allzu schwer zu realisieren.
Bin momentan leider mit anderen Dingen voll ausgelastet und weiß nicht, wann ich endlich Zeit dafür finden werde.

Wenn Du (positive) Erfahrungen gemacht hast, kannst Du gerne Bescheid geben, was Du genau getan hast. Code(schnippsel) wären natürlich ideal. Ansonsten Good Luck bei dem Thema :)

DevidEspenschied 5. Mär 2007 12:18

Re: Delphi Programm, das AdminRechte braucht unter Vista
 
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:

Zitat von devidespe
Der Nachteil ist, dass sie als vorliegende RES-Datei natürlich auch unter XP eingebunden wird, und sich dadurch seltsame Nebeneffekte einstellen. So sehen bspw. die Schalter vom Typ TButton anders aus, und ich kann bspw. bei einem StaticText nicht mehr die Farbe ändern.

@CodeX: Hast Du diesen Effekt unter Windows XP auch nachvollziehen können ? Das wäre zurzeit noch mein einziges Problem. Andersfarbige Schalter im 3D-Effekt und nicht veränderbare Farben eines TStaticTextes (siehe Attachments zu diesem Post).

Vielleicht liegts an Delphi 2005, kann ich mir aber nicht vorstellen. da Deine Signatur aussagt, dass Du Delphi 2006 einsetzt, wäre es eine große Hilfe, wenn Du das unter XP mal bestätigen könntest.

Danke schonmal für Deine Hilfe,

Devid

MuTzE 21. Jan 2008 19:05

Re: Delphi Programm, das AdminRechte braucht unter Vista
 
Hi, habe ebenfalls versucht es in meine Anwendung einzubinden. Das tut er auch, nur wird es nicht als Admin gestartet. Kann mir wer helfen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:24 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