![]() |
ShellExecuteEx funktioniert manchmal nicht
Ich benutzte ShellExecuteEx aus der Jedi Lib um meine eigene Anwendung neuzustarten inkl eines UAC Dialogs mit nachfolgenden Admin rechten, d.h. der erste Start ist ohne Admin rechte und erst bei Bedarf werden diese angefordert.
Die Beschreibung habe ich von hier: ![]()
Delphi-Quellcode:
Unter Windows Vista SP3 32 Bit: läuft ohne Probleme
JwShellExecute(Handle,
ParamStr(0), f+';'+p, '', SW_NORMAL, [sefNoUi, sefFixDirWithRunAs, sefIgnoreElevationIfNotAvailable, sefNoClosehProcess]); Unter Windows 7 64 Bit aus der Delphi 7 IDE Heraus: läuft ohne Probleme Unter Windows 7 64 Bit vom Explorer gestartet kommt diese Exception: EJwsclWinCallFailedException GetLastError: 127 GetLastErrorMsg: The specified procedure could not be found Erklärung aus dem Jedi Code: EJwsclWinCallFailedException: will be raised if a call to ShellExecuteEx failed EJwsclUnsupportedWindowsVersionException will be raised if the flag sefIgnoreElevationIfNotAvailable is set and UAC is not available --- UAC ist auf allen Systemen an. Suche nach einer Lösung seit zwei Stunden und bin nun am verzweifeln. In allen drei Fällen hat die App beim ersten start KEINE Admin Rechte (ausgiebig getestet). Wieso funktioniert es unter Vista und unter Windows 7 aus der IDE heraus, aber nicht unter Windows 7 ohne die IDE? |
AW: ShellExecuteEx funktioniert manchmal nicht
Hi,
die Fehlermeldung Zitat:
JWSCL Exceptions sollten mehr enthalten. Kannst du das hier posten? |
AW: ShellExecuteEx funktioniert manchmal nicht
Sonst ist da leider nichts brauchbares da, Codeline ist 0 etc.
Meine Vermutung ist nun dass Delphi7 in einem bestimmten Kompatibilitätsmodus unter Window 7 läuft und bekommt mehr Rechte als andere Anwendung, deshalb läuft es in der IDE. |
AW: ShellExecuteEx funktioniert manchmal nicht
Zitat:
Shark99, gib doch alle verfügbaren Informationen zu dem Problem. Woher willst du denn wissen, dass jemand anderes mit den Informationen nichts anfangen kann? Indem du nur Ausschnitte herausgibst, verschenkst du meine und deine Zeit und Aufwand. |
AW: ShellExecuteEx funktioniert manchmal nicht
Ich hab das nochmal bei mir implementiert und habe unter Win7 64bit keinen Fehler entdeckt (egal ob mit oder ohne IDE).
Im Kompatibilitätsmodus sollte sich das Programm einfach so starten, da dann auch Adminrechte vorliegen. EDIT: Wie hast du denn die JEDI API installiert? |
AW: ShellExecuteEx funktioniert manchmal nicht
Habe das Problem gefunden. Es lag an Wow64DisableWow64FsRedirection().
|
AW: ShellExecuteEx funktioniert manchmal nicht
Von dir vorher aufgerufen?
Ah, das kann natürlich sein. JEDI API sucht die DLL beim ersten Aufruf der Funktion auf der Platte mit LoadLibrary. Da kann es passiert sein, dass eine ander ShellAPI32.dll geladen wird, wo ShellExecuteW nicht gefunden werden kann. D.h. bei einem zweiten Aufruf, diesmal mit Wow64DisableWow64FsRedirection, sollte es funkzen. |
AW: ShellExecuteEx funktioniert manchmal nicht
Ja, hatte es zuvor im Code aufgerufen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:03 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