Wie finde ich die Installationszeit und das Installationsdatum von Windows?

133

Das klingt vielleicht nach einer verrückten Frage, aber wie kann ich (hoffentlich über eine API / einen Registrierungsschlüssel) die Installationszeit und das Installationsdatum von Windows herausfinden?

Das Beste, was ich bisher finden kann, ist, verschiedene Dateien in C: \ Windows zu betrachten und zu erraten ... aber das ist nicht gerade eine gute Lösung.

Kostenlose Gnus
quelle

Antworten:

90

In regedit.exegehen zu:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate

Es wird als Anzahl der Sekunden seit dem 1. Januar 1970 angegeben. (Hinweis: Für Windows 10 ist dieses Datum der Zeitpunkt, an dem das letzte Feature-Update installiert wurde, nicht das ursprüngliche Installationsdatum.)

Um diese Zahl in ein lesbares Datum / eine lesbare Uhrzeit umzuwandeln, fügen Sie einfach den Dezimalwert in das Feld "UNIX TimeStamp:" dieses Online-Tools zur Unix- Zeitkonvertierung ein .

Tommy
quelle
3
Das ist großartig. Gibt es einen besonderen Ort, an dem Sie diese Informationen erhalten haben, oder haben Sie es einfach gewusst?
Free Wildebeest
5
Funktioniert hervorragend, außer wenn Windows mit einem Disk-Image installiert wurde. Gibt es eine Möglichkeit, die Erstellung des Benutzerprofils zu überprüfen, um dieses Problem zu beheben?
Bernard Vander Beken
8
Funktioniert nicht und spiegelt das neueste Installationsdatum für Servicepack / Update wider (z.
B. die AKTUELLE
2
Ich denke, es gibt das Datum der letzten Windows-Aktualisierung anstelle des Installationsdatums des Systems.
Tharindu Sathischandra
In meiner Windows 7-Installation wird InstallDate nicht an diesem registrierten Speicherort, SP1, angezeigt.
user734028
175

Eine weitere Frage, die für eine ' Code-Herausforderung ' geeignet ist : Hier sind einige ausführbare Quellcode-Dateien, um das Problem zu beantworten, aber sie sind nicht vollständig.
Finden Sie ein vb-Skript, das jeder mit dem erwarteten Ergebnis auf seinem Computer ausführen kann?


systeminfo|find /i "original" 

würde dir das tatsächliche Datum geben ... nicht die Anzahl der Sekunden;)
Wie Sammy kommentiert , find /i "install"gibt es mehr als du brauchst.
Und das funktioniert nur, wenn das Gebietsschema Englisch ist: Es muss mit der Sprache übereinstimmen.
Für Schwedisch wäre dies " ursprungligt" und " ursprüngliches" für Deutsch.


Im Windows PowerShell- Skript können Sie einfach Folgendes eingeben:

PS > $os = get-wmiobject win32_operatingsystem
PS > $os.ConvertToDateTime($os.InstallDate) -f "MM/dd/yyyy" 

Mit WMI ( Windows Management Instrumentation )

Wenn Sie WMI nicht verwenden, müssen Sie den Registrierungswert lesen und dann konvertieren:

PS > $path = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion'
PS > $id = get-itemproperty -path $path -name InstallDate
PS > $d = get-date -year 1970 -month 1 -day 1 -hour 0 -minute 0 -second 0
## add to hours (GMT offset)
## to get the timezone offset programatically:
## get-date -f zz
PS > ($d.AddSeconds($id.InstallDate)).ToLocalTime().AddHours((get-date -f zz)) -f "MM/dd/yyyy"

Der Rest dieses Beitrags bietet Ihnen andere Möglichkeiten, auf dieselben Informationen zuzugreifen. Wähle dein Gift ;)


In VB.Net würde das so etwas wie geben:

Dim dtmInstallDate As DateTime
Dim oSearcher As New ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem")
For Each oMgmtObj As ManagementObject In oSearcher.Get
    dtmInstallDate =
        ManagementDateTimeConverter.ToDateTime(CStr(oMgmtO bj("InstallDate")))
Next

In Autoit (einer Windows-Skriptsprache) wäre dies:

;Windows Install Date
;
$readreg = RegRead("HKLM\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\", "InstallDate")
$sNewDate = _DateAdd( 's',$readreg, "1970/01/01 00:00:00")
MsgBox( 4096, "", "Date: " & $sNewDate )
Exit

In Delphy 7 würde das so lauten:

Function GetInstallDate: String;
Var
  di: longint;
  buf: Array [ 0..3 ] Of byte;
Begin
  Result := 'Unknown';
  With TRegistry.Create Do
  Begin
    RootKey := HKEY_LOCAL_MACHINE;
    LazyWrite := True;
    OpenKey ( '\SOFTWARE\Microsoft\Windows NT\CurrentVersion', False );
    di := readbinarydata ( 'InstallDate', buf, sizeof ( buf ) );
//    Result := DateTimeToStr ( FileDateToDateTime ( buf [ 0 ] + buf [ 1 ] * 256 + buf [ 2 ] * 65535 + buf [ 3 ] * 16777216 ) );
showMessage(inttostr(di));
    Free;
  End;
End;

Als Alternative schlägt CoastN in den Kommentaren vor :

Da dies system.ini-filebei einer typischen Windows-Bereitstellung unberührt bleibt, können Sie das Installationsdatum mithilfe des folgenden Oneliner abrufen:

(PowerShell): (Get-Item "C:\Windows\system.ini").CreationTime
VonC
quelle
2
Ich fand heraus warum. Es liegt daran, dass mein Windows nicht in Englisch ist. :)
Pedro77
3
Verwenden Sie systeminfo|find /i "original"diese Option, um nur das "ursprüngliche Installationsdatum" zu filtern. Wenn Sie "install" als Zeichenfolge verwenden, erhalten Sie mehr Informationen als Sie benötigen. Wenn das Gebietsschema nicht Englisch ist, funktioniert dies wahrscheinlich nicht. Es muss zur Sprache passen. Für Schwedisch wäre dies "Ursprungligt" und "Richtliches" für Deutsch.
Samir
1
Für mich gab systeminfo | find / i "original" den 30.06.2017 zurück, was ein Windows-Update gewesen sein musste, da ich den Computer seit ungefähr 4 Jahren habe.
Tim
1
Ich habe das gerade durchgearbeitet, aber mit 245 Hotfixes hatte das CMD-Fenster standardmäßig nicht genügend vertikale Linien, um die gesamte 'systeinfo'-Ausgabe anzuzeigen. Kratzte mir eine Minute am Kopf. Befolgen
Sie
1
Es zeigt, dass ich das System vor zwei Wochen installiert habe, aber tatsächlich waren es ein oder zwei Jahre. Es scheint, dass dies ein Datum des letzten großen Upgrades ist.
Hans
48

Wir haben hier genug Antworten, aber ich möchte meine 5 Cent setzen.

Ich habe Windows 10 installiert 10/30/2015und Creators Update zusätzlich zu 04/14/2017meiner vorherigen Installation installiert. Alle in den Antworten vor mir beschriebenen Methoden geben mir das Datum der Installation des Creators Update an.

Ursprüngliches Installationsdatum

Ich habe es geschafft, das Erstellungsdatum einiger Dateien zu finden, das dem tatsächlichen (sauberen) Installationsdatum von Windows 10 entspricht:

  • im C:\Windows

Einige C: \ Windows-Dateien

  • im C:\

Einige C: \ Dateien

Nikolay Kostov
quelle
7
Besser als die anderen Antworten, aber wie wäre es mit abgebildeten Bereitstellungen?
user3800527
7
Dies ist definitiv näher an der richtigen Antwort; Die anderen Lösungen funktionieren nicht mehr mit Windows 10-Upgrades. Keine der 5 hier aufgeführten Dateien / Ordner hatte jedoch das richtige Datum auf meinem System (einige waren später und andere tatsächlich früher). Ich habe jedoch 1 Datei und 2 Ordner mit dem richtigen Datum auf meinem System gefunden: C: \ Windows \ hbcikrnl.ini, C: \ Windows \ Symbole \, & C: \ Windows \ CSC \. Wenn Sie also wissen, wann es ungefähr war, gehen Sie zu C: \ Windows \, ​​zeigen Sie Systemsystemdateien an, sortieren Sie nach Datum und finden Sie etwas, das richtig aussieht.
Matt Jacobi
Für meine Windows 10 system.ini hatten BOOTNXT und bootmgr das richtige Datum. Win.ini & $ Recycle.Bin hatten neuere Daten.
Keith
Das Datum, system.inidas auf meinen Windows 7- und 2008-Computern keinen Sinn ergab, scheint, dass der aus den Installationsquellen erstellte Zeitstempel bei der Installation kopiert wird. C:\pagefile.syshatte den richtigen Zeitstempel.
Daniel Sokolowski
38

Öffnen Sie die Eingabeaufforderung, geben Sie " systeminfo " ein und drücken Sie die Eingabetaste. Ihr System benötigt möglicherweise einige Minuten, um die Informationen abzurufen. Auf der Ergebnisseite finden Sie einen Eintrag als "Systeminstallationsdatum". Dies ist das Datum der Windows-Installation. Dieser Prozess funktioniert unter XP, Win7 und auch unter Win8.

Diptangshu Sengupta
quelle
1
Beachten Sie, dass Sie Administrator sein müssen, um dies zu tun.
Barrie Reader
2
Unter Windows 7 gibt dies einen Eintrag "Original Install Date", der aus irgendeinem Grund der 11.1.2002 ist, was eindeutig nicht korrekt ist :(
silverchair
18

So ermitteln Sie Datum und Uhrzeit der Installation von Windows 7:

schau dir das an ...

  • Start> CMD eingeben
  • Geben Sie systeminfo ein

das ist es; dann können Sie alle Informationen über Ihre Maschine sehen; sehr einfache Methode

ani alexander
quelle
13

Wollten Sie schon immer das Installationsdatum Ihres PC-Betriebssystems herausfinden? Auf diese Weise können Sie schnell und einfach Datum und Uhrzeit ermitteln, zu denen Ihr PC-Betriebssystem installiert (oder zuletzt aktualisiert) wurde.

Öffnen Sie die Eingabeaufforderung (start-> run -> geben Sie cmd-> drücken Sie die Eingabetaste) und führen Sie den folgenden Befehl aus

systeminfo | find / i "Installationsdatum"

In wenigen Sekunden sehen Sie das Installationsdatum

Robin
quelle
3
Bis Sie ein wichtiges Service Pack installieren, spiegelt es dieses Datum wider
user3800527
12

Führen Sie in Powershell den folgenden Befehl aus:

systeminfo | Select-String "Install Date:"
user3827180
quelle
2
Select-String erfordert Windows PowerShell Version> 3.0 bessere Verwendungfind /i
sactiw
5

Das Windows 10-Betriebssystem verfügt über einen weiteren Registrierungsunterschlüssel, diesen in der SYSTEM-Hive-Datei:

Computer\HKEY_LOCAL_MACHINE\SYSTEM\Setup\

Die Informationen zum Installationsdatum hier geben das Datum und die Uhrzeit der Installation des Originalcomputers an. Außerdem erfahren Sie, wann das Update gestartet wurde, d. H.

 Computer\HKEY_LOCAL_MACHINE\SYSTEM\Setup\Source OS (Updated on xxxxxx)."

Dies kann natürlich nicht der Fall sein, wenn das Update endet. Der Benutzer kann sich dafür entscheiden, das System auszuschalten, anstatt es neu zu starten, wenn er dazu aufgefordert wird.

Das Update kann tatsächlich an einem anderen Tag abgeschlossen werden

Computer\HKEY_LOCAL_MACHINE\SYSTEM\Setup\Source OS (Updated on xxxxxx)"

gibt das Datum und die Uhrzeit an, zu der das Update gestartet wurde.

Amit Gupta
quelle
4

HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDate und systeminfo.exe erzeugen das falsche Datum .

Die Definition des UNIX-Zeitstempels ist zeitzonenunabhängig. Der UNIX-Zeitstempel ist definiert als die Anzahl der Sekunden, die seit 00:00:00 Coordinated Universal Time (UTC), Donnerstag, 1. Januar 1970, vergangen sind und Schaltsekunden nicht zählen.

Mit anderen Worten, wenn Sie Ihren Computer in Seattle, WA, installiert und nach New York, NY, umgezogen haben, wird dies in HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDate nicht berücksichtigt. Es ist das falsche Datum , es wird keine Zeitzone gespeichert, in der der Computer ursprünglich installiert wurde.

Dies hat zur Folge, dass das Datum falsch ist, wenn Sie die Zeitzone während der Ausführung dieses Programms ändern. Sie müssen die ausführbare Datei erneut ausführen, damit sie die Zeitzonenänderung berücksichtigt.

Sie können die Zeitzoneninformationen jedoch aus der WMI Win32_Registry- Klasse abrufen .

InstallDate hat das UTC-Format (yyyymmddHHMMSS.xxxxxx ± UUU) gemäß Microsoft TechNet- Artikel "Arbeiten mit Datums- und Uhrzeitangaben unter Verwendung von WMI", wobei insbesondere xxxxxx Millisekunden und ± UUU die Anzahl der Minuten in Greenwich Mean Time unterscheidet.

 private static string RegistryInstallDate()
    {

        DateTime InstallDate = new DateTime(1970, 1, 1, 0, 0, 0);  //NOT a unix timestamp 99% of online solutions incorrect identify this as!!!! 
        ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Registry");

        foreach (ManagementObject wmi_Windows in searcher.Get())
        {
            try
            {
                ///CultureInfo ci = CultureInfo.InvariantCulture;
                string installdate = wmi_Windows["InstallDate"].ToString(); 

                //InstallDate is in the UTC format (yyyymmddHHMMSS.xxxxxx±UUU) where critically
                // 
                // xxxxxx is milliseconds and       
                // ±UUU   is number of minutes different from Greenwich Mean Time. 

                if (installdate.Length==25)
                {
                    string yyyymmddHHMMSS = installdate.Split('.')[0];
                    string xxxxxxsUUU = installdate.Split('.')[1];      //±=s for sign

                    int year  = int.Parse(yyyymmddHHMMSS.Substring(0, 4));
                    int month = int.Parse(yyyymmddHHMMSS.Substring(4, 2));
                    int date  = int.Parse(yyyymmddHHMMSS.Substring(4 + 2, 2));
                    int hour  = int.Parse(yyyymmddHHMMSS.Substring(4 + 2 + 2, 2));
                    int mins  = int.Parse(yyyymmddHHMMSS.Substring(4 + 2 + 2 + 2,  2));
                    int secs  = int.Parse(yyyymmddHHMMSS.Substring(4 + 2 + 2 + 2 + 2, 2));
                    int msecs = int.Parse(xxxxxxsUUU.Substring(0, 6));

                    double UTCoffsetinMins = double.Parse(xxxxxxsUUU.Substring(6, 4));
                    TimeSpan UTCoffset = TimeSpan.FromMinutes(UTCoffsetinMins);

                    InstallDate = new DateTime(year, month, date, hour, mins, secs, msecs) + UTCoffset; 

                }
                break;
            }
            catch (Exception)
            {
                InstallDate = DateTime.Now; 
            }
        }
        return String.Format("{0:ddd d-MMM-yyyy h:mm:ss tt}", InstallDate);      
    }
Markus
quelle
Die Definition eines UNIX-Zeitstempels enthält eine Zeitzone (UTC). Wenn ein Computer am selben Tag um 18:00 Uhr New Yorker Zeit und um 15:00 Uhr Seattleer Zeit installiert wird, hat er denselben UNIX-Zeitstempel, da er zur gleichen Zeit UTC installiert wurde. Wenn Sie am 1. April 2018 um 15:00 Uhr in Seattle installiert haben und nach New York ziehen und dann von UTC zu Ihrer Ortszeit konvertieren, wird der 1. April 2018 um 18:00 Uhr angezeigt und ist korrekt, da es 6 war : 00 Uhr in New York, als Sie in Seattle installiert haben.
Jla
Danke jla, ich war in meinem Beitrag nicht klar. Wenn Sie die Zeitzone im laufenden Betrieb ändern, während das Programm ausgeführt wird, wird die Zeitzonenänderung nicht berücksichtigt. Sie müssen das Programm neu starten, damit die Zeitzone wirksam wird. Dies ist das gleiche Verhalten wie bei Powershell.
Markus
Das InstallDate gibt die Ortszeit mit der aktuell angewendeten Zeitzone sowie die Zeitzone im Formular + XXX zurück. Wenn sich die Zeitzone ändert, ändert sich das Installationsdatum und auch die Zeitzone. Wenn das Installationsdatum in UTC 2000-01-01T12: 00: 00Z war. Das Installationsdatum ist 20000101120000.000000 + 000. Stellen Sie die Zeitzone auf UTC + 5 ein und sie wird zu 20000101170000.000000 + 300. Bei Verwendung des obigen Codes wird die Zeitzone zweimal hinzugefügt. Um das UTC-Datum zu erhalten, sollte die Zeile "InstallDate =" geändert werden in: InstallDate = new DateTime (Jahr, Monat, Datum, Stunde, Minuten, Sekunden, ms, DateTimeKind.Utc) - UTCoffset;
Jesús Diéguez Fernández
3

Ich finde, dass das Erstellungsdatum von c: \ pagefile.sys in den meisten Fällen ziemlich zuverlässig sein kann. Es kann leicht mit diesem Befehl abgerufen werden (vorausgesetzt, Windows ist auf C installiert :):

dir /as /t:c c:\pagefile.sys

Das '/ as' gibt 'Systemdateien' an, andernfalls wird es nicht gefunden. Das '/ t: c' legt das Zeitfeld so fest, dass 'Erstellung' angezeigt wird.

MoonDogg
quelle
1
Dies würde das Erstellungsdatum der Auslagerungsdatei angeben, das völlig unabhängig vom Installationsdatum des Betriebssystems selbst ist. Es kann aus verschiedenen Gründen neu erstellt und sogar manipuliert werden, wenn Sie es wirklich wollen. Das ist keine zuverlässige Methode.
Alejandro
1
Es ist nicht "völlig unabhängig", da es bei der Erstinstallation erstellt wird. Sofern es nicht absichtlich neu erstellt oder gelöscht wurde, entspricht das Erstellungsdatum in den meisten Fällen dem Erstellungsdatum, da es durch Upgrades erhalten bleibt. Ja, es ist nicht 100% zuverlässig, aber es ist schnell und einfach, und ich würde in weit mehr Fällen genau raten als nicht. Auf jeden Fall mehr als viele der Antworten hier.
MoonDogg
Sie können diese Datei jederzeit neu erstellen. Wenn die Methode nicht zu 100% das richtige Ergebnis garantiert, kann sich niemand wirklich darauf verlassen.
Slava Murygin
2

Bestimmen Sie das Windows-Installationsdatum mit WMIC

wmic os get installdate

Lko Jegue
quelle
1
Dies liest wahrscheinlich nur den InstallDate-Registrierungsschlüssel und hat das gleiche Problem. Es ändert sich bei Build-Updates.
Anders
1

Verwenden Sie speccy. Das Installationsdatum wird im Abschnitt Betriebssystem angezeigt. http://www.piriform.com/speccy

Amin
quelle
1
Keine Programmierlösung. Wenn es eine Art Schnittstelle gibt, mit der Powershell (zum Beispiel) interagieren kann, listen Sie sie auf.
Tyler Montney
1

Sie können auch überprüfen, ob ein Ordner im Systemlaufwerk wie "Windows" und "Programmdateien" vorhanden ist. Klicken Sie mit der rechten Maustaste auf den Ordner, klicken Sie auf die Eigenschaften und überprüfen Sie auf der Registerkarte Allgemein das Datum, an dem der Ordner erstellt wurde.

Tekki
quelle
5
Obwohl gültig - dies ist keine Programmierlösung
Matt Wilko
@Matt Er gibt Ihnen den Algorithmus in Natural Lenguaje, also kopieren Sie ihn einfach in ein menschliches Gerät! : D
Jonathan
3
In neueren Windows-Versionen, die eine imagebasierte Installation ( .WIMDateien) verwenden, ist das Erstellungsdatum der Zeitpunkt, an dem Microsoft das Image erstellt hat, nicht der Zeitpunkt, an dem das Betriebssystem auf einem bestimmten Computer installiert wurde.
ctype.h
1

In RunCommand schreiben "MSINFO32"und die Eingabetaste drücken. Es werden alle systembezogenen Informationen angezeigt

Shailesh
quelle
Alle Informationen außer der Installationszeit. Windows 7 SP1.
Pavel Vlasov
0

Drücken Sie WindowsKey+ Rund geben Sie eincmd

Geben Sie im Befehlsfenster Folgendes ein:

systeminfo | find /i "Original"

(Geben Sie für ältere Windows-Versionen "ORIGINAL" in Großbuchstaben ein.)

abdullahjavaid86
quelle
Weiß jemand warum die Abwahl? Hat für mich gearbeitet, ist es vielleicht aus irgendeinem Grund nicht korrekt? Vielleicht erklären, wenn Sie eine Abstimmung abgeben
russelrillema
@russelrillema Das letzte wichtige Service Pack überschreibt dieses Datum.
Don Tomato
Wenn Sie Windows 10 v1809 haben, gehen Sie zu Einstellungen> System> Info. Suchen Sie die Windows-Spezifikation und dort haben Sie ein Feld mit dem Namen "Installieren auf". (Hinweis: Nicht sicher, ob es auf älteren Versionen von Windows
funktioniert
0

Sie können einfach das Erstellungsdatum des Windows-Ordners überprüfen (klicken Sie mit der rechten Maustaste darauf und überprüfen Sie die Eigenschaften) :)

farhad.kargaran
quelle
0

Sie können dies mit PowerShell tun:

Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\' -Name InstallDate |
    Select-Object -Property @{n='InstallDate';e={[DateTime]::new(1970,1,1,0,0,0,0,'UTC').AddSeconds($_.InstallDate).ToLocalTime()}}
Speckwürfel
quelle
0

Versuchen Sie diesen Powershell-Befehl:

Get-ChildItem -Path HKLM:\System\Setup\Source* | 
 ForEach-Object {Get-ItemProperty -Path Registry::$_} | 
     Select-Object ProductName, ReleaseID, CurrentBuild, @{n="Install Date"; e={([DateTime]'1/1/1970').AddSeconds($_.InstallDate)}} | 
         Sort-Object "Install Date"
Futur'Fusionneur
quelle
Fast wahr, und es sollte noch viel mehr beachtet werden, da dies Build-Updates berücksichtigt, die den Schlüssel in HKLM ändern: \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion, aber beide müssen kombiniert werden, da die Schlüssel des Quellbetriebssystems nicht einmal vorhanden sind, wenn ein System vorhanden ist wurde (noch) nie aktualisiert und es würde auch das Datum des letzten Build-Updates fehlen
Syberdoor