![]() |
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:
in
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
Code:
ändere, kann ich meine Anwendung weiterhin problemlos compilieren. Versuche ich aber die Anwendung über die IDE zu starten, erhalte ich folgende Fehlermeldung:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
Code:
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.
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 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. |
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. |
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. |
Re: Delphi 2007, Vista und UAC
Zitat:
...:cat:... |
Re: Delphi 2007, Vista und UAC
Zitat:
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? ;) |
Re: Delphi 2007, Vista und UAC
[quote="ringli"]
Zitat:
Zitat:
Zitat:
|
Re: Delphi 2007, Vista und UAC
Zitat:
Zitat:
|
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? |
Re: Delphi 2007, Vista und UAC
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:20 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