(Via Batch) erkennen, ob Windows neu startet oder runterfährt

hallo!
ich möchte beim herunterfahren ein script starten, dass alle relevanten daten von meinem rechner sichert. das klappt auch wunderbar.
da das backup relativ lange dauert und ich den rechner im laufe eines arbeitstages recht oft neu starte, möchte ich dieses script nur bei einem shutdown ausführen. gibt es unter windows evtl. sowas wie "runlevel", mit dem man den Systemzustand abfragen kann?
gruß
sven
 
Also mir wäre kein Weg bekannt, dass du das unterscheiden kannst. Du kannst dir zwar ein Skript schreiben und dann per GPO beim shutdown ausführen, aber es wird dabei nicht zwischen Neustart und Herunterfahren unterschieden. Einzige Möglichkeit für einen Workaround wäre, dass du das nicht über GPO machst, sondern ein Skript schreibst und dort dann den Befehl für das Herunterfahren mit rein nimmst. Das kannst du dir dann ja verlinken und immer wenn du über diesen Link den Rechner herunterfährst, dann wird erst noch gesichert, sonst aber nicht.
 
Bei XP und Co konnte man das im GPEditor (bzw. bei Homeversionen per Hand in der Registry eintragen)
http://www.winfaq.de/faq_html/Content/tip1000/onlinefaq.php?h=tip1004.htm
Einfach über "gpedit.msc" ausführen und unter "Windows-Einstellungen -> Scripts bei Herunterfahren/Starten" editieren.

Dürfte bei Windows7 ähnlich sein:
http://www.computerperformance.co.uk/windows7/windows7_group_policy.htm

Das ist ja genau das, was ich mit GPO bereits erwähnt habe, aber dort kannst du herunterfahren und neustarten nicht unterscheiden.
 
windows kann meines wissens nicht via api herausfinden welchen typs ein aktueller shutdown ist (es gibt nichtmal eine api die dir auf anfrage sagt ob gerade ein shutdown läuft ... das erfährt deine anwendung maximal per callback oder WM_QUERYENDSESSION / WM_ENDSESSION ... oder wenn du dreister weise selbst einen shutdown einleitest ... läuft bereits einer bekommst du als antwort ERROR_SHUTDOWN_IN_PROGRESS)

was allerdings klappen könnte wäre das system eventlog nach dem letzten 1074-event von USER32 zu durchsuchen ... je nach windows version kannst du da ggf. prüfen ob der shutdown type "reboot" ist oder nicht...
wäre nu meine erste idee dazu, keine ahnung ob das klappt

per batch würde das vermutlich auf einen externen script oder programmaufruf hinaus führen

auf einem 2003er server gäbe es dafür das script eventquery, auf anderen platformen wirst du dir was zurechtbasteln oder auf third party tools zurückgreifen müssen
 
Zurück
Oben