Boottime von PC in Registry schreiben

  • Hallo,

    ich habe jetzt paar Sachen probiert, komme aber nicht weiter.

    Kann mir jemand helfen bei der Erstellung eines Scripts, welches das Bootdatum und die Zeit in die Registry reinschreibt?
    Der zweite Part, das reinschreiben in die Registry geht mit dem Befehl:

    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Boot\Last_Boot", "Bootdatum", "REG_SZ", $xxx)

    Gruß

  • Für Datum und Uhrzeit gibt es ja Macros:

    [autoit]

    $boottime = @YEAR & "/" & @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC

    [/autoit]

    Das Skript dann in den Autostart ziehen und fertig.

  • Hallo, das ist aber nicht das Auslesen von boottime, sondern es wird die aktuelle Uhrzeit angegeben...


    Für Datum und Uhrzeit gibt es ja Macros:

    [autoit]

    $boottime = @YEAR & "/" & @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC

    [/autoit]

    Das Skript dann in den Autostart ziehen und fertig.

  • stellun

    Hallo, ich möchte in die Registry reinschreiben, wann der Rechner eingeschaltet wurde. Bei BgInfo heißt dieser Punkt Boot Time.

  • Wenn das Skript automatisch mit dem Anmelden ausgeführt wird und sofort das Systemdatum (zeit) ausliest sollte das doch ungefähr stimmen?

    Oder willst du bestimmen wann der "Powerknopf" am PC gedrückt wurde? ?(

  • Hallo,

    So geht es. Ist dasselbe was BGInfo macht, nur halt AutoIt.
    Was du testen müsstest ist, ob es auch morgens bei einstelligen Stunden Werten funktioniert. ;)
    Die Ausgabewerte kannst du dir natürlich so zusammenbasteln wie du Sie benötigst.

    Es wäre schön, wenn du deinen Namen in deinen Postings erwähnen würdest.
    Oder gibt es da Einschränkungen von deiner Seite?

    Gruß,
    Axel


    Spoiler anzeigen
    [autoit]


    Dim $BootTime
    $COMPUTERNAME=EnvGet("COMPUTERNAME")
    BootTime()

    [/autoit] [autoit][/autoit] [autoit]

    $Year=StringLeft($BootTime, 4)
    $Month=StringMid($BootTime, 5, 2)
    $Day=StringMid($BootTime, 7, 2)
    $Hour=StringMid($BootTime, 9, 2)
    $Minute=StringMid($BootTime, 11, 2)
    $Seconds=StringMid($BootTime, 13, 2)
    ConsoleWrite('> Letzer Boot Zeitstempel : ' & $Hour & ':' & $Minute & ':' & $Seconds & ' am ' & $Day & '.' & $Month & '.' & $Year & @CRLF)
    RegWrite('HKLM\Software\Irgendwas', 'Boottime', 'REG_SZ', $Hour & ':' & $Minute & ':' & $Seconds & ' - ' & $Day & '.' & $Month & '.' & $Year)
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Func BootTime()
    Local $objItems
    Local $objWMI

    $wbemFlagReturnImmediately = 0x10
    $wbemFlagForwardOnly = 0x20

    $objWMI = ObjGet("winmgmts:\\" & $COMPUTERNAME & "\root\CIMV2")
    $objItems = $objWMI.ExecQuery('Select * from Win32_OperatingSystem', 'WQL', $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    If IsObj($objItems) Then
    For $objItem In $objItems
    $BootTime = $objItem.LastBootUptime
    ConsoleWrite('> Last Boot Up Time : ' & $BootTime & @CRLF)
    Next
    EndIf
    EndFunc

    [/autoit]

    --
    Mit freundlichen Grüßen,
    Axel Stoppa

    Einmal editiert, zuletzt von MCTAST245 (30. Juni 2009 um 13:42)

  • Danke für den den Beitrag und den Script .

    Mein Username werde ich in der nächsten Zeit ändern. Der ist nicht mehr zeitgemäß, mittlerweile kenne ich mich etwas besser aus mit AutoIT.

  • Stimmt dieses Datum auch?

    [autoit]

    #include<Date.au3>
    MsgBox(0, '', _DateAdd("s", -Int(TimerDiff(0)/1000), _NowCalc()))

    [/autoit]
  • Super das funktioniert auch, nur wie rufe ich jetzt ein Programm auf wenn Boottime >= 5 Minuten.

  • OK, das sieht einfach aus, aber was macht dieses Script eigentlich?

    Erst einmal Sleep von einer Sekunde

    dann halt 1 Sekunde x 60 x 5 = man kommt auf 5 Minuten und dann eine Messegebox.
    Aber dieses Script fragt nicht wirtlich nach Boottime ab oder?

  • Hallo AutoIt-Leihe,

    ich habe dir doch ein Script zur Verfügung gestellt. Das macht dasselbe wie BGInfo und schreibt zusätzlich die Boottime in die Registrierung. 8)
    Was und wie in die Registrierung geschrieben wird, kannst du doch nach deinen Wünschen anpassen. :rolleyes:
    Ich verstehe ehrlich gesagt nicht, warum du dieses Script nicht verwendest. ?(

    Und jetzt fragst du bei anderen Scripten, ob das wirklich die Boottime ist. :wacko:
    NEIN ist es nicht.

    Was benötigst du denn genau?

    Viele Grüße,
    Axel

    --
    Mit freundlichen Grüßen,
    Axel Stoppa

  • Das mit dem reinschreiben in die registry ist eine ganz gute Sache und ich danke Dir sehr für den Script, jedoch muss ich irgendwie den Wert später auslesen. Wenn also die Boottime weniger 5 Minuten ist dann soll es beendet werden (goto exit) und bei >= 5 Minuten soll ein Programm starten (z.B. Aufruf von Msg).

    Das möchte ich mit meiner Anfrage erreichen. Dein Script funktionier super und ich bin nicht auf der Suche nach was anderem, sondern muss etwas starten, wenn Rechner >= 5 Minuten an ist.

    Sorry für Verwirrung.

  • Hallo AutoIt Leihe,

    ich weiß nicht genau ob ich dazu heute komme, jedoch werde ich mal schauen welche die Lösung implementiert werden kann.

    Gruß,
    Axel

    --
    Mit freundlichen Grüßen,
    Axel Stoppa

  • Systemlaufzeit in Sekunden:

    [autoit]

    MsgBox(0,"","PC läuft seit " & TimerDiff(0)/1000 & " Sekunden")

    [/autoit]
  • Hallo Jungs,

    jetzt habe ich genügend Scripte, die Anzeige wie lange der Rechner an ist :)

    Aber wie oben erwähnt muss ich dann ein Programm schreiben, wenn Rechner >= 5 Minuten an ist.
    Könnte das jemand berücksichtigen ;)

  • Mit dem letzten Codeschnipsel von mir geht das einfach ;)

    Spoiler anzeigen
    [autoit]

    $Minuten = 5

    [/autoit] [autoit][/autoit] [autoit]

    ; warten bis seit Systemstart $Minuten Minuten vergangen sind
    ; wenn das Skript mehr als $Minuten Minuten nach dem Systemstart
    ; gestartet wurde, wird es sofort weiter ausgeführ
    $Millisekunden = $Minuten* 60 * 1000
    While TimerDiff(0) < $Millisekunden
    Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(0, '', "Seit dem Systemstart sind mehr als " & $Minuten & " Minuten vergangen (" & Round(TimerDiff(0)/60000,3) & " Minuten)")

    [/autoit]


    Das Programm muss natürlich in den Autostart, damit es autmatisch gestartet wird und waret, bis 5 Minuten vorbei sind.

  • Super, jetzt läuft alles. Könnte mir noch jemand kurz sagen, wie ich das Icon unten rechts von Auto-IT entfernen kann?
    Im schlimmsten Fall würde es 5 Minuten laufen und da möchte ich die Leute nicht verunsichern wenn Sie neue Icons sehen.

    Gruß