Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Shellexecute, CMD, Admin, bcdedit.exe (https://www.delphipraxis.net/187179-shellexecute-cmd-admin-bcdedit-exe.html)

haentschman 4. Nov 2015 12:52


Shellexecute, CMD, Admin, bcdedit.exe
 
Hallo alle...:P

Ich brauche mal einen Rat.

Gegeben:
* Windows 10, DX
* Programm 1 startet mit Adminrechten (UAC fragt nach)
* Programm 1 soll mit ShellExecute die Datei "bdcedit.exe" aus System32 starten

Fehler:
ResultCode = 2 -> Datei nicht gefunden. (In jeder Variante gleich)

Codes: (jede Zeile ist immer alternatives Probieren)
Delphi-Quellcode:
ResultCode:= ShellExecute(0, 'open', PChar('bcdedit.exe'), PChar('/set TESTSIGNING ON'), nil, SW_HIDE);
ResultCode:= ShellExecute(0, 'runas', PChar('bcdedit.exe'), PChar('/set TESTSIGNING ON'), nil, SW_HIDE);
ResultCode:= ShellExecute(0, 'open', PChar('cmd.exe'), PChar('/K bcdedit.exe /set TESTSIGNING ON'), nil, SW_HIDE);
ResultCode:= ShellExecute(0, 'runas', PChar('cmd.exe'), PChar('/K bcdedit.exe /set TESTSIGNING ON'), nil, SW_HIDE);
Herausgefunden:
Wenn man die normale CMD normal startet und man sich im System32 befindet, findet das System die Datei nicht. Mit als Admin gestarteter CMD schon.
Deswegen gehe ich mit dem Shellexecute von einem Rechteproblem aus. Da ich das Programm 1 schon als Admin gestartet habe komm beim "runas" auch keine UAC Frage mehr.

Frage:
Warum findet er die nicht? Wie kriege ich die Datei gestartet?

Danke...8-)

Luckie 4. Nov 2015 13:02

AW: Shellexecute, CMD, Admin, bcdedit.exe
 
Warum gibst du nicht den vollständigen Pfad an?

haentschman 4. Nov 2015 13:04

AW: Shellexecute, CMD, Admin, bcdedit.exe
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo...
Weil System32 in der PATH Variablen steht und der vollständige Pfad (war der erste Versuch) keinen Unterschied macht...:?

Das 2. Bild ist der Start über die CMD als Administrator.

baumina 4. Nov 2015 13:26

AW: Shellexecute, CMD, Admin, bcdedit.exe
 
Vielleicht liefert das hier ein paar Hinweise.

haentschman 4. Nov 2015 13:32

AW: Shellexecute, CMD, Admin, bcdedit.exe
 
Danke und ob. :thumb:

Ich bin ein Opfer der Virtualisierung. :cry: Wie starte ich nun die (wahrscheinlich) 64bit bcdedit.exe aus der 32Bit Anwendung? ... Heißt suchen nach Alternativen. :roll:

baumina 4. Nov 2015 13:40

AW: Shellexecute, CMD, Admin, bcdedit.exe
 
Leider habe ich hier nur ein 32-bit-System, aber so wie ich das gelesen habe, müsste deine exe schon eine 32-bit-exe sein, nur der Pfad, der dir da vorgegaukelt wird ist nicht der für den du ihn hältst.

haentschman 4. Nov 2015 13:48

AW: Shellexecute, CMD, Admin, bcdedit.exe
 
Genauso sieht es aus. Die bcdedit.exe kann ich starten wenn ich sie in den SYSWOW64 Ordner kopiere.
Sie wird erfolgreich ausgeführt.
Wie ich das sehe habe ich 3 Möglichkeiten:
* 64bit -> nicht möglich
* Datei kopieren wenn nicht vorhanden (vor der Verwendung) .... wie komme ich an den Pfad?
* Die Pfadumleitung aufheben... wie?

Lösung:
Auch als 32bit Prozess kommt man an das System32 mit einer (zusammengesetzten) Pfadangabe 'C:\Windows\Sysnative' :cheer:

Dalai 4. Nov 2015 16:31

AW: Shellexecute, CMD, Admin, bcdedit.exe
 
Hier spielt die Redirection rein, nicht die Virtualisierung (die ist wieder etwas anderes).

Zitat:

Zitat von haentschman (Beitrag 1320551)
* Datei kopieren wenn nicht vorhanden (vor der Verwendung) .... wie komme ich an den Pfad?

*schauder*

Zitat:

* Die Pfadumleitung aufheben... wie?
Wow64DisableWow64FsRedirection und Wow64RevertWow64FsRedirection. Beispiel-Implementierung hab ich hier im Forum irgendwo mal gepostet, IIRC als SwitchX64Redirection. Alternativ kannst du auch auf %SystemRoot%\Sysnative\bcdedit.exe zugreifen, das geht aber nur als 32 Bit Prozess auf einem x64 Windows! D.h. wenn du das ambivalent haben willst, ist das temporäre Deaktivieren der Redirection besser, und nebenbei auch der empfohlene Weg.

MfG Dalai


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:33 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