Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Delphi 2007, Vista und UAC (https://www.delphipraxis.net/98544-delphi-2007-vista-und-uac.html)

ringli 28. Aug 2007 23:07


Delphi 2007, Vista und UAC
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich bin neulich über etwas gestolpert was mich doch sehr gewundert hat. Und zwar erstelle ich als einfacher Benutzer unter Vista mit Delphi 2007 eine ganz einfache Anwendung. Diese kann ich auch problemlos compilieren bzw. starten. Jetzt deaktiviere ich in den Projektoptionen unter "Anwendung" die Checkbox "Laufzeit-Themes aktivieren" und füge anschliessend über die Projektverwaltung mein eigenes Manifest hinzu. Nun versuche ich die Anwendung zu compilieren bzw. zu starten. Erwartungsgemäß funktioniert das problemlos.

Wenn ich jetzt in meinem Manifest den folgenden Abschnitt von
Code:
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
in
Code:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
ändere, kann ich meine Anwendung weiterhin problemlos compilieren. Versuche ich aber die Anwendung über die IDE zu starten, erhalte ich folgende Fehlermeldung:
Code:
Vorgang kann nicht erzeugt werden.

Details:
[208D5148]{dbkdebugide100.bpl} Debug.TDebugger.DBKError (Line 11416, "Debug.pas" + 3) + $23
[208A2DB1]{dbkdebugide100.bpl} DbkHelper.CheckRetVal (Line 268, "DbkHelper.pas" + 4) + $8
[208A2D31]{dbkdebugide100.bpl} DbkHelper.ErrCode (Line 249, "DbkHelper.pas" + 1) + $2
[208C7A8E]{dbkdebugide100.bpl} Debug.TDebugKernel.CreateProcess (Line 5056, "Debug.pas" + 14) + $2
[208D2E69]{dbkdebugide100.bpl} Debug.TDebugger.DoCreateProcess (Line 10374, "Debug.pas" + 29) + $36
[208D2F7C]{dbkdebugide100.bpl} Debug.TDebugger.CreateProcess (Line 10400, "Debug.pas" + 6) + $2B
[208D3AB2]{dbkdebugide100.bpl} Debug.TDebugger.Run (Line 10840, "Debug.pas" + 50) + $2D
[208D423E]{dbkdebugide100.bpl} Debug.TDebugger.Run (Line 11091, "Debug.pas" + 70) + $37
[208CF162]{dbkdebugide100.bpl} Debug.TDebugger.Run (Line 8973, "Debug.pas" + 0) + $2
[20A53D8D]{coreide100.bpl} DebuggerMgr.TDebuggerMgr.Run (Line 1410, "DebuggerMgr.pas" + 4) + $F
[004160E3]{bds.exe    } AppMain.TAppBuilder.RunRun (Line 2981, "ui\AppMain.pas" + 0) + $7
[20040113]{rtl100.bpl } Classes.TBasicAction.Execute (Line 11081, "common\Classes.pas" + 3) + $7
[2014FF7D]{vcl100.bpl } ActnList.TContainedAction.Execute (Line 388, "ActnList.pas" + 1) + $2C
[20150CE0]{vcl100.bpl } ActnList.TCustomAction.Execute (Line 1000, "ActnList.pas" + 7) + $8
[2003FFDF]{rtl100.bpl } Classes.TBasicActionLink.Execute (Line 11010, "common\Classes.pas" + 2) + $7
[2013B6F9]{vcl100.bpl } Controls.TControl.Click (Line 5227, "Controls.pas" + 7) + $7
[2019A7CC]{vcl100.bpl } ComCtrls.TToolButton.Click (Line 16993, "ComCtrls.pas" + 0) + $0
[2013BB8B]{vcl100.bpl } Controls.TControl.WMLButtonUp (Line 5365, "Controls.pas" + 6) + $3E
[2013B20B]{vcl100.bpl } Controls.TControl.WndProc (Line 5146, "Controls.pas" + 83) + $6
[2013AE98]{vcl100.bpl } Controls.TControl.Perform (Line 5021, "Controls.pas" + 5) + $C
[2013EBAA]{vcl100.bpl } Controls.GetControlAtPos (Line 7095, "Controls.pas" + 4) + $73
[2013EC72]{vcl100.bpl } Controls.TWinControl.ControlAtPos (Line 7118, "Controls.pas" + 13) + $E
[2013AE98]{vcl100.bpl } Controls.TControl.Perform (Line 5021, "Controls.pas" + 5) + $C
[2013EE7D]{vcl100.bpl } Controls.TWinControl.IsControlMouseMsg (Line 7182, "Controls.pas" + 15) + $1F
[2013F244]{vcl100.bpl } Controls.TWinControl.WndProc (Line 7269, "Controls.pas" + 76) + $6
[2019C80F]{vcl100.bpl } ComCtrls.TToolBar.UpdateButtonState (Line 18138, "ComCtrls.pas" + 5) + $1C
[2019C852]{vcl100.bpl } ComCtrls.TToolBar.UpdateButtonStates (Line 18148, "ComCtrls.pas" + 3) + $4
[2019F185]{vcl100.bpl } ComCtrls.TToolBar.WndProc (Line 19578, "ComCtrls.pas" + 80) + $6
[05542CEC]{Castalia11.bpl} Castaliaeditor.GetSourceFromModule + $2E8
[2013EAB4]{vcl100.bpl } Controls.TWinControl.MainWndProc (Line 7073, "Controls.pas" + 3) + $6
[20040DD4]{rtl100.bpl } Classes.StdWndProc (Line 11583, "common\Classes.pas" + 8) + $0
[201611EC]{vcl100.bpl } Forms.TApplication.ProcessMessage (Line 8102, "Forms.pas" + 23) + $1
[20161226]{vcl100.bpl } Forms.TApplication.HandleMessage (Line 8121, "Forms.pas" + 1) + $4
[20161537]{vcl100.bpl } Forms.TApplication.Run (Line 8219, "Forms.pas" + 20) + $3
[0042298E]{bds.exe    } bds.bds (Line 196, "" + 7) + $7
Eigentlich hätte ich erwartet das hier die UAC-Abfrage erscheint, was aber nicht der Fall ist. Starte ich meine Anwendung ganz normal über den Explorer erhalte ich auch die entsprechende UAC-Abfrage.

Ist dieses Verhalten tatsächlich so beabsichtigt oder ist dies noch ein Fehler in der Delphi IDE? Im Anhang mal ein ganz kleines Testprojekt zum Testen.


Und da ich grade bei Fehlern in Delphi 2007 bin noch eine Kleinigkeit:
Die "Öffnen"-, "Projekt öffnen..."-, "Speichern"-, "Speichern unter..."- und "Projekt speichern unter..."-Dialoge der Delpi-IDE verwenden unter Vista immer noch nicht die neuen Dialoge mit den Linkfavoriten was ich sehr schade finde da diese doch sehr praktisch sind um schnell auf Projektordner zugreifen zu können. Klar könnte ich mir auch den alten Dialog entsprechend anpassen, aber das kann ja nicht der Sinn der Sache sein.

[EDIT]
Sorry, sehe grade das ich im falschen Forum gelandet bin. Eigentlich sollte das Thema bei Delphi Bugreports eingetragen werden. Könnte das ein Moderator bitte verschieben? Danke.

Phoenix 29. Aug 2007 18:20

Re: Delphi 2007, Vista und UAC
 
Nee ;-)

Gehört schon in die IDE-Sparte, weil's imho kein Bugreport ist.
Probier mal, die IDE als Administrator zu starten und schau ob es dann geht.

Ich bin mir ziemlich sicher, dass es kein Bug ist. Der Debugger der Anwendung läuft mit normalen rechten, und beim normalen Debuggen wird der Debugger gestartet, und der startet dann das zu debuggende Programm In-Process. Wenn das nun vom System gleich wieder gekillt wird, weil es (da in-process) keine Adminrechte bekommen kann (die UAC kann nur greifen, wenn ein eigener Prozess neu gestartet wird). Ein laufender Prozess der keine Adminrechte hat (Debugger mit Deinem Programm 'im Bauch') kann zur Laufzeit keine höheren Rechte mehr erhalten.

Das heisst, schond er Debugger muss mit Adminrechten gestartet sein damit das geht. Und da der Debugger durch die IDE gestartet wird muss diese schon mit Adminrechten laufen.

Bernhard Geyer 29. Aug 2007 18:47

Re: Delphi 2007, Vista und UAC
 
Jedoch sollte die Fehlermeldung in dieser Art und Weise nicht auftreten wenn schon D2007 eine Vista-Edition ist.

AFAIK installiert sich VS.NET 2005 so das immer Admin-Rechte angefordert werden.

sakura 29. Aug 2007 18:49

Re: Delphi 2007, Vista und UAC
 
Zitat:

Zitat von Bernhard Geyer
AFAIK installiert sich VS.NET 2005 so das immer Admin-Rechte angefordert werden.

Das ist ein nachträglicher Fix von MS in Vista ;) VS 2005 macht das nicht.

...:cat:...

ringli 29. Aug 2007 19:11

Re: Delphi 2007, Vista und UAC
 
Zitat:

Zitat von Phoenix
Gehört schon in die IDE-Sparte, weil's imho kein Bugreport ist.
Probier mal, die IDE als Administrator zu starten und schau ob es dann geht.

Ja, so geht es. Aber meiner Meinung nach kann es trotzdem so nicht richtig sein. Nur deswegen kann man doch jetzt nicht anfangen permanent mit Administratorrechten zu arbeiten. Also ich denke in diesem Fall sollte der Debugger auch gleich über die UAC-Abfrage mit entsprechenden Rechten gestartet werden. Ob bzw. wie sich das realisieren lässt, entzieht sich meiner Kenntnis.

Und was ist mit den "falschen" Öffnen-/Speichern-Dialogen? Das dürfte auf jeden Fall noch ein Bug sein. Oder gibt es dafür eine vernünftige Erklärung ausser der das es vielleicht übersehen wurde? ;)

Bernhard Geyer 29. Aug 2007 20:20

Re: Delphi 2007, Vista und UAC
 
[quote="ringli"]
Zitat:

Zitat von Phoenix
Ja, so geht es. Aber meiner Meinung nach kann es trotzdem so nicht richtig sein. Nur deswegen kann man doch jetzt nicht anfangen permanent mit Administratorrechten zu arbeiten.

Sag das MS mit ihren Halbgaren UAC.[quote="ringli"]

Zitat:

Zitat von Phoenix
Also ich denke in diesem Fall sollte der Debugger auch gleich über die UAC-Abfrage mit entsprechenden Rechten gestartet werden. Ob bzw. wie sich das realisieren lässt, entzieht sich meiner Kenntnis.

Geht gar nicht. Hier hat MS m.E. eindeutig gepennt. Mit digitaler Signatur und/oder Checksumme der Exe wäre es ein leichtes sich die Antwort auf die UAC-Frage zu merken. Die jetzige Implementierung führt nur dazu entweder UAC abzuschalten oder gedankenverloren immer auf Zulassen zu drücken.

Zitat:

Zitat von Phoenix
Und was ist mit den "falschen" Öffnen-/Speichern-Dialogen? Das dürfte auf jeden Fall noch ein Bug sein. Oder gibt es dafür eine vernünftige Erklärung ausser der das es vielleicht übersehen wurde? ;)

Ist vermutlich einfach nur vergessen worden. Ein Bug ist es auf keinen Fall oder funktioniert der Dialog wohl für seine ursprüngliche Aufgabe wohl nicht mehr? Evtl. wurde das ja für das CDS 2007 angepaßt.

ringli 29. Aug 2007 20:31

Re: Delphi 2007, Vista und UAC
 
Zitat:

Zitat von Bernhard Geyer
Die jetzige Implementierung führt nur dazu entweder UAC abzuschalten oder gedankenverloren immer auf Zulassen zu drücken.

...oder als einfacher Benutzer immer brav die entsprechenden Anmeldedaten einzutippen. ;)

Zitat:

Zitat von Bernhard Geyer
Ist vermutlich einfach nur vergessen worden. Ein Bug ist es auf keinen Fall oder funktioniert der Dialog wohl für seine ursprüngliche Aufgabe wohl nicht mehr? Evtl. wurde das ja für das CDS 2007 angepaßt.

Doch sicher funktionieren die Dialoge. Es ist nur nervig wenn man sonst überall schön die Linkfavoriten nutzen kann, aber in Delphi muss man sich erst wieder durch die Verzeichnisstruktur hangeln um zu seinem Projektordner zu kommen.

Phoenix 29. Aug 2007 20:34

Re: Delphi 2007, Vista und UAC
 
Ihr schiebt mir hier aber beide immer irgendwie falsche Zitate unter. Verklickt oder verguckt? ;-)

Hrm. Den low priviledged Debugger kann man auch nicht nachträglich an einen high-priv Prozess anhängen, oder? Hab sowas leider (oder zum Glück ;-) ) noch nie gemacht.

Das wär glaub ich ein Punkt, den man mal gezielt an CodeGear geben sollte. Schonmal dort in den Bugmeldungen bzw. Newsgroups gesucht?

ringli 29. Aug 2007 20:40

Re: Delphi 2007, Vista und UAC
 
Zitat:

Zitat von Phoenix
Das wär glaub ich ein Punkt, den man mal gezielt an CodeGear geben sollte. Schonmal dort in den Bugmeldungen bzw. Newsgroups gesucht?

Ehrlich gesagt nein weil ich jetzt auch gar nicht wüsste wo ich da gucken müsste. Ausserdem sind meine Englischkenntnisse dermaßen bescheiden das ich wahrscheinlich mehr als die Hälfte falsch verstehen würde. Vom Antworten oder eigene Beiträge verfassen will ich mal lieber gar nicht erst reden. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz