Batch-Datei in ausgetauschter Shutdown.exe ausführen
Hi,
dieser Beitrag steht auch bei wer-weiss-was (bevor einer sich über das Doppelpostig auregt), dieses Forum habe ich aber erst nach dem Posting "entdeckt".
Zum Thema:
Folgenden Code habe ich zuerst in einer shutdown.BAT gespeichert, diese dann zur shutdown.EXE kompiliert und mit dieser neuen EXE dann die originale shutdown.EXE ersetzt. Zuvor habe ich die originale shutdown.exe in shutdownorig.exe umbenannt:
ANFANG
:Startet die Batch-Datei zum Herunterfahren der Virtuellen Maschinen
call "E:\Dateien System\Skripte\VMsbeenden.bat"
:Fährt anschließend den Rechner herunter
c:\windows\system32\shutdownorig.exe -p
ENDE
Die aufgerufene VMsbeenden.bat Datei hat einen Timeoutbefehl von (zu Testzwecken) 240 Sekunden.
Mein Ziel war bzw. ist es, dass wenn ich in der Windows7-Startleiste --> "Herunterfahren" wähle (also der ganz reguläre Weg einen Windows Rechner herunterzufahren), der Rechner zuerst meine Virtuellen Maschinen beendet (mit dem Aufruf VMsbeenden.bat) und danach mit shutdownorig.exe den Rechner runterfährt.
Wenn ich allerdings diesen eben beschriebenen Prozess durchführe, dauert es leider keine 30 Sekunden bis der Rechner unten ist. Es müsste aber allein schon wegen des Timeout-Befehls 4 Minuten (240 Sekunden) dauern bis er unten ist. Die Batch Datei VMsbeenden.bat wird also gar nicht mehr ausgeführt, wenn die shutdown.exe (die durch mich modifzierte) aufgerufen wird.
Woran liegt das?
Danke und bin gespannt
Simon
dieser Beitrag steht auch bei wer-weiss-was (bevor einer sich über das Doppelpostig auregt), dieses Forum habe ich aber erst nach dem Posting "entdeckt".
Zum Thema:
Folgenden Code habe ich zuerst in einer shutdown.BAT gespeichert, diese dann zur shutdown.EXE kompiliert und mit dieser neuen EXE dann die originale shutdown.EXE ersetzt. Zuvor habe ich die originale shutdown.exe in shutdownorig.exe umbenannt:
ANFANG
:Startet die Batch-Datei zum Herunterfahren der Virtuellen Maschinen
call "E:\Dateien System\Skripte\VMsbeenden.bat"
:Fährt anschließend den Rechner herunter
c:\windows\system32\shutdownorig.exe -p
ENDE
Die aufgerufene VMsbeenden.bat Datei hat einen Timeoutbefehl von (zu Testzwecken) 240 Sekunden.
Mein Ziel war bzw. ist es, dass wenn ich in der Windows7-Startleiste --> "Herunterfahren" wähle (also der ganz reguläre Weg einen Windows Rechner herunterzufahren), der Rechner zuerst meine Virtuellen Maschinen beendet (mit dem Aufruf VMsbeenden.bat) und danach mit shutdownorig.exe den Rechner runterfährt.
Wenn ich allerdings diesen eben beschriebenen Prozess durchführe, dauert es leider keine 30 Sekunden bis der Rechner unten ist. Es müsste aber allein schon wegen des Timeout-Befehls 4 Minuten (240 Sekunden) dauern bis er unten ist. Die Batch Datei VMsbeenden.bat wird also gar nicht mehr ausgeführt, wenn die shutdown.exe (die durch mich modifzierte) aufgerufen wird.
Woran liegt das?
Danke und bin gespannt
Simon
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 147725
Url: https://administrator.de/contentid/147725
Ausgedruckt am: 04.11.2024 um 18:11 Uhr
9 Kommentare
Neuester Kommentar
moin,
ohne jetzt auf weiteren Details rumreiten zu wollen.
in der großen runden Ablage
Ergo - geb dem Kind einen anderen Namen und vergiss das bat2exe gedöhns - denn die wird zur Laufzeit eh wieder im %Temp% als bat expandiert um ausgeführt zu werden.
btw: ich vermute eher nicht, dass ein klicken auf Start beenden die shutdown exe benutzt.
Denn auch die hat nur einen verweis auf eine rundll (wenn ich das richtig im Kopf habe)
Gruß
ohne jetzt auf weiteren Details rumreiten zu wollen.
- Eine .exe - die ursprünglich im %windir%\system32 Ordner war - fasst man nicht an.
in der großen runden Ablage
Ergo - geb dem Kind einen anderen Namen und vergiss das bat2exe gedöhns - denn die wird zur Laufzeit eh wieder im %Temp% als bat expandiert um ausgeführt zu werden.
btw: ich vermute eher nicht, dass ein klicken auf Start beenden die shutdown exe benutzt.
Denn auch die hat nur einen verweis auf eine rundll (wenn ich das richtig im Kopf habe)
Gruß
Moin Brucki,
willkommem im Forum.
Vielleicht wartet das start /wait noch auf die schliessenden Anführungszeichen am Ende....?
Aber ist sich in deinem Fall auch nicht so wichtig, denn T-Mo hat sicherlich den wichtigsten Tipp gegeben.
Wenn du dat Knöppken "Herunterfahren" auswählst, dann wird mit hoher Wahrscheinlichkeit NICHT irgendeine "shutdown.exe" aus dem system32-Verzeichnis gerufen. Sondern etwas über "Rundll".
--> zusammengefasst: egal, ob du als "shutdown.exe" da eine "kompilierte Batchdatei" oder eine leere Textdatei mit diesem Namen hinstellst - das Herunterfahren wird dennoch gehen.
Probier es doch einfach - sorg durch geschicktes Umbenennen der Shutdown.exe doch dafür, dass keine da ist.
Und dann doppelklick den "Herunterfahren"-Animierknopf.
Nach deiner Theorie müsste jetzt der Rechner melden "Keine Möglichkeit zum Herunterfahren gefunden - Windows wird ewig weiterlaufen.."
Grüße
Biber
[Edit] @bastla
Ja nee, dann aber eher
start /wait "MfG bastla" "E:\Dateien System\Skripte\VMsbeenden.bat"
Aber dann kommst als nächstes "Und wie bekomme ich das Cmd-Fenster unsichtbar...?" [/Edit]
willkommem im Forum.
Zitat von @Brucki:
start /wait "E:\Dateien System\Skripte\VMsbeenden.bat
Hat also nicht wirklich hingehauen, trotzdem danke, oder habe ich was falsch gemacht?
Unbedingt.start /wait "E:\Dateien System\Skripte\VMsbeenden.bat
Hat also nicht wirklich hingehauen, trotzdem danke, oder habe ich was falsch gemacht?
Vielleicht wartet das start /wait noch auf die schliessenden Anführungszeichen am Ende....?
Aber ist sich in deinem Fall auch nicht so wichtig, denn T-Mo hat sicherlich den wichtigsten Tipp gegeben.
Wenn du dat Knöppken "Herunterfahren" auswählst, dann wird mit hoher Wahrscheinlichkeit NICHT irgendeine "shutdown.exe" aus dem system32-Verzeichnis gerufen. Sondern etwas über "Rundll".
--> zusammengefasst: egal, ob du als "shutdown.exe" da eine "kompilierte Batchdatei" oder eine leere Textdatei mit diesem Namen hinstellst - das Herunterfahren wird dennoch gehen.
Probier es doch einfach - sorg durch geschicktes Umbenennen der Shutdown.exe doch dafür, dass keine da ist.
Und dann doppelklick den "Herunterfahren"-Animierknopf.
Nach deiner Theorie müsste jetzt der Rechner melden "Keine Möglichkeit zum Herunterfahren gefunden - Windows wird ewig weiterlaufen.."
Grüße
Biber
[Edit] @bastla
Ja nee, dann aber eher
start /wait "MfG bastla" "E:\Dateien System\Skripte\VMsbeenden.bat"
Aber dann kommst als nächstes "Und wie bekomme ich das Cmd-Fenster unsichtbar...?" [/Edit]
start /wait "E:\Dateien System\Skripte\VMsbeenden.bat
Hat also nicht wirklich hingehauen, trotzdem danke, oder habe ich was falsch gemacht?
Vielleicht wartet das start /wait noch auf die schliessenden Anführungszeichen am Ende....?Hat also nicht wirklich hingehauen, trotzdem danke, oder habe ich was falsch gemacht?
start
" immer noch langweilig ...... daher zumindest:
start /wait "" "E:\Dateien System\Skripte\VMsbeenden.bat"
bastla
Hallo,
üblicherweise macht man so etwas über ein Start bzw. in Deinem Falle "Stopp"-Skript. Ich nehme an, der PC ist nicht in einer Domäne. Die Lokale Richtlinie stellst Du über den Gruppenrichtlinieneditor des PCs ein (im Suchfeld gpedit.msc) ausführen.
Unter
Der Standardpfad bei Windows 7 für diese Skripte ist:
Grüße
üblicherweise macht man so etwas über ein Start bzw. in Deinem Falle "Stopp"-Skript. Ich nehme an, der PC ist nicht in einer Domäne. Die Lokale Richtlinie stellst Du über den Gruppenrichtlinieneditor des PCs ein (im Suchfeld gpedit.msc) ausführen.
Unter
Computerkonfiguration -> Windows-Einstellungen -> Skripts -> Herunterfahren
kannst Du dann Skripts (u.a. cmd-Dateien) angeben, die die gewünschten Befehle beinhalten.Der Standardpfad bei Windows 7 für diese Skripte ist:
C:\Windows\System32\GroupPolicy\Machine\Scripts\Shutdown
kann aber theoretisch geändert werden. Es gibt vereinzelte Berichte, dass es dann Schwierigkeiten gibt, habe ich selber noch nie ausprobiert.Grüße