Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi UAC blockiert ShellExecute?? (https://www.delphipraxis.net/120840-uac-blockiert-shellexecute.html)

Ralf Kaiser 17. Sep 2008 15:28


UAC blockiert ShellExecute??
 
Hallo,

in einem Programm will ich Webseiten per Browser aufrufen. das habe ich bisher immer per ShellExecute() gemacht.

Jetzt habe ich feststellen müssen, dass ShellExecute scheinbar bei einer aktivierten UAC nicht funktioniert. Es passiert schlicht und einfach nichts.

Der Rückgabewert von...

ShellExecute(handle, 'open', Pchar('http://delphipraxis.net'), nil, nil, SW_SHOWNORMAL)

...ist 2. Das bedeutet "Datei nicht gefunden", wenn ich einer Liste galuben darf die ich schon lange auf meinem Rechner habe.

:gruebel:

Starte ich das Programm als Admin dann wird der Browser geöffnet und die Seite wird angezeigt.

Kann mir jemand sagen, wie man das Problem lösen kann? es kann ja wohl irgendwie nicht angehen, dass der User die UAC bestätigen muss wenn er per Programm eine Webseite anzeigen will. (die Seiten wären z.B. die Produktseite des Programmes, spezielle Informationsseiten usw. - Wie erklärt man einem Benutzer, dass dies jedesmal per UAC abzunicken sei???)

Ciao,
Ralf

EDIT:

Bin gerade mal auf die Idee gekommen, einfach mal ein anderes Programm per ShellExecute zu starten. Das funktionierte auch mit aktivierter UAC!!!!

Es sieht wohl so aus, als wenn man sich das Standardbrowser-Executeable suchen muss und das dann mit der Webseite als Parameter starten muss wenn die Anwendung keine Adminrechte hat. Wobei ich das nicht so ganz verstehe. Kann eine nicht-Admin-Anwendung nicht festellen welches Programm für "http://" zuständig ist???

Assertor 17. Sep 2008 15:54

Re: UAC blockiert ShellExecute??
 
Hi Alfi001,

1) Bist Du nicht auf die Idee gekommen, mal den Rückgabewert der Funktion (!) ShellExecute zu prüfen? Welchen Rückgabewert liefert ShellExecute - wenn die UAC Vermutung stimmt, müsste das ja z.B. SE_ERR_ACCESSDENIED (5) sein.

2) Was übergibst Du als Handle? Ändert sich was, wenn Du 0 explizit als Handle übergibst?

Zitat:

Zitat von Alfi001
es kann ja wohl irgendwie nicht angehen, dass der User die UAC bestätigen muss wenn er per Programm eine Webseite anzeigen will. (die Seiten wären z.B. die Produktseite des Programmes, spezielle Informationsseiten usw. - Wie erklärt man einem Benutzer, dass dies jedesmal per UAC abzunicken sei???)

Bei mir geht es unter Vista einwandfrei. Mit aktivierter UAC, ohne Adminrechte.

Gruß Assertor

DeddyH 17. Sep 2008 15:57

Re: UAC blockiert ShellExecute??
 
Zitat:

Zitat von Assertor
Bist Du nicht auf die Idee gekommen, mal den Rückgabewert der Funktion (!) ShellExecute zu prüfen?

Zitat:

Zitat von Alfi001
Der Rückgabewert von...

ShellExecute(handle, 'open', Pchar('http://delphipraxis.net'), nil, nil, SW_SHOWNORMAL)

...ist 2.

:zwinker:

Assertor 17. Sep 2008 15:59

Re: UAC blockiert ShellExecute??
 
Mittwoch,

:roll:

Alfi001, ich nehme alles zurück und entschuldige mich für 1) - aber probier mal mein 2).

@DeddyH: Wenn ich Dich manchmal nicht hätte... :thumb: und Feierabend: :cheers:

Gruß Assertor

DeddyH 17. Sep 2008 16:00

Re: UAC blockiert ShellExecute??
 
Ich auch :cheers:

Ralf Kaiser 17. Sep 2008 16:03

Re: UAC blockiert ShellExecute??
 
[quote="Assertor"]

2) Was übergibst Du als Handle? Ändert sich was, wenn Du 0 explizit als Handle übergibst?

[quote="Alfi001"]

Ja. Es ändert sich was: Es funktioniert dann nämlich! :bounce1: :bounce1: :bounce1:

Komisch bisher habe ich immer das Handle des Aufrufenden Fensters übergeben (das soll ja wohl das Handle sein das bei eventuell auftretenden ehlern für die Dialoge "zuständig" ist)

Danke für den Tip!!!

Ciao,
Ralf

Assertor 17. Sep 2008 16:08

Re: UAC blockiert ShellExecute??
 
Zitat:

Zitat von Alfi001
Ja. Es ändert sich was: Es funktioniert dann nämlich! :bounce1: :bounce1: :bounce1:

Das freut mich!

Ja, mit dem ShellExecute Handle ist so eine Sache. Hauptsache es geht jetzt ;)

Gruß Assertor

P.S.:
Zitat:

Zitat von DeddyH
Ich auch :cheers:

Verdient!

Bernhard Geyer 17. Sep 2008 16:08

Re: UAC blockiert ShellExecute??
 
Zitat:

Zitat von Alfi001
Ja. Es ändert sich was: Es funktioniert dann nämlich! :bounce1: :bounce1: :bounce1:

Komisch bisher habe ich immer das Handle des Aufrufenden Fensters übergeben (das soll ja wohl das Handle sein das bei eventuell auftretenden ehlern für die Dialoge "zuständig" ist)

Ich vermute das es am "Ich lauf im Minimalrechte"-Modus des IE liegt das es bei anderen Apps funktioniert und beim IE nicht. Denn wenn dein Handle für Fehlermeldungen vom IE verwendet werden dürfte dann müsste ja hier die UAC ein paar Löcher aufmachen welche ja die UAC per Design nicht haben darf.

Assertor 17. Sep 2008 16:12

Re: UAC blockiert ShellExecute??
 
Zitat:

Zitat von Bernhard Geyer
Ich vermute das es am "Ich lauf im Minimalrechte"-Modus des IE liegt das es bei anderen Apps funktioniert und beim IE nicht. Denn wenn dein Handle für Fehlermeldungen vom IE verwendet werden dürfte dann müsste ja hier die UAC ein paar Löcher aufmachen welche ja die UAC per Design nicht haben darf.

Denke ich auch, und um es vollständig zu machen sollte das Handle 0 an den Benutzerdesktop verweisen.

Gruß Assertor

Ralf Kaiser 17. Sep 2008 16:21

Re: UAC blockiert ShellExecute??
 
Zitat:

Zitat von Bernhard Geyer
Ich vermute das es am "Ich lauf im Minimalrechte"-Modus des IE liegt das es bei anderen Apps funktioniert und beim IE nicht. Denn wenn dein Handle für Fehlermeldungen vom IE verwendet werden dürfte dann müsste ja hier die UAC ein paar Löcher aufmachen welche ja die UAC per Design nicht haben darf.

Nein. Nein. Das hatte nichts mit dem IE zu tun! Auf meinem System ist FireFox als Standardbrowser eingerichtet!


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:41 Uhr.
Seite 1 von 2  1 2      

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