brucki
Goto Top

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

Content-Key: 147725

Url: https://administrator.de/contentid/147725

Printed on: April 26, 2024 at 08:04 o'clock

Member: ceng.de
ceng.de Jul 27, 2010 at 09:59:45 (UTC)
Goto Top
ANFANG
:Startet die Batch-Datei zum Herunterfahren der Virtuellen Maschinen
call "E:\Dateien System\Skripte\VMsbeenden.bat"
schonmal start / wait "E:\Dateien System\Skripte\VMsbeenden.bat" versucht?
:Fährt anschließend den Rechner herunter
c:\windows\system32\shutdownorig.exe -p
ENDE
Mitglied: 60730
60730 Jul 27, 2010 at 10:52:56 (UTC)
Goto Top
moin,

ohne jetzt auf weiteren Details rumreiten zu wollen.

  • Eine .exe - die ursprünglich im %windir%\system32 Ordner war - fasst man nicht an.
Und deswegen ist deine bat2exe schon längst dort, wo unser Biber hier intern der Verwalter ist.
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ß
Member: Snowman25
Snowman25 Jul 27, 2010 at 11:38:40 (UTC)
Goto Top
nicht call sondern start /wait "<pfad>" verwenden!

PS: wtf? wo kommen die 2 anderen Postings her? Ich schwöre, dass die gerade eben noch nicht da waren, obwohl ich die Seite vorhin erst aufgemacht hab...
Member: Brucki
Brucki Jul 27, 2010 at 15:37:30 (UTC)
Goto Top
Hi.

Das hatte ich mir auch schon gedacht, dass der über "herunterfahren" durchgeführte Prozess nicht wirklich über die shutdown.exe durchgeführt wird, sondern irgendwie anders.
1. Kannst Du das definitiv bestätitgen, dass dem nicht so ist, dass quasi Veränderungen an der shutdown.exe (oder Ersetzungen durch "Imitate") für mein Vorhaben nichts bringen?
2. Wie bekomme ich es dann hin, dass bevor man den Rechner regulär herunterfährt, die Virtuellen Maschinen automatisch geschlossen werden?

Hintergrund: Der Rechner fungiert eigentlich als HTPC im 24/7 Modus. Ab und an kann es aber vorkommen, dass sowohl ich diesen per Remote als aber auch meine Frau über die HTPC Oberfläche neustarten muss (oder auch herunterfahren und danach wieder hochfahren). Damit dabei nicht immer die am Laufen befindlichen VMs einfach so aus ihrer Laufzeit gerissen werden, würde ich diese gerne jedesmal zuerst regulär herunterfahren (VMsbeenden.bat) und danach erst mit dem eigentlichen Herunterfahren weitermachen lassen.

Ich hoffe, dafür gibt's ne Lösung
vG
Simon
Member: Brucki
Brucki Jul 27, 2010 at 15:39:13 (UTC)
Goto Top
Hi

Ich habe die .bat modifiziert und danach wieder zu einer .exe gemacht, aber sowohl bei der bat als auch bei der exe öffnet sich nur ein weitere shell Fenster und nix weiter passiert. (nicht einmal mehr die Ausführung der VMsbeenden.bat).

start /wait "E:\Dateien System\Skripte\VMsbeenden.bat

Hat also nicht wirklich hingehauen, trotzdem danke, oder habe ich was falsch gemacht?

vG
Simon
Member: Biber
Biber Jul 27, 2010 at 16:26:04 (UTC)
Goto Top
Moin Brucki,

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.
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
Zitat von @bastla:
... daher zumindest:
start /wait "" "E:\Dateien System\Skripte\VMsbeenden.bat"
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]
Member: bastla
bastla Jul 27, 2010 at 16:41:18 (UTC)
Goto Top
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....?
Dann wär' dem "start" immer noch langweilig face-wink ...

... daher zumindest:
start /wait "" "E:\Dateien System\Skripte\VMsbeenden.bat"
Grüße
bastla
Member: Brucki
Brucki Aug 08, 2010 at 16:44:49 (UTC)
Goto Top
Hi,
ich habe meine Versuche das Shutdown-Prozedere in Windows per Startmenü zu verändern, indem ich die shutdown.exe modifiziere, aufgegeben. Ich denke auch, dass die shutdown.exe lediglich ein Hilfsmittel ist und nicht der eigentliche Shutdownbefehl. Nein, ich habe es nicht getestet (durch Löschen bzw. umbenennen der Datei), aber bei genauerem Überlegen erscheint mir das die einzig wahre Antwort.

Wenn es trotzdem einem mal einfällt, wie man das Shutdown-Prozedere bei WIndows durch den regulären Startmenübefehl beeinflussen kann, dann freu ich mich über einen Nachricht.

Bis demnächst
Simon
Member: jhinrichs
jhinrichs Aug 09, 2010 at 09:13:58 (UTC)
Goto Top
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
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