Bagaimana cara menemukan waktu dan tanggal pemasangan Windows?

134

Ini mungkin terdengar seperti pertanyaan gila, tapi bagaimana saya bisa mengetahuinya (mudah-mudahan melalui API / kunci registri) waktu dan tanggal pemasangan Windows?

Yang terbaik yang bisa saya dapatkan sejauh ini adalah dengan melihat berbagai file di C: \ Windows dan mencoba menebak ... tapi itu bukan solusi yang bagus.

Wildebeest gratis
sumber

Jawaban:

90

Dalam regedit.exepergi ke:

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

Ini diberikan sebagai jumlah detik sejak 1 Januari 1970. (Catatan: untuk Windows 10, tanggal ini adalah ketika pembaruan fitur terakhir diinstal, bukan tanggal pemasangan asli.)

Untuk mengonversi angka itu menjadi tanggal / waktu yang dapat dibaca cukup tempelkan nilai desimal di bidang "UNIX TimeStamp:" alat online Konversi Waktu Unix ini .

Tommy
sumber
3
Itu luar biasa, adakah tempat khusus yang Anda kunjungi untuk mendapatkan informasi itu atau Anda baru saja mengetahuinya?
Wildebeest Gratis
5
Berfungsi bagus, kecuali jika Windows diinstal menggunakan disk image. Apakah ada cara untuk memeriksa pembuatan profil pengguna untuk menyelesaikan masalah ini?
Bernard Vander Beken
8
Tidak berfungsi mencerminkan tanggal pemasangan / pembaruan layanan terbaru (yaitu versi CURRENT, bukan waktu pemasangan versi asli.
user3800527
2
Saya pikir itu memberikan tanggal Diperbarui Windows terakhir, bukan tanggal diinstal sistem.
Tharindu Sathischandra
instalasi windows 7 saya tidak menunjukkan InstallDate di lokasi pendaftaran itu, SP1-nya.
user734028
175

Pertanyaan lain yang bisa diajukan untuk ' tantangan kode ': berikut adalah beberapa kode sumber yang dapat dieksekusi untuk menjawab masalah, tetapi tidak lengkap.
Apakah Anda akan menemukan skrip vb yang dapat dieksekusi oleh siapa pun di komputernya, dengan hasil yang diharapkan?


systeminfo|find /i "original" 

akan memberi Anda tanggal aktual ... bukan jumlah detik;)
Seperti komentar Sammy , berikan lebih dari yang Anda butuhkan. Dan ini hanya berfungsi jika lokal adalah bahasa Inggris: Ini harus sesuai dengan bahasa. Untuk Swedia ini " " dan " " untuk Jerman.find /i "install"

ursprungligtursprüngliches


Di skrip Windows PowerShell , Anda cukup mengetik:

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

Dengan menggunakan WMI ( Instrumentasi Manajemen Windows )

Jika Anda tidak menggunakan WMI, Anda harus membaca lalu mengonversi nilai registri:

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"

Sisa dari posting ini memberi Anda cara lain untuk mengakses informasi yang sama. Pilih racunmu;)


Di VB.Net itu akan memberikan sesuatu seperti:

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

Dalam Autoit (bahasa skrip Windows), itu akan menjadi:

;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

Dalam Delphy 7, itu akan menjadi:

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;

Sebagai alternatif, CoastN mengusulkan dalam komentar :

Karena system.ini-filetetap tidak tersentuh dalam penyebaran windows biasa, Anda sebenarnya bisa mendapatkan tanggal pemasangan dengan menggunakan oneliner berikut:

(PowerShell): (Get-Item "C:\Windows\system.ini").CreationTime
VONC
sumber
2
Saya menemukan alasannya. Itu karena Windows saya tidak dalam bahasa Inggris. :)
Pedro77
3
Gunakan systeminfo|find /i "original"untuk hanya memfilter "Tanggal Instalasi Asli". Jika Anda menggunakan "instal" sebagai string, Anda akan mendapatkan informasi lebih dari yang Anda butuhkan. Juga, jika lokal bukan bahasa Inggris maka ini mungkin tidak akan berfungsi. Itu harus sesuai dengan bahasa. Untuk Swedia ini akan menjadi "ursprungligt" dan "ursprüngliches" untuk Jerman.
Samir
1
Bagi saya systeminfo | find / i "original" kembali 6/30/2017 yang harus ada beberapa pembaruan windows karena saya sudah memiliki mesin selama sekitar 4 tahun.
Tim
1
Saya baru saja melalui ini tetapi dengan 245 perbaikan terbaru secara default jendela CMD tidak memiliki cukup garis vertikal untuk menampilkan seluruh output 'systeinfo'. Aku menggaruk kepalaku sebentar. Ikuti ini untuk memperbaikinya: stackoverflow.com/questions/1740876/…
asdf30
1
Ini menunjukkan bahwa saya menginstal sistem dua minggu yang lalu, tetapi sebenarnya itu satu atau dua tahun. Tampaknya ini adalah tanggal pemutakhiran besar terakhir.
Han
48

Kami punya jawaban yang cukup di sini, tetapi saya ingin memasukkan 5 sen saya.

Saya telah menginstal Windows 10 10/30/2015dan Pembaruan Kreator diinstal 04/14/2017di atas instalasi saya sebelumnya. Semua metode yang dijelaskan dalam jawaban sebelum saya memberi saya tanggal pemasangan Pembaruan Pembuat.

Tanggal Instalasi Asli

Saya telah berhasil menemukan beberapa file tanggal pembuatan yang cocok dengan tanggal instalasi nyata (bersih) Windows 10 saya:

  • di C:\Windows

Beberapa C: \ file Windows

  • di C:\

Beberapa C: \ file

Nikolay Kostov
sumber
7
Lebih baik daripada jawaban lainnya, tetapi bagaimana dengan penyebaran yang dicitrakan?
user3800527
7
Ini jelas mendekati jawaban yang benar; solusi lain tidak lagi berfungsi dengan Windows 10 upgrade. Namun, tidak satu pun dari 5 file / folder yang tercantum di sini memiliki tanggal yang benar pada sistem saya (ada yang kemudian dan beberapa di mana sebenarnya sebelumnya). Namun, saya menemukan 1 file dan 2 folder dengan tanggal yang benar di sistem saya: C: \ Windows \ hbcikrnl.ini, C: \ Windows \imbol \, & C: \ Windows \ CSC \. Jadi, jika Anda tahu kapan kira-kira, pergi ke C: \ Windows \, ​​tampilkan file sistem sistem, urutkan berdasarkan tanggal, dan temukan sesuatu yang terlihat benar.
Matt Jacobi
Untuk system.ini Windows 10 saya, BOOTNXT dan bootmgr memiliki tanggal yang benar. Win.ini & $ Recycle.Bin memiliki tanggal yang lebih baru.
Keith
Tanggal untuk system.initidak masuk akal pada mesin Windows 7 dan 2008 saya, tampaknya timestamp yang dibuat dari sumber instalasi sedang disalin pada saat instalasi. C:\pagefile.sysmemiliki cap waktu yang benar.
Daniel Sokolowski
38

Buka command prompt, ketik " systeminfo " dan tekan enter. Sistem Anda mungkin memerlukan beberapa menit untuk mendapatkan informasi. Di halaman hasil Anda akan menemukan entri sebagai "Tanggal Instalasi Sistem". Itu adalah tanggal instalasi windows. Proses ini berfungsi di XP, Win7 dan juga pada win8.

diptangshu sengupta
sumber
1
Perhatikan bahwa Anda harus menjadi Administrator untuk melakukan ini.
Barrie Reader
2
Pada Windows 7 ini memberikan entri "Original Install Date" yang karena beberapa alasan adalah 11.1.2002, yang jelas-jelas tidak benar :(
silverchair
18

Cara mengetahui tanggal / waktu instalasi Windows 7:

lihat saja ini ...

  • mulai> masukkan CMD
  • masukkan systeminfo

itu dia; maka Anda dapat melihat semua informasi tentang mesin Anda; metode yang sangat sederhana

ani alexander
sumber
13

Pernah ingin mengetahui tanggal pemasangan sistem operasi PC Anda? Berikut adalah cara cepat dan mudah untuk mengetahui tanggal dan waktu di mana sistem operasi PC Anda diinstal (atau terakhir ditingkatkan).

Buka command prompt (start-> run -> ketik cmd-> tekan enter) dan jalankan perintah berikut

systeminfo | temukan / i "pasang tanggal"

Dalam beberapa detik Anda akan melihat tanggal pemasangan

Robin
sumber
3
sampai Anda menginstal paket layanan utama, maka itu mencerminkan tanggal itu
user3800527
12

Di Powershell jalankan perintah:

systeminfo | Select-String "Install Date:"
pengguna3827180
sumber
2
Select-String memerlukan Windows PowerShell versi> 3.0 penggunaan yang lebih baikfind /i
sactiw
5

Windows 10 OS memiliki lagi subkunci registri, yang ini dalam file sarang SISTEM:

Computer\HKEY_LOCAL_MACHINE\SYSTEM\Setup\

Informasi Tanggal Instalasi di sini adalah tanggal / waktu instalasi OS komputer asli. Ini juga memberi tahu Anda ketika pembaruan dimulai, yaitu

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

Tentu saja ini mungkin tidak terjadi ketika pembaruan berakhir, pengguna dapat memilih untuk mematikan daripada me-reboot ketika diminta, dll ...

Pembaruan sebenarnya dapat diselesaikan pada hari yang berbeda, dan

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

akan mencerminkan tanggal / waktu dimulainya pembaruan.

Amit Gupta
sumber
4

HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDate dan systeminfo.exe menghasilkan tanggal yang salah .

The Definisi dari UNIX timestamp adalah zona independen. Stempel waktu UNIX didefinisikan sebagai jumlah detik yang telah berlalu sejak 00:00:00 Waktu Universal Terkoordinasi (UTC), Kamis, 1 Januari 1970 dan tidak termasuk detik kabisat.

Dengan kata lain, jika Anda telah menginstal komputer di Seattle, WA dan pindah ke New York, NY HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDate tidak akan mencerminkan hal ini. Ini tanggal yang salah , tidak menyimpan zona waktu tempat komputer pertama kali diinstal.

Efeknya adalah, jika Anda mengubah zona waktu saat menjalankan program ini, tanggalnya akan salah. Anda harus menjalankan kembali yang dapat dieksekusi, agar dapat memperhitungkan perubahan zona waktu.

Tetapi Anda bisa mendapatkan info zona waktu dari kelas WMI Win32_Registry .

InstallDate dalam format UTC (yyyymmddHHMMSS.xxxxxx ± UUU) sesuai dengan artikel Microsoft TechNet "Bekerja dengan Tanggal dan Waktu menggunakan WMI" di mana xxxxxx adalah milidetik dan ± UUU adalah jumlah menit yang berbeda dari 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
sumber
Definisi Timestamp UNIX termasuk zona waktu, UTC. Jika komputer dipasang pada pukul 18:00 waktu New York dan pukul 3:00 waktu Seattle pada hari yang sama, mereka akan memiliki Stempel Waktu UNIX yang sama karena mereka dipasang pada waktu yang sama UTC. Jika Anda menginstal pada 1 April 2018 pukul 15:00 di Seattle dan pindah ke New York dan kemudian mengonversi dari UTC ke waktu lokal Anda, ia akan mengatakan 1 April 2018 pada pukul 18:00 dan benar, karena saat itu 6 : 00:00 di New York ketika Anda menginstal di Seattle.
jla
Terima kasih jla, saya tidak jelas dalam posting saya. Saat Anda mengubah zona waktu dengan cepat saat program sedang berjalan, perubahan zona waktu tidak akan tercermin. Anda harus memulai kembali program agar zona waktu mulai berlaku. Ini perilaku yang sama dengan Powershell.
Markus
InstallDate mengembalikan waktu lokal dengan zona waktu saat ini diterapkan, dan juga zona waktu dalam bentuk + XXX. Ketika zona waktu berubah, tanggal pemasangan berubah dan juga zona waktu. Jika tanggal pemasangan di UTC adalah 2000-01-01T12: 00: 00Z. InstallDate adalah 20000101120000.000000 + 000. Atur zona waktu ke UTC + 5, dan menjadi 20000101170000.000000 + 300. Saat menggunakan kode di atas, zona waktu akan ditambahkan dua kali. Untuk mendapatkan tanggal UTC, baris "InstallDate =" harus diubah menjadi: InstallDate = DateTime baru (tahun, bulan, tanggal, jam, menit, dtk, msec, DateTimeKind.Utc) - UTCoffset;
Jesús Diéguez Fernández
3

Saya menemukan tanggal pembuatan c: \ pagefile.sys bisa sangat andal dalam kebanyakan kasus. Itu dapat dengan mudah diperoleh dengan menggunakan perintah ini (dengan asumsi Windows diinstal pada C :):

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

'/ Sebagai' menentukan 'file sistem', jika tidak maka tidak akan ditemukan. '/ T: c' menetapkan bidang waktu untuk menampilkan 'kreasi'.

MoonDogg
sumber
1
Itu akan memberikan tanggal pembuatan pagefile, yang sama sekali tidak terkait dengan tanggal instalasi OS itu sendiri. Ini dapat diciptakan kembali karena sejumlah alasan dan bahkan dirusak jika Anda benar-benar ingin. Itu bukan metode yang dapat diandalkan.
Alejandro
1
Ini bukan 'sama sekali tidak terkait', karena akan dibuat saat instalasi awal. Jadi, kecuali jika itu sengaja dibuat kembali atau dihapus di beberapa titik, dalam 'kebanyakan kasus' tanggal pembuatan akan sama dengan tanggal pemasangan awal, karena terus berlanjut melalui peningkatan. Ya, ini tidak 100% dapat diandalkan, tetapi cepat dan mudah, dan saya kira akurat dalam banyak kasus daripada tidak. Jelas lebih daripada banyak jawaban di sini.
MoonDogg
Anda dapat membuat kembali file itu kapan saja dan jika metode tidak menjamin hasil yang benar 100% setiap saat, tidak ada yang dapat benar-benar bergantung padanya.
Slava Murygin
2

Tentukan Tanggal Instalasi Windows dengan WMIC

wmic os dapatkan installdate

Lko Jegue
sumber
1
Ini mungkin hanya membaca kunci registri InstallDate dan memiliki masalah yang sama; itu berubah saat membangun pembaruan.
Anders
1

Gunakan speccy. Ini menunjukkan tanggal pemasangan di bagian Sistem Operasi. http://www.piriform.com/speccy

Amin
sumber
1
Bukan solusi pemrograman. Jika ada semacam antarmuka yang dapat berinteraksi dengan Powershell, misalnya, daftarkan.
Tyler Montney
1

Anda juga dapat memeriksa centang folder apa saja di drive sistem seperti "windows" dan "file program". Klik kanan folder, klik pada properti dan periksa di bawah tab umum tanggal ketika folder itu dibuat.

Tekki
sumber
5
Meskipun valid - ini bukan solusi pemrograman
Matt Wilko
@Matt Dia memberimu algoritma dalam Natural Lenguaje, jadi Just Copile saja di perangkat manusia! : D
Jonathan
3
Di versi Windows yang lebih baru, yang menggunakan instalasi berbasis .WIMfile ( file), tanggal yang dibuat adalah ketika Microsoft menciptakan gambar, bukan ketika OS diinstal pada mesin tertentu.
ctype.h
1

Di RunCommand tulis "MSINFO32"dan tekan enter. Ini akan menampilkan Semua informasi yang terkait dengan sistem

Shailesh
sumber
Semua informasi kecuali waktu pemasangan. Windows 7 SP1.
Pavel Vlasov
0

Tekan WindowsKey+ Rdan masukcmd

Di jendela perintah ketik:

systeminfo | find /i "Original"

(untuk versi windows yang lebih lama, ketik "ASLI" di semua huruf besar).

abdullahjavaid86
sumber
Adakah yang tahu mengapa suara turun? Bekerja untuk saya, apakah mungkin karena beberapa alasan tidak akurat? Mungkin jelaskan saat memberikan suara turun
russelrillema
@russelrillema paket layanan utama terakhir menimpa tanggal ini.
Don Tomato
Jika Anda memiliki windows 10 v1809 pergi ke Pengaturan> Sistem> Tentang. Temukan Spesifikasi Windows dan di sana Anda memiliki bidang dengan nama "Instal di". (Catatan: Tidak yakin apakah itu berfungsi pada versi windows yang lebih lama)
abdullahjavaid86
0

Anda cukup memeriksa tanggal pembuatan Folder Windows (klik kanan padanya dan periksa properti) :)

farhad.kargaran
sumber
0

Anda dapat melakukan ini dengan 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()}}
Bit Bacon
sumber
0

Coba perintah PowerShell ini:

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
sumber
Hampir benar dan harus dicatat lebih banyak karena ini memperhitungkan pembaruan pembangunan akun yang mengubah kunci dalam HKLM: \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion tetapi satu kebutuhan keduanya digabungkan karena tombol Sumber OS bahkan tidak ada jika sistem tidak pernah benar-benar diperbarui (belum) dan juga akan kehilangan tanggal pembaruan build terakhir
Syberdoor