AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) ShellExecuteEx funktioniert manchmal nicht
Thema durchsuchen
Ansicht
Themen-Optionen

ShellExecuteEx funktioniert manchmal nicht

Ein Thema von Shark99 · begonnen am 10. Aug 2010 · letzter Beitrag vom 11. Aug 2010
Antwort Antwort
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#1

ShellExecuteEx funktioniert manchmal nicht

  Alt 10. Aug 2010, 10:52
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:

http://blog.delphi-jedi.net/2008/03/...ta-with-jwscl/
Delphi-Quellcode:
         JwShellExecute(Handle,
             ParamStr(0), f+';'+p, '', SW_NORMAL,
             [sefNoUi, sefFixDirWithRunAs,
              sefIgnoreElevationIfNotAvailable, sefNoClosehProcess]);
Unter Windows Vista SP3 32 Bit: läuft ohne Probleme

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?

Geändert von Shark99 (10. Aug 2010 um 10:55 Uhr)
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#2

AW: ShellExecuteEx funktioniert manchmal nicht

  Alt 10. Aug 2010, 12:22
Hi,

die Fehlermeldung
Zitat:
EJwsclWinCallFailedException
GetLastError: 127
GetLastErrorMsg: The specified procedure could not be found
sieht gekürzt aus.
JWSCL Exceptions sollten mehr enthalten. Kannst du das hier posten?
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#3

AW: ShellExecuteEx funktioniert manchmal nicht

  Alt 10. Aug 2010, 12:29
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.
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#4

AW: ShellExecuteEx funktioniert manchmal nicht

  Alt 10. Aug 2010, 12:41
Sonst ist da leider nichts brauchbares da, Codeline ist 0 etc.
Achso, alles klar. Aus deiner langjährigen Erfahrung kannst du das natürlich beurteilen

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.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)

Geändert von Dezipaitor (10. Aug 2010 um 13:03 Uhr)
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#5

AW: ShellExecuteEx funktioniert manchmal nicht

  Alt 10. Aug 2010, 13:08
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?
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)

Geändert von Dezipaitor (10. Aug 2010 um 13:13 Uhr)
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#6

AW: ShellExecuteEx funktioniert manchmal nicht

  Alt 10. Aug 2010, 15:57
Habe das Problem gefunden. Es lag an Wow64DisableWow64FsRedirection().
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#7

AW: ShellExecuteEx funktioniert manchmal nicht

  Alt 10. Aug 2010, 17:09
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.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#8

AW: ShellExecuteEx funktioniert manchmal nicht

  Alt 11. Aug 2010, 11:21
Ja, hatte es zuvor im Code aufgerufen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:41 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