AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Shellexecute, CMD, Admin, bcdedit.exe

Shellexecute, CMD, Admin, bcdedit.exe

Ein Thema von haentschman · begonnen am 4. Nov 2015 · letzter Beitrag vom 4. Nov 2015
Antwort Antwort
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.029 Beiträge
 
Delphi 11 Alexandria
 
#1

Shellexecute, CMD, Admin, bcdedit.exe

  Alt 4. Nov 2015, 12:52
Hallo alle...

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...

Geändert von haentschman ( 4. Nov 2015 um 13:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Shellexecute, CMD, Admin, bcdedit.exe

  Alt 4. Nov 2015, 13:02
Warum gibst du nicht den vollständigen Pfad an?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.029 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Shellexecute, CMD, Admin, bcdedit.exe

  Alt 4. Nov 2015, 13:04
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.
Miniaturansicht angehängter Grafiken
bcdedit.png   bcdedit1.png  

Geändert von haentschman ( 4. Nov 2015 um 13:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: Shellexecute, CMD, Admin, bcdedit.exe

  Alt 4. Nov 2015, 13:26
Vielleicht liefert das hier ein paar Hinweise.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.029 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Shellexecute, CMD, Admin, bcdedit.exe

  Alt 4. Nov 2015, 13:32
Danke und ob.

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

Geändert von haentschman ( 4. Nov 2015 um 13:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: Shellexecute, CMD, Admin, bcdedit.exe

  Alt 4. Nov 2015, 13:40
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.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.029 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Shellexecute, CMD, Admin, bcdedit.exe

  Alt 4. Nov 2015, 13:48
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'

Geändert von haentschman ( 4. Nov 2015 um 16:24 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.635 Beiträge
 
Delphi 5 Professional
 
#8

AW: Shellexecute, CMD, Admin, bcdedit.exe

  Alt 4. Nov 2015, 16:31
Hier spielt die Redirection rein, nicht die Virtualisierung (die ist wieder etwas anderes).

* 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
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 03:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf