SYSTEMTIME immer 01.01.1601



  • Hallo,

    ich verzweifele gerade ein wenig und hoffe, einer von Euch kann mir helfen.
    Ich möchte das Änderungsdatum einer Datei in eine double-Variable schreiben in der Form YYMMDDhhmm

    Auf meinem Laptop (Windows XP, 32 Bit) wird für eine Datei, die letztmalig am 21.11.2016 um 18:08 geändert wurde in der Variaben gespeichert: 1611211808,
    also korrekt.

    Auf meinem Desktop (Windows 10 Pro, 64 Bit) wird für die gleiche Datei das gleiche gespeichert, also ebenfalls korrekt.

    Auf meinem Firmenrechner (Citrix, Windows Server 2008) wird für die gleiche Datei das gleiche gespeichert, also ebenfalls korrekt.

    Auf meiner VDI (Virtual Desktop Infrastructure, Windows 7 Enterprise, 64 Bit) in der Firma, wo die Software laufen soll, wird jedoch für die gleiche Datei ein negativer Wert gespeichert. Und auf der Fehlersuche bin ich darauf gestoßen, dass die SYSTEMTIME-Werte für diese Datei die folgenden sind:

    timeSysFile.wYear = 1601
    timeSysFile.wMonth = 1
    timeSysFile.wDay = 1
    timeSysFile.wHour = 0
    timeSysFile.wMinute = 0

    Das ist mein Code dazu:

    WIN32_FILE_ATTRIBUTE_DATA Dateidaten;
    
    SYSTEMTIME timeSysFile;
    FILETIME timeFile;
    
    double time = 0;
    
    GetFileAttributesEx(Datei.cFileName, GetFileExInfoStandard, &Dateidaten);
    FILETIME timeFile = Dateidaten.ftLastWriteTime;
    FileTimeToSystemTime(&timeFile, &timeSysFile);
    
    time = ((timeSysFile.wYear - 2000) * 100000000 +
             timeSysFile.wMonth * 1000000 +
             timeSysFile.wDay * 10000 +
             timeSysFile.wHour * 100 +
             timeSysFile.wMinute);
    

    Hat zufällig irgendjemand eine Vermutung, woran das liegen könnte?

    Danke für Eure Ideen.



  • Hallo an alle,

    auch wenn ich es bisher noch nicht verstehe, konnte ich das Problem umgehen.
    Wenn ich meine Software auf der VDI vom einem Serverlaufwerk aus starte, dann ist das Änderungsdatum korrekt.
    Das im 1. Beitrag beschriebene Problem tritt nur auf, wenn ich die Software von der lokalen Festplatte meiner VDI aus starte.

    Also starte ich meine Software bis auf weiteres einfach von einem Serverlaufwerk aus.


Anmelden zum Antworten