Entwickeln von Apps mit Administratorrechten in Delphi

7

Ich benutze D2010 unter Windows 7, um eine App zu schreiben, die Admin-Rechte zu benötigen scheint (ich denke, weil es COM verwendet, um mit einer .exe-Datei von Drittanbietern zu kommunizieren, die auch Admin-Rechte erfordert).

Ich habe die Manifest-Ressource nach Bedarf hinzugefügt, aber wenn ich versuche, die App über die IDE zu debuggen, meldet sie

  

"Prozess konnte nicht erstellt werden   angeforderte Operation erfordert   Höhe "

... und es wird nicht laufen. Wenn ich Delphi als Administrator ausführe, dann läuft meine App korrekt, aber das fühlt sich an wie eine gefährliche Brute-Force-Methode, zumal die meisten Apps, die ich entwickle, keine Administratorrechte benötigen.

Gibt es eine Möglichkeit, Delphi dazu zu bringen, bei der Ausführung meiner App nach einer Erhöhung zu fragen, anstatt die gesamte IDE zu erhöhen?

    
Roddy 24.05.2011, 09:06
quelle

5 Antworten

7

Es gibt keine, es funktioniert auch nicht für VS:

Ссылка

Ich denke, Sie könnten den Remote-Debugger erhöht ausführen und die IDE mit dem Remote-Debugging verbinden.

Es funktioniert nicht, da der Prozess als anderer Benutzer ausgeführt wird (oder ein anderes Benutzer-Token verwendet).

Die IDE versucht, den Debugging-Prozess mit CreateProcess auszuführen. Dies schlägt fehl, wenn die Anwendung eine Elvation erfordert. Weitere Informationen finden Sie in diesem Artikel:

Ссылка

RAD Studio konnte die Anwendung mit ShellExecute mit dem Verb "runas" ausführen, aber das Problem "Debugging unter anderem Benutzerkontext" wird dadurch immer noch nicht gelöst.

Mit anderen Worten: Ein erhöhter Prozess kann nur von einem abgelaufenen Debugger debuggt werden.

Bearbeiten:

Die Delphi XE2 IDE ist 32-Bit und kann 64-Bit-Anwendungen nur über den Remote-Debugger debuggen (was dem Benutzer verborgen bleibt).

Ich nehme an, Embarcadero könnte es ermöglichen, hochentwickelte Anwendungen auf ähnliche Weise zu debuggen.

    
Jens Mühlenhoff 24.05.2011, 09:26
quelle
11

Die UAC fängt auch jede Anwendung ab, die in ihrem Namen oder in vielen Feldern der Versionsressource die Wörter "setup", "update" oder "install" enthält. (Firmenname, App-Name, Beschreibung usw. Es betrachtet jede solche Anwendung als eine potentielle "Installer" -Anwendung und muss daher mit Admin-Rechten ausgeführt werden.

Klingt verrückt, aber es ist wahr. Siehe den Abschnitt "Erkennung von Installern" in diesem Dokument .

Sie können dies umgehen, indem Sie ein Manifest hinzufügen, das besagt, dass es keine Administratorrechte benötigt.

    
Phil Rogers 13.11.2012 14:06
quelle
4

Die einzige Möglichkeit, eine solche App zu debuggen, besteht darin, die IDE als Administrator auszuführen. Ich würde nicht empfehlen, dies routinemäßig zu tun, nur für Debugging-Sitzungen.

    
David Heffernan 24.05.2011 09:31
quelle
1

Tatsächlich kann es möglich sein, einen Prozess mit "Zugriff auf höherer Ebene" von einem Prozess mit "normalem Level-Zugriff" zu debuggen.

Mindestens bis Windows XP ist es ausreichend, Ihr Benutzerkonto der Gruppe Debugger Users hinzuzufügen, um Prozesse zu debuggen, die z. mit Administrator Privilegien.

Das löst Delphi 2010s Problem nicht, um den Prozess überhaupt auszuführen, aber es kann nützlich sein, wenn Sie versuchen, den Debugger an einen bereits laufenden Prozess anzuhängen.

Ich glaube nicht, dass dies auf UAC-fähigem Vista + funktioniert, aber ich dachte, ich würde es trotzdem erwähnen. :)

Um genau zu sein, das UAC-Split-Token-Konzept deaktiviert die SeDebugPrivilege :

Ссылка

Ссылка

    
Jens Mühlenhoff 23.06.2011 14:30
quelle
1

Führen Sie Delphi (jede Version) als Administrator aus.

Sie können auch die Eigenschaften von Delphi-Verknüpfungen ändern (um sie immer als Administrator auszuführen).

    
Suat HD 08.04.2013 21:32
quelle