Zeiten für Windows Start und Beenden



  • Hallo!

    Ist es möglich die Zeiten abzufragen, wann Windows gestartet und beendet wurde?

    so long



  • Wann Windows gestartet wurde:
    GetTickCount() (Achtung: 32-bit Überlauf möglich!)
    bzw. GetTickCount64() (nur neuere Windows-versionen)
    Liefert Dir die Anzahl der Ticks seit dem Start.

    Wann Windows beendet wurde:
    In der Registry:
    HKEY_LOCAL_MACHINE
    "SYSTEM\\CurrentControlSet\\Control\\Windows"
    ShutdownTime

    Liefert Dir den Zeitpunkt wann der (erfolgreiche!) Shutdown erfolgte.

    HTH
    Martin



  • Danke!
    Nur die ShutdownTime stimmt bei mir nicht.
    Zwei mal habe ich den Rechner so um 17:00 runtergefahren, dann stand jeweils eine ShutdownTime von ~15:30 drin.
    Jemand eine Ahnung woran das liegt?



  • Shutdown und Hibernate (also Ruhezustand) könnten möglicherweise unterschiedliche Ergebnisse hervorrufen, müssen aber nicht.
    Speziell bei Hibernate hab ich´s nicht getestet.
    Ich gehe mal davon aus, Du redest von einem "echten" Shutdown?

    Desweiteren mußt Du die möglichen Zeitverschiebungen zwischen Systemzeit und lokaler Zeit berücksichtigen, z.B. die Zeitzonen und Sommerzeitkorrekturen.

    Anbei das schnell zusammenkopierte Code-Fragment:
    (wichtig ist nur das Prinzip, Syntaxfehler sind durch kopieren möglich, da bei mir eigentlich Wrapper und TCHAR's zum Einsatz kommen!)

    FILETIME s_filetime_local;
    SYSTEMTIME s_systemtime;
    UNION_REGDATA u_regdata;
    
    if ( RegOpenKeyEx( HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Control\\Windows", &hKey ) == ERROR_SUCCESS )
    {
      RegQueryValueEx( hKey, "ShutdownTime" );
    }
    dword_bufsize = 32767;
    if ( RegQueryValueEx( hKey, "ShutdownTime", NULL, &dword_binarytype, (LPBYTE)u_regdata.tcsz_temp_32767stellen, &dword_bufsize ) == ERROR_SUCCESS )
    {
      FileTimeToLocalFileTime( &u_regdata.s_filetime, &s_filetime_local );
      FileTimeToSystemTime( &s_filetime_local, &s_systemtime );
      printf( file_debuginfo, "Zeit: %02d.%02d.%04d %02d:%02d:%02d",
                              s_systemtime.wDay, s_systemtime.wMonth,
                              s_systemtime.wYear, s_systemtime.wHour,
                              s_systemtime.wMinute, s_systemtime.wSecond );
    }
    

    Anm: u_regdata ist eine union, in der einfach nur die verschiedenen Formate der Registry-Einträge enthalten ist.

    HTH
    Martin



  • danke, jetzt gehts, hab das FileTimeToLocalFileTime nicht bedacht!


Anmelden zum Antworten