Heim > Backend-Entwicklung > C++ > Wie kann ich das Erstellungsdatum meiner Anwendung programmgesteuert anzeigen?

Wie kann ich das Erstellungsdatum meiner Anwendung programmgesteuert anzeigen?

Barbara Streisand
Freigeben: 2025-01-22 01:16:09
Original
965 Leute haben es durchsucht

How Can I Programmatically Display My Application's Build Date?

Erstellungsdatum anzeigen: Komplette Anleitung

Die Bestimmung des Erstellungsdatums Ihrer Anwendung ist für Benutzer von entscheidender Bedeutung, um festzustellen, ob sie über die neueste Version verfügen. Obwohl die Anzeige der Build-Nummer üblich ist, liefert sie in der Regel nur wenige Informationen. In diesem Artikel werden Möglichkeiten untersucht, das Erstellungsdatum programmgesteuert zu extrahieren und in einem benutzerfreundlichen Format anzuzeigen.

Erstellungsdatum abrufen

Im Gegensatz zur Build-Nummer gibt es keine direkte Möglichkeit, das Build-Datum aus den Metadaten der Assembly abzurufen. Eine zuverlässige Methode besteht jedoch darin, den im PE-Header der ausführbaren Datei eingebetteten Linker-Zeitstempel zu extrahieren. Der folgende C#-Code demonstriert diese Technik:

<code class="language-c#">public static DateTime GetLinkerTime(this Assembly assembly, TimeZoneInfo target = null)
{
    var filePath = assembly.Location;
    const int c_PeHeaderOffset = 60;
    const int c_LinkerTimestampOffset = 8;

    var buffer = new byte[2048];

    using (var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
        stream.Read(buffer, 0, 2048);

    var offset = BitConverter.ToInt32(buffer, c_PeHeaderOffset);
    var secondsSince1970 = BitConverter.ToInt32(buffer, offset + c_LinkerTimestampOffset);
    var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

    var linkTimeUtc = epoch.AddSeconds(secondsSince1970);

    var tz = target ?? TimeZoneInfo.Local;
    var localTime = TimeZoneInfo.ConvertTimeFromUtc(linkTimeUtc, tz);

    return localTime;
}</code>
Nach dem Login kopieren

Anwendungsbeispiele

Um diese Methode zu verwenden, rufen Sie einfach GetLinkerTime() auf der ausführenden Assembly auf:

<code class="language-c#">var linkTimeLocal = Assembly.GetExecutingAssembly().GetLinkerTime();</code>
Nach dem Login kopieren

Anleitung zu .NET Core

Bitte beachten Sie, dass diese Methode nach .NET Core 1.1 nicht mehr ordnungsgemäß funktioniert. Der extrahierte Linker-Zeitstempel liefert ein zufälliges Jahr im Bereich 1900–2020.

Das obige ist der detaillierte Inhalt vonWie kann ich das Erstellungsdatum meiner Anwendung programmgesteuert anzeigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage