Jak znaleźć godzinę i datę instalacji systemu Windows?

134

To może brzmieć jak trochę szalone pytanie, ale jak mogę sprawdzić (miejmy nadzieję za pomocą klucza API / rejestru) godzinę i datę instalacji systemu Windows?

Najlepsze, co do tej pory mogę wymyślić, to przejrzeć różne pliki w C: \ Windows i spróbować zgadnąć ... ale to nie jest do końca przyjemne rozwiązanie.

Bezpłatne Wildebeest
źródło

Odpowiedzi:

90

W regedit.exePrzejdź do:

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

Jest podana jako liczba sekund od 1 stycznia 1970 r. (Uwaga: w przypadku systemu Windows 10 ta data będzie datą zainstalowania ostatniej aktualizacji funkcji, a nie pierwotną datą instalacji).

Aby przekonwertować tę liczbę na czytelną datę / godzinę, po prostu wklej wartość dziesiętną w polu „UNIX TimeStamp:” tego narzędzia online do konwersji czasu Unix .

Tommy
źródło
3
To świetnie, czy jest jakieś specjalne miejsce, do którego poszedłeś, aby uzyskać te informacje, czy po prostu je znałeś?
Darmowy Wildebeest
5
Działa świetnie, z wyjątkiem sytuacji, gdy system Windows został zainstalowany przy użyciu obrazu dysku. Czy istnieje sposób sprawdzenia tworzenia profilu użytkownika, aby rozwiązać ten problem?
Bernard Vander Beken
8
Nie działa odzwierciedla najnowszą datę instalacji pakietu serwisowego / aktualizacji (np.
Bieżącą
2
Myślę, że podaje ostatnią datę aktualizacji systemu Windows zamiast daty zainstalowania systemu.
Tharindu Sathischandra
moja instalacja systemu Windows 7 nie wyświetla InstallDate w tej lokalizacji rejestru, jego SP1.
użytkownik734028
175

Kolejne pytanie, które można rozwiązać w przypadku „ wyzwania związanego z kodem ”: oto kilka plików wykonywalnych kodu źródłowego, które rozwiązują problem, ale nie są one kompletne.
Czy znajdziesz skrypt VB, który każdy może wykonać na swoim komputerze, z oczekiwanym wynikiem?


systeminfo|find /i "original" 

podałby aktualną datę ... a nie liczbę sekund;)
Jak komentuje Sammy , podaje więcej niż potrzebujesz. Działa to tylko wtedy, gdy język jest angielski: musi pasować do języka. W przypadku szwedzkiego byłoby to „ ” i „ ” dla języka niemieckiego.find /i "install"

ursprungligtursprüngliches


W skrypcie programu Windows PowerShell wystarczy wpisać:

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

Za pomocą WMI ( Instrumentacja zarządzania Windows )

Jeśli nie używasz WMI, musisz przeczytać, a następnie przekonwertować wartość rejestru:

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"

W pozostałej części tego posta znajdziesz inne sposoby uzyskiwania dostępu do tych samych informacji. Wybierz swoją truciznę;)


W VB.Net dałoby to coś takiego:

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

W Autoit (języku skryptowym systemu Windows) byłoby to:

;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

W Delphy 7 wyglądałoby to następująco:

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;

Jako alternatywę CoastN proponuje w komentarzach :

Ponieważ system.ini-filepozostaje to nietknięte w typowym wdrożeniu systemu Windows, możesz faktycznie uzyskać datę instalacji za pomocą następującego narzędzia oneliner:

(PowerShell): (Get-Item "C:\Windows\system.ini").CreationTime
VonC
źródło
2
Dowiedziałem się dlaczego. To dlatego, że mój Windows nie jest w języku angielskim. :)
Pedro77
3
Służy systeminfo|find /i "original"tylko do filtrowania „Pierwotnej daty instalacji”. Jeśli użyjesz „install” jako ciągu znaków, uzyskasz więcej informacji niż potrzebujesz. Ponadto, jeśli język nie jest angielski, to prawdopodobnie nie zadziała. Musi pasować do języka. W przypadku szwedzkiego byłoby to „ursprungligt”, a dla niemieckiego „ursprüngliches”.
Samir,
1
Dla mnie systeminfo | find / i "oryginał" wrócił 6/30/2017, co musiało być aktualizacją systemu Windows, ponieważ miałem maszynę od około 4 lat.
Tim,
1
Właśnie przez to przeszedłem, ale przy 245 poprawkach domyślnie okno CMD nie miało wystarczającej liczby pionowych linii, aby wyświetlić całe wyjście „systeinfo”. Przez minutę drapałem się po głowie.
Postępowałem zgodnie z
1
Pokazuje, że zainstalowałem system dwa tygodnie temu, ale tak naprawdę był to rok lub dwa. Wygląda na to, że jest to data ostatniej dużej aktualizacji.
Hans
48

Mamy wystarczająco dużo odpowiedzi, ale chcę umieścić moje 5 centów.

Mam zainstalowany system Windows 10 10/30/2015i Creators Update na 04/14/2017poprzedniej instalacji. Wszystkie metody opisane w odpowiedziach przed moimi podają mi datę instalacji Aktualizacji twórców.

Pierwotna data instalacji

Udało mi się znaleźć datę utworzenia kilku plików, która jest zgodna z rzeczywistą (czystą) datą instalacji mojego systemu Windows 10:

  • w C:\Windows

Kilka plików C: \ Windows

  • w C:\

Kilka plików C: \

Nikolay Kostov
źródło
7
Lepiej niż inne odpowiedzi, ale co z wdrożeniami z obrazami?
user3800527
7
Jest to zdecydowanie bliższe poprawnej odpowiedzi; inne rozwiązania nie działają już z aktualizacjami systemu Windows 10. Jednak żaden z wymienionych tutaj 5 plików / folderów nie miał poprawnej daty w moim systemie (niektóre były później, a niektóre wcześniej). Jednak znalazłem 1 plik i 2 foldery z poprawną datą w moim systemie: C: \ Windows \ hbcikrnl.ini, C: \ Windows \ symbols \, & C: \ Windows \ CSC \. Jeśli więc wiesz, kiedy to było w przybliżeniu, przejdź do C: \ Windows \, ​​pokaż pliki systemowe, posortuj według daty i znajdź coś, co wygląda dobrze.
Matt Jacobi
Dla mojego systemu Windows 10 system.ini, BOOTNXT i bootmgr miały poprawną datę. Win.ini i $ Recycle.Bin miały nowsze daty.
Keith
Data system.ininie ma sensu na moich komputerach z systemem Windows 7 i 2008, wydaje się, że utworzony znacznik czasu ze źródeł instalacji jest kopiowany podczas instalacji. C:\pagefile.sysmiał poprawną sygnaturę czasową.
Daniel Sokolowski
38

Otwórz wiersz poleceń, wpisz „ systeminfo ” i naciśnij enter. Uzyskanie informacji może zająć systemowi kilka minut. Na stronie wyników znajdziesz wpis „Data instalacji systemu”. To jest data instalacji systemu Windows. Ten proces działa w XP, Win7, a także na win8.

diptangshu sengupta
źródło
1
Pamiętaj, że aby to zrobić, musisz być administratorem.
Barrie Reader
2
W systemie Windows 7 daje to wpis „Oryginalna data instalacji”, który z jakiegoś powodu to 11.1.2002, co wyraźnie nie jest poprawne :(
silverchair
18

Jak sprawdzić datę / godzinę instalacji systemu Windows 7:

po prostu zobacz to ...

  • start> wpisz CMD
  • wejdź do systeminfo

Otóż ​​to; wtedy możesz zobaczyć wszystkie informacje o swojej maszynie; bardzo prosta metoda

ani alexander
źródło
13

Czy kiedykolwiek chciałeś sprawdzić datę instalacji systemu operacyjnego na swoim komputerze? Oto szybki i łatwy sposób sprawdzenia daty i godziny zainstalowania (lub ostatniej aktualizacji) systemu operacyjnego komputera.

Otwórz wiersz poleceń (start-> run -> wpisz cmd-> naciśnij enter) i uruchom następujące polecenie

systeminfo | znajdź / i "data instalacji"

Za kilka sekund zobaczysz datę instalacji

Rudzik
źródło
3
dopóki nie zainstalujesz głównego pakietu serwisowego, będzie odzwierciedlać tę datę
user3800527
12

W Powershell uruchom polecenie:

systeminfo | Select-String "Install Date:"
user3827180
źródło
2
Select-String wymaga wersji Windows PowerShell> 3.0 lepszego wykorzystaniafind /i
sactiw
5

System operacyjny Windows 10 ma jeszcze jeden podklucz rejestru, ten w pliku gałęzi SYSTEM:

Computer\HKEY_LOCAL_MACHINE\SYSTEM\Setup\

Informacje dotyczące daty instalacji to data / godzina instalacji oryginalnego systemu operacyjnego komputera. Informuje również o rozpoczęciu aktualizacji, tj

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

Może to oczywiście nie nastąpić po zakończeniu aktualizacji, użytkownik może zdecydować się na wyłączenie zamiast ponownego uruchamiania po wyświetleniu monitu itp.

Aktualizacja może faktycznie zakończyć się innego dnia i

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

będzie odzwierciedlać datę / godzinę rozpoczęcia aktualizacji.

Amit Gupta
źródło
4

HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDate i systeminfo.exe podaje nieprawidłową datę .

Definicja UNIX timestamp jest niezależna strefa czasowa. Znacznik czasu systemu UNIX jest definiowany jako liczba sekund, które upłynęły od godziny 00:00:00 uniwersalnego czasu koordynowanego (UTC), czwartek 1 stycznia 1970 r., Bez uwzględnienia sekund przestępnych.

Innymi słowy, jeśli zainstalowałeś swój komputer w Seattle, WA i przeniosłeś się do Nowego Jorku, NY, HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDate nie będzie tego odzwierciedlać. Jest to zła data , nie przechowuje strefy czasowej, w której komputer został pierwotnie zainstalowany.

Efektem tego jest jeśli zmienisz strefę czasową podczas działania tego programu, data będzie nieprawidłowa. Musisz ponownie uruchomić plik wykonywalny, aby uwzględnił zmianę strefy czasowej.

Ale możesz uzyskać informacje o strefie czasowej z klasy WMI Win32_Registry .

InstallDate jest w formacie UTC (yyyymmddHHMMSS.xxxxxx ± UUU) zgodnie z artykułem Microsoft TechNet „Praca z datami i godzinami przy użyciu WMI”, gdzie w szczególności xxxxxx to milisekundy, a ± UUU to liczba minut inna niż Greenwich Mean Time.

 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
źródło
Definicja znacznika czasu UNIX obejmuje strefę czasową UTC. Jeśli komputer zostanie zainstalowany tego samego dnia o godzinie 18:00 czasu nowojorskiego i 15:00 czasu Seattle, będzie miał ten sam znacznik czasu systemu UNIX, ponieważ został zainstalowany o tej samej godzinie UTC. Jeśli zainstalowałeś 1 kwietnia 2018 o 15:00 w Seattle i przeniosłeś się do Nowego Jorku, a następnie przekonwertowałeś z UTC na swój czas lokalny, zostanie wyświetlony 1 kwietnia 2018 o 18:00 i będzie poprawny, ponieważ było 6 : 00 PM w Nowym Jorku po zainstalowaniu w Seattle.
jla
Dziękuję jla, nie było jasne w moim poście. Jeśli zmienisz strefę czasową w locie, gdy program jest uruchomiony, zmiana strefy czasowej nie zostanie odzwierciedlona. Musisz ponownie uruchomić program, aby strefa czasowa zaczęła obowiązywać. To jest to samo zachowanie co Powershell.
Markus
InstallDate zwraca czas lokalny z zastosowaną aktualną strefą czasową, a także strefę czasową w postaci + XXX. Kiedy zmienia się strefa czasowa, zmienia się data instalacji, a także strefa czasowa. Jeśli data instalacji w UTC to 2000-01-01T12: 00: 00Z. InstallDate to 20000101120000,000000 + 000. Ustaw strefę czasową na UTC + 5, a będzie to 20000101170000.000000 + 300. W przypadku korzystania z powyższego kodu strefa czasowa zostanie dodana dwukrotnie. Aby uzyskać datę UTC, wiersz „InstallDate =” należy zmienić na: InstallDate = new DateTime (rok, miesiąc, data, godzina, min, s, ms, DateTimeKind.Utc) - UTCoffset;
Jesús Diéguez Fernández
3

Uważam, że data utworzenia c: \ pagefile.sys może być w większości przypadków całkiem wiarygodna. Można go łatwo uzyskać za pomocą tego polecenia (zakładając, że system Windows jest zainstalowany na C :):

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

„/ As” określa „pliki systemowe”, w przeciwnym razie nie zostanie znaleziony. „/ T: c” ustawia pole czasu, aby wyświetlić „tworzenie”.

MoonDogg
źródło
1
To dałoby datę utworzenia pliku stronicowania, która jest całkowicie niezwiązana z datą instalacji samego systemu operacyjnego. Można go odtworzyć z wielu powodów, a nawet zmodyfikować, jeśli naprawdę chcesz. To nie jest niezawodna metoda.
Alejandro
1
Nie jest „całkowicie niezwiązany”, ponieważ jest tworzony podczas początkowej instalacji. Więc jeśli nie został celowo utworzony ponownie lub usunięty w pewnym momencie, w „większości przypadków” data utworzenia będzie taka sama jak początkowa data instalacji, ponieważ utrzymuje się ona po uaktualnieniu. Tak, nie jest w 100% niezawodny, ale jest szybki i łatwy i wydaje mi się, że jest dokładny w znacznie większej liczbie przypadków niż nie. Zdecydowanie więcej niż wiele odpowiedzi tutaj.
MoonDogg,
Możesz odtworzyć ten plik w dowolnym momencie, a jeśli metoda nie gwarantuje prawidłowego wyniku w 100% przypadków, nikt nie może na nim polegać.
Slava Murygin
2

Określ datę instalacji systemu Windows za pomocą aplikacji WMIC

wmic os pobierz installdate

Lko Jegue
źródło
1
Prawdopodobnie odczytuje to tylko klucz rejestru InstallDate i ma ten sam problem; zmienia się wraz z aktualizacjami kompilacji.
Anders
1

Użyj speccy. Pokazuje datę instalacji w sekcji System operacyjny. http://www.piriform.com/speccy

Jestem w
źródło
1
Nie jest to rozwiązanie programistyczne. Jeśli istnieje jakiś interfejs, z którym (na przykład) może współdziałać Powershell, wymień go.
Tyler Montney
1

Możesz także sprawdzić dowolny folder na dysku systemowym, taki jak „windows” i „pliki programów”. Kliknij folder prawym przyciskiem myszy, kliknij właściwości i sprawdź w zakładce Ogólne datę utworzenia folderu.

Tekki
źródło
5
Chociaż ważne - nie jest to rozwiązanie programistyczne
Matt Wilko
@Matt Dał ci algorytm w Natural Lenguaje, więc po prostu skopiuj go na ludzkie urządzenie! : D
Jonathan
3
W nowszych wersjach systemu Windows, które używają instalacji opartej na obrazie ( .WIMpliki), data utworzenia jest datą utworzenia obrazu przez firmę Microsoft, a nie datą zainstalowania systemu operacyjnego na konkretnym komputerze.
ctype.h
1

W RunCommand napisz "MSINFO32"i naciśnij enter Pokaże się wszystkie informacje związane z systemem

shailesh
źródło
Wszystkie informacje z wyjątkiem czasu instalacji. Windows 7 z dodatkiem SP1.
Pavel Vlasov
0

Naciśnij WindowsKey+ Ri wprowadźcmd

W oknie poleceń wpisz:

systeminfo | find /i "Original"

(w przypadku starszych wersji okien wpisz „ORYGINAŁ” wielkimi literami).

abdullahjavaid86
źródło
Czy ktoś wie, dlaczego głosowanie negatywne? U mnie zadziałało, czy może z jakiegoś powodu nie jest dokładne? Może wyjaśnij, oddając głos
przeciw
@russelrillema ostatni główny dodatek Service Pack zastępuje tę datę.
Don Tomato
Jeśli masz system Windows 10 v1809, wybierz Ustawienia> System> Informacje. Znajdź specyfikację systemu Windows i tam masz pole o nazwie „Zainstaluj na”. (Uwaga: nie jestem pewien, czy działa na starszych wersjach systemu Windows)
abdullahjavaid86
0

Możesz po prostu sprawdzić datę utworzenia folderu Windows (kliknij go prawym przyciskiem myszy i sprawdź właściwości) :)

farhad.kargaran
źródło
0

Możesz to zrobić za pomocą PowerShell:

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()}}
Kawałki bekonu
źródło
0

Wypróbuj to polecenie PowerShell:

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
źródło
Prawie prawda i należy zauważyć o wiele więcej, ponieważ uwzględnia aktualizacje kompilacji, które zmieniają klucz w HKLM: \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion, ale trzeba połączyć oba, ponieważ klucze źródłowego systemu operacyjnego nie są nawet obecne, jeśli system tak naprawdę nigdy nie był aktualizowany (jeszcze), a także brakowałoby daty ostatniej aktualizacji kompilacji
Syberdoor