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?
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.
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.
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.
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
:
Tags und Links windows-7 delphi elevation delphi-2010 uac