Windows'un yükleme saatini ve tarihini nasıl bulabilirim?


134

Bu biraz çılgınca bir soru gibi gelebilir, ancak Windows'un kurulum saatini ve tarihini nasıl öğrenebilirim (umarım bir API / kayıt defteri anahtarı aracılığıyla)?

Şimdiye kadar gelebileceğim en iyi şey C: \ Windows'daki çeşitli dosyalara bakmak ve tahmin etmeye çalışmak ... ama bu tam olarak hoş bir çözüm değil.

Yanıtlar:


90

Şu regedit.exeadrese gidin:

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

1 Ocak 1970'ten bu yana geçen saniye sayısı olarak verilir. (Not: Windows 10 için bu tarih, orijinal yükleme tarihi değil, son özellik güncellemesi yüklendiğinde olacaktır.)

Bu sayıyı okunabilir bir tarihe / saate dönüştürmek için, ondalık değeri bu Unix Zaman Dönüştürme çevrimiçi aracının "UNIX TimeStamp:" alanına yapıştırmanız yeterlidir .


3
Harika, bu bilgiyi almak için gittiğiniz özel bir yer var mı, yoksa sadece biliyor muydunuz?
Ücretsiz Wildebeest

5
Windows'un bir disk görüntüsü kullanılarak yüklenmesi dışında harika çalışır. Bu sorunu çözmek için kullanıcı profilinin oluşturulmasını kontrol etmenin bir yolu var mı?
Bernard Vander Beken

8
Çalışmıyor en son hizmet paketini / güncelleştirme yükleme tarihini yansıtır (CURRENT sürümü, orijinal sürüm yükleme süresini değil
user3800527

2
Sistemin yüklü olduğu tarih yerine en son Windows Güncelleme tarihini verdiğini düşünüyorum.
Tharindu Sathischandra

Windows 7 yüklemem bu kayıt defteri konumunda SP1'i InstallDate göstermiyor.
user734028

175

Bir ' kod-meydan okuma ' için uygun başka bir soru : İşte sorunu cevaplamak için bazı kaynak kodu yürütülebilir, ancak bunlar tam değildir.
Beklenen sonuç ile herkesin bilgisayarında çalıştırabileceği bir vb script bulabilir misiniz?


systeminfo|find /i "original" 

Size gerçek tarih ... değil saniye sayısı verecekti;)
gibi Sammy yorumların , find /i "install"ihtiyaçtan fazla verir.
Ve bu yalnızca yerel ayar İngilizce ise işe yarar: Dili eşleştirmesi gerekir.
İsveççe için bu Almanca için " ursprungligt" ve " ursprüngliches" olacaktır.


Windows PowerShell betiğinde şunları yazabilirsiniz:

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

WMI ( Windows Yönetim Araçları ) kullanarak

WMI kullanmıyorsanız, kayıt defteri değerini okumalı ve dönüştürmelisiniz:

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"

Bu yayının geri kalanı size aynı bilgilere erişmenin başka yollarını sunar. Zehirinizi seçin;)


VB.Net bu gibi bir şey verecek:

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 (Windows komut dosyası dili), olurdu:

;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

Delphy 7'de bu şöyle devam eder:

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;

Alternatif olarak, CoastN yorumlarda şunları önermektedir :

Gibi system.ini-filetipik bir pencere dağıtımın bakir kalır, gerçekte aşağıdaki Oneliner kullanarak yüklemek-tarih alabilirsiniz:

(PowerShell): (Get-Item "C:\Windows\system.ini").CreationTime

2
Nedenini buldum. Çünkü Windows'um İngilizce değil. :)
Pedro77

3
systeminfo|find /i "original"Yalnızca "Orijinal Yükleme Tarihi" ne filtre uygulamak için kullanın . Eğer dize olarak "install" kullanırsanız, ihtiyacınız olandan daha fazla bilgi alırsınız. Ayrıca, yerel ayar İngilizce değilse, bu muhtemelen işe yaramaz. Dili eşleştirmesi gerekiyor. İsveççe için bu Almanca için "ursprungligt" ve "ursprüngliches" olacaktır.
Samir

1
Benim için systeminfo | find / i "orijinal" yaklaşık 4 yıldır makineyi yaşadığım için bazı windows güncellemesi olması gereken 30.06.2017 döndü.
Tim

1
Bunu yeni geçtim ama varsayılan olarak 245 düzeltmeyle CMD penceresinin tüm 'systeinfo' çıktısını görüntülemek için yeterli dikey çizgisi yoktu. Bir dakika başımı kaşıyordu. Düzeltmek için bunu takip ettim: stackoverflow.com/questions/1740876/…
asdf30

1
Sistemi iki hafta önce kurduğumu gösteriyor, ama aslında bir iki yıl oldu. Görünüşe göre bu son büyük güncellemenin tarihi.
hans

48

Burada yeterli cevabımız var ama 5 sentimi koymak istiyorum.

Windows 10'u yükledim 10/30/2015ve 04/14/2017önceki yüklememin üstüne Creators Update yükledim . Benden önceki yanıtlarda açıklanan tüm yöntemler bana İçerik Oluşturucu Güncellemesi yüklemesinin tarihini verir.

Orijinal Kurulum Tarihi

Windows 10'umun gerçek (temiz) yükleme tarihi ile eşleşen birkaç dosya oluşturma tarihi bulmayı başardım:

  • içinde C:\Windows

Birkaç C: \ Windows dosyası

  • içinde C:\

Birkaç C: \ dosya


7
Diğer cevaplardan daha iyi, ama görüntülü dağıtımlara ne dersiniz?
user3800527

7
Bu kesinlikle doğru cevaba daha yakın; diğer çözümler artık Windows 10 yükseltmeleriyle çalışmaz. Ancak, burada listelenen 5 dosya / klasörden hiçbiri sistemimde doğru tarihe sahip değildi (bazıları daha sonra bazıları da daha önce olduğu yerde). Ancak, sistemimde doğru tarihte 1 dosya ve 2 klasör buldum: C: \ Windows \ hbcikrnl.ini, C: \ Windows \ semboller \, & C: \ Windows \ CSC \. Bu nedenle, yaklaşık olarak ne zaman olduğunu biliyorsanız, C: \ Windows \ 'a gidin, sistem sistem dosyalarını gösterin, tarihe göre sıralayın ve doğru görünen bir şey bulun.
Matt Jacobi

Windows 10 system.ini dosyam için BOOTNXT ve bootmgr doğru tarihe sahipti. Win.ini & $ Recycle.Bin daha yeni tarihlere sahipti.
Keith

Tarih system.inibenim, Windows 7 ve 2008 makinelerde yapılan hiçbir anlamda, kurulum kaynaklardan yaratılan damgası tesiste kopyalanan anlaşılıyor. C:\pagefile.sysdoğru zaman damgasına sahipti.
Daniel Sokolowski

38

Komut istemini açın, " systeminfo " yazın ve enter tuşuna basın. Sisteminizin bilgi alması birkaç dakika sürebilir. Sonuç sayfasında "Sistem Kurulum Tarihi" olarak bir giriş bulacaksınız. Windows kurulum tarihidir. Bu işlem XP, Win7 ve ayrıca win8 üzerinde çalışır.


1
Bunu yapmak için Yönetici olmanız gerektiğini unutmayın.
Barrie Reader

2
Windows 7'de bu, herhangi bir nedenle 11.1.2002 olan ve açıkça doğru olmayan bir "Orijinal Yükleme Tarihi" girişi sağlar :(
silverchair

18

Windows 7 kurulum tarihi / saatini bulma:

sadece şunu gör ...

  • başlangıç> CMD girin
  • sistem bilgisine gir

bu kadar; makinenizle ilgili tüm bilgileri görebilirsiniz; çok basit bir yöntem


13

Hiç PC'nizin işletim sistemi kurulum tarihini öğrenmek istediniz mi? Burada, PC işletim sisteminizin kurulu olduğu (veya son yükseltildiği) tarihi ve saati bulmanın hızlı ve kolay bir yoludur.

Komut istemini açın (start-> run -> cmd-> hit enter yazın) ve aşağıdaki komutu çalıştırın

sistem bilgisi | find / i "yükleme tarihi"

Birkaç saniye içinde kurulum tarihini göreceksiniz


3
büyük bir hizmet paketi yükleyene kadar, o tarihi yansıtır
user3800527

12

Powershell'de şu komutu çalıştırın:

systeminfo | Select-String "Install Date:"

2
Select-String, Windows PowerShell sürümü> 3.0 daha iyi kullanım gerektirirfind /i
sactiw

5

Windows 10 işletim sisteminin başka bir kayıt defteri alt anahtarı vardır, bu da SİSTEM kovanı dosyasındadır:

Computer\HKEY_LOCAL_MACHINE\SYSTEM\Setup\

Buradaki Yükleme Tarihi bilgileri, orijinal bilgisayar işletim sistemi yükleme tarihi / saatidir. Ayrıca güncellemenin ne zaman başladığını size bildirir, ör.

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

Bu, elbette güncelleme sona erdiğinde olmayabilir, kullanıcı istendiğinde yeniden başlatmak yerine kapatmayı seçebilir vb.

Güncelleme aslında farklı bir günde tamamlanabilir ve

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

güncellemeyi başlattığı tarihi / saati yansıtır.


4

HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDate ve systeminfo.exe yanlış tarih üretir .

Tanım UNIX zaman damgası zaman dilimi bağımsızdır. UNIX zaman damgası, 1 Ocak 1970 Perşembe, 1 Ocak 1970 Perşembe gününden bu yana geçen ve artık saniye saymayan saniye sayısı olarak tanımlanır.

Başka bir deyişle, bilgisayarınızı Seattle, WA'ya yüklediyseniz ve New York, NY'a taşındıysanız HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDate bunu yansıtmayacaktır. Bu var yanlış tarih bilgisayar başlangıçta yüklenen dilimini saklamaz.

Bunun etkisi, bu programı çalıştırırken saat dilimini değiştirirseniz, tarih yanlış olur. Saat dilimi değişikliğini hesaba katması için yürütülebilir dosyayı yeniden çalıştırmanız gerekir.

Ancak saat dilimi bilgilerini WMI Win32_Registry sınıfından alabilirsiniz.

InstallDate, özellikle xxxxxx milisaniye ve ± UUU'nun Greenwich Mean Time'dan dakika cinsinden farklı olduğu "WMI kullanarak Tarihler ve Zamanlarla Çalışma" makalesine göre UTC biçimindedir (yyyymmddHHMMSS.xxxxxx ± UUU) .

 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);      
    }

UNIX Zaman Damgası'nın tanımı bir saat dilimi olan UTC'yi içerir. Bir bilgisayar aynı gün 18: 00'da New York ve 18: 00'da Seattle saatinde kurulursa, aynı UNIX Zaman Damgasına sahip olurlar, çünkü aynı anda UTC'de kurulurlar. 1 Nisan 2018'de Seattle'da saat 15: 00'de yüklediyseniz ve New York'a geçip UTC'den yerel saatinize dönüştürdüyseniz, 1 Nisan 2018 18: 00'da söylenecek ve doğru olacak, çünkü 6 : Seattle'a kurduğunuzda saat 00: New York'ta.
jla

Teşekkürler jla, yazımda net değildim. Program çalışırken saat dilimini anında değiştirdiğinizde saat dilimi değişikliği yansıtılmaz. Saat diliminin geçerli olması için programı yeniden başlatmanız gerekir. Bu Powershell ile aynı davranıştır.
Markus

InstallDate, geçerli saat diliminin uygulandığı yerel saati ve + XXX formundaki saat dilimini döndürür. Saat dilimi değiştiğinde, yükleme tarihi ve saat dilimi değişir. UTC'deki kurulum tarihi 2000-01-01T12: 00: 00Z ise. InstallDate değeri 20000101120000.000000 + 000'dir. Saat dilimini UTC + 5 olarak ayarlayın ve 20000101170000.000000 + 300 olur. Yukarıdaki kodu kullanırken, saat dilimi iki kez eklenir. UTC tarihini almak için "InstallDate =" satırı şu şekilde değiştirilmelidir: InstallDate = yeni DateTime (yıl, ay, tarih, saat, dakika, saniye, saniye, msecs, DateTimeKind.Utc) - UTCoffset;
Jesús Diéguez Fernández

3

Çoğu durumda c: \ pagefile.sys dosyasının oluşturulma tarihini oldukça güvenilir buluyorum. Bu komut kullanılarak kolayca elde edilebilir (Windows'un C üzerine kurulu olduğu varsayılarak :):

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

'/ As', 'sistem dosyalarını' belirtir, aksi takdirde bulunmaz. '/ T: c', 'oluşturma' öğesini görüntülemek için zaman alanını ayarlar.


1
Bu, işletim sisteminin kendisinin yükleme tarihi ile tamamen ilgisiz olan pagefile'ın oluşturulma tarihini verecektir. Birkaç nedenden dolayı yeniden oluşturulabilir ve hatta gerçekten isterseniz kurcalanabilir. Bu güvenilir bir yöntem değil.
Alejandro

1
İlk kurulum sırasında oluşturulduğu için 'tamamen ilgisiz' değildir. Bu nedenle, bir noktada kasıtlı olarak yeniden oluşturulmadıkça veya silinmedikçe, 'çoğu durumda' oluşturma tarihi, yükseltme işlemleriyle devam ettiği için ilk yükleme tarihi ile aynı olacaktır. Evet,% 100 güvenilir değil, ama hızlı ve kolay ve tahminimden çok daha fazla durumda doğru tahmin ediyorum. Kesinlikle burada birçok cevap daha çok.
MoonDogg

Bu dosyayı istediğiniz zaman yeniden oluşturabilirsiniz ve yöntem bir seferde% 100 doğru sonucu garanti etmezse, hiç kimse ona güvenemez.
Slava Murygin

2

WMIC ile Windows Yükleme Tarihini Belirleme

wmic os installdate olsun


1
Bu muhtemelen InstallDate kayıt defteri anahtarını okur ve aynı soruna sahiptir; derleme güncellemelerinde değişir.
Anders


1

Ayrıca, sistem sürücüsündeki "windows" ve "program dosyaları" gibi herhangi bir klasörü kontrol edin. Klasörü sağ tıklayın, özellikleri tıklayın ve genel sekme altında klasörün oluşturulduğu tarihi kontrol edin.


5
Geçerli olmasına rağmen - bu bir programlama çözümü değildir
Matt Wilko

@Matt Size Natural Lenguaje'deki algoritmayı veriyor, bu yüzden onu bir insan cihazında Copile! : D
Jonathan

3
Görüntü tabanlı kurulum ( .WIMdosyalar) kullanan yeni Windows sürümlerinde , oluşturulan tarih, OS belirli bir makineye yüklendiğinde değil, Microsoft'un görüntüyü oluşturduğu zamandır.
ctype.h

1

RunCommand yazmak "MSINFO32"ve vurmak girin Sistem ile ilgili tüm bilgileri gösterecektir


Yükleme süresi hariç tüm bilgiler. Windows 7 SP1.
Pavel Vlasov


0

WindowsKey+ Tuşuna basın Rvecmd

Komut penceresine şunu yazın:

systeminfo | find /i "Original"

(pencerelerin eski sürümleri için, tüm büyük harflere "ORIGINAL" yazın).


Aşağı oylama neden biliyor musunuz? Benim için çalıştı, belki bir nedenden dolayı doğru değil mi? Belki aşağı oy verirken açıklayın
russelrillema

@russelrillema son büyük hizmet paketi bu tarihi geçersiz kılar.
Don Domates

Windows 10 v1809'unuz varsa Ayarlar> Sistem> Hakkında'ya gidin. Windows belirtimini bulun ve orada "Install on" adında bir alan var. (Not: Windows'un eski sürümlerinde çalışıp çalışmadığından emin değilim)
abdullahjavaid86

0

Windows Klasörünün oluşturulma tarihini kontrol edebilirsiniz (sağ tıklayın ve özellikleri kontrol edin) :)


0

Bunu PowerShell ile yapabilirsiniz:

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()}}

0

Bu powershell komutunu deneyin:

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"

Neredeyse doğrudur ve HKLM'deki anahtarı değiştiren derleme güncellemelerini dikkate aldığından çok daha fazla not edilmelidir: \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion, ancak bir sistem varsa Kaynak İşletim Sistemi anahtarları bile mevcut olmadığından ikisinin de birleştirilmesi gerekir aslında hiç güncellenmedi (henüz) ve son derleme güncellemesinin tarihi de eksik olurdu
Syberdoor
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.