Effizientes Programmieren - oder Windows Autostart fürs Herunterfahren

pcProfie

Aktives Mitglied
Hallo

ich möchte für Überwachungszwecke ein Programm haben, dass mir jeden Start und jedes Herunterfahren dokumentiert. Ich habe das bereits mit dem Start gemacht: jedes mal wird in eine Datei die Uhrzeit geschrieben, z.B. "08.12.14 - 14:24:57". Ich wollte nun auch irgendwie das Herunterfahren loggen, ohne Ressourcen zu verschwenden. Wie sollte ich das machen, der WindowListener ist vlt nicht die richtige Wahl, da ich alles ohne GUI mache. Gibt es unter Win7 vlt sogar soetwas wie einen Autostart Ordner fürs Herunterfahren?

Danke schonmal!
 
Windows selbst bietet da bestimmt irgendwelche Schnittstellen (siehe Microsoft / Windows Doku). Eine Andere Möglichkeit wäre, einfach alle X Minuten (z.B. 2, 5 oder 10) die letzte Zeile im Logfile mit der Aktuellen zu ersetzen. Also z.B.

1.12.14 - 10:00:00: PC wird hochgefahren
Code:
01.12.2014 - 10:00:00 boot

1.12.14 - 10:02:00: PC läuft
Code:
01.12.2014 - 10:00:00 boot
01.12.2014 - 10:02:00 Lebenszeichen

1.12.14 - 10:04:00: PC läuft
Code:
01.12.2014 - 10:00:00 boot
01.12.2014 - 10:04:00 Lebenszeichen

1.12.14 - 10:06:00: PC läuft
Code:
01.12.2014 - 10:00:00 boot
01.12.2014 - 10:06:00 Lebenszeichen

1.12.2014 - 10:07:00: PC wird heruntergefahren.

1.12.2014 - 10:10:00: PC wird hochgefahren
Code:
01.12.2014 - 10:00:00 boot
01.12.2014 - 10:06:00 Lebenszeichen
01.12.2014 - 10:10:00 boot

P.S.: Das hat aber auch zur folge, dass sich deine Festplatte bei längerem Standby nicht abschaltet => mehr Stromverbrauch.
 
Zuletzt bearbeitet:
Windows bietet einen Dienst an, um Programme auszuführen, bevor es herunter gefahren wird. Allerdings müsstest du dann eine Batchdatei starten, die dein Java Programm startet.

Allerdings könntest du dann auch gleich mit der Batchdatei die Zeile schreiben. Oder wenn du mehr Freiheiten haben möchtest, kannst du auch mit PowerShell oder irgendeiner anderen nativen Sprache arbeiten.

Das geht übrigens auch beim Start. Dazu brauchst du Java gar nicht 😉
 
Zuletzt bearbeitet:
Windows bietet einen Dienst an, um Programme auszuführen, bevor es herunter gefahren wird.

[...]

Allerdings könntest du dann auch gleich mit der Batchdatei die Zeile schreiben.

[...]

Das geht übrigens auch beim Start. Dazu brauchst du Java gar nicht 😉


Dann ist die Sache natürlich easy-cheasy:

Code:
@echo off
echo %date:~0% - %time:~0,8% %1 >> logfile.txt

Für boot: syslog.bat boot
Für Shutdown: syslog.bat shutdown
Damit ließen sich dann auch alle möglichen Dinge loggen welche dir Windows Event-Basiert zur Verfügung stellt.
 
Zuletzt bearbeitet:
Dann ist die Sache natürlich easy-cheasy:

Code:
@echo off
echo %date:~0% - %time:~0,8% %1 >> logfile.txt

Für boot: syslog.bat boot
Für Shutdown: syslog.bat shutdown
Damit ließen sich dann auch alle möglichen Dinge loggen welche dir Windows Event-Basiert zur Verfügung stellt.

Wo müsste ich die Dateien dann hinpacken und wie mach ich das mitm boot und shutdown?
 
Windows selbst bietet da bestimmt irgendwelche Schnittstellen (siehe Microsoft / Windows Doku). Eine Andere Möglichkeit wäre, einfach alle X Minuten (z.B. 2, 5 oder 10) die letzte Zeile im Logfile mit der Aktuellen zu ersetzen. Also z.B.

1.12.14 - 10:00:00: PC wird hochgefahren
Code:
01.12.2014 - 10:00:00 boot

1.12.14 - 10:02:00: PC läuft
Code:
01.12.2014 - 10:00:00 boot
01.12.2014 - 10:02:00 Lebenszeichen

1.12.14 - 10:04:00: PC läuft
Code:
01.12.2014 - 10:00:00 boot
01.12.2014 - 10:04:00 Lebenszeichen

1.12.14 - 10:06:00: PC läuft
Code:
01.12.2014 - 10:00:00 boot
01.12.2014 - 10:06:00 Lebenszeichen

1.12.2014 - 10:07:00: PC wird heruntergefahren.

1.12.2014 - 10:10:00: PC wird hochgefahren
Code:
01.12.2014 - 10:00:00 boot
01.12.2014 - 10:06:00 Lebenszeichen
01.12.2014 - 10:10:00 boot

P.S.: Das hat aber auch zur folge, dass sich deine Festplatte bei längerem Standby nicht abschaltet => mehr Stromverbrauch.

Das Problem dabei ist, dass das Programm immer was im Hintergrund macht. Beim Zocken nicht so gut
 
Windows bietet einen Dienst an, um Programme auszuführen, bevor es herunter gefahren wird. Allerdings müsstest du dann eine Batchdatei starten, die dein Java Programm startet.

Allerdings könntest du dann auch gleich mit der Batchdatei die Zeile schreiben. Oder wenn du mehr Freiheiten haben möchtest, kannst du auch mit PowerShell oder irgendeiner anderen nativen Sprache arbeiten.

Das geht übrigens auch beim Start. Dazu brauchst du Java gar nicht 😉

Das Problem ist: ich kann nur java 😀

@JavaMeister: selbes
 
pcProfile hat gesagt.:
Das Problem dabei ist, dass das Programm immer was im Hintergrund macht. Beim Zocken nicht so gut
Die Performance, die das frisst, ist fürs Zocken s******egal. Moderne Spiele sind derart komplex, was die alles in 2 Minuten machen geht über einen Schreibvorgang um Universen hinaus.

Bzgl. des Dienst problems: Gucky hat das Eingebracht, vllt kennt er in paar Details. An sonsten ist Google dein Freund 🙂
 
Tjaaaaaaa. Batchdateien sind nun nicht allzu kompliziert und schwer zu erstellen.

Zehn Minuten googlen haben das hier ergeben:
Code:
IF "%1"=="-sd" GOTO sd
IF "%1"=="-boot" GOTO boot
IF NOT "%1"=="" GOTO ende
IF "%1"=="" GOTO ende

echo %1

:boot
set datetimef=%date:~-4%.%date:~3,2%.%date:~0,2% - %time:~0,2%:%time:~3,2%:%time:~6,2%
echo boot %datetimef% >> test.txt
GOTO ende

:sd
set datetimef=%date:~-4%.%date:~3,2%.%date:~0,2% - %time:~0,2%:%time:~3,2%:%time:~6,2%
echo shutdown %datetimef% >> test.txt
GOTO ende

:endeIF "%1"=="-sd" GOTO sd
IF "%1"=="-boot" GOTO boot
IF NOT "%1"=="" GOTO ende
IF "%1"=="" GOTO ende

echo %1

:boot
set datetimef=%date:~-4%.%date:~3,2%.%date:~0,2% - %time:~0,2%:%time:~3,2%:%time:~6,2%
echo boot %datetimef% >> test.txt
GOTO ende

:sd
set datetimef=%date:~-4%.%date:~3,2%.%date:~0,2% - %time:~0,2%:%time:~3,2%:%time:~6,2%
echo shutdown %datetimef% >> test.txt
GOTO ende

:ende

ist zwar JodaTime aber ich denke, so wäre es sogar besser.

Rufst du das Skript mit -sd auf, so schreibt es den Text zum Herunterfahren.
Rufst du es mit -boot auf, so schreibt es den Text zum Booten.
 
Der ominöse Dienst (!), von dem hier die Rede ist, existiert seit Windows 95 (Microsoft Plus!-Paket) als "System Agent", wurde in Windows 98 zu "Task-Scheduler" umbenannt und heißt seit Vista "Aufgabenplanung". Sollte eigentlich jedem bekannt sein, der kein totaler PC-Neuling ist...

Ich lebe auf der Erde - und hinter welchem Mond wohnt ihr?
Tztztz...
Und dann einen Usernamen wie "pcProfie" wählen...
 
Zuletzt bearbeitet:
Der ominöse Dienst (!), von dem hier die Rede ist, existiert seit Windows 95 (Microsoft Plus!-Paket) als "System Agent", wurde in Windows 98 zu "Task-Scheduler" umbenannt und heißt seit Vista "Aufgabenplanung". Sollte eigentlich jedem bekannt sein, der kein totaler PC-Neuling ist...

Ich lebe auf der Erde - und hinter welchem Mond wohnt ihr?
Tztztz...
Und dann einen Usernamen wie "pcProfie" wählen...
mhm.... siehe bild...
Anhang anzeigen 7248

ich hab das jetzt folgendermaßen gemacht, hab guckys ein bit vereinfacht (für die dies interessiert):

@ECHO OFF
SET dtStamp9=%date:~0,6%%date:~8% - %time:~0,8%
ECHO DN: %dtStamp9% >> C:\Startlogger.log

in C:\Windows\System32\GroupPolicy\User\Scripts\Logoff
und

@ECHO OFF
SET dtStamp9=%date:~0,6%%date:~8% - %time:~0,8%
ECHO . >> C:\Startlogger.log
ECHO %USERNAME% >> C:\Startlogger.log
ECHO UP: %dtStamp9% >> C:\Startlogger.log

in C:\Windows\System32\GroupPolicy\User\Scripts\Logon
und beide jeweils in die gruppenrichtlinien geschrieben: gpedit.msc - benutzerkonfiguration - windows einstellungen - skripts und die beiden files da jeweils eingefügt. dadurch muss java nicht gestartet werden und das programm läuft nicht dauerhaft -> performancccceee

danke an alle konstruktiven beiträge!
 

Zurück
Oben