Làm cách nào để tìm thời gian cài đặt và ngày của Windows?


133

Điều này nghe có vẻ giống như một câu hỏi điên rồ, nhưng làm thế nào tôi có thể tìm ra (hy vọng thông qua khóa API / đăng ký) thời gian cài đặt và ngày của Windows?

Điều tốt nhất tôi có thể đưa ra cho đến nay là xem xét các tệp khác nhau trong C: \ Windows và thử đoán ... nhưng đó không hẳn là một giải pháp hay.

Câu trả lời:


90

Đi regedit.exeđến:

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

Nó được tính là số giây kể từ ngày 1 tháng 1 năm 1970. (Lưu ý: đối với Windows 10, ngày này sẽ là khi bản cập nhật tính năng cuối cùng được cài đặt, không phải ngày cài đặt ban đầu.)

Để chuyển đổi số đó thành ngày / giờ có thể đọc được, chỉ cần dán giá trị thập phân vào trường "UNIX TimeStamp:" của công cụ trực tuyến Chuyển đổi thời gian Unix này .


3
Thật tuyệt vời, có một nơi đặc biệt nào bạn đã đến để lấy thông tin đó hay bạn chỉ biết nó?
Wildebeest miễn phí

5
Hoạt động rất tốt, trừ khi Windows được cài đặt bằng hình ảnh đĩa. Có cách nào để kiểm tra việc tạo hồ sơ của người dùng để giải quyết vấn đề này không?
Bernard Vander Beken

8
Không hoạt động phản ánh ngày cài đặt gói dịch vụ / cập nhật mới nhất (
e

2
Tôi nghĩ rằng nó cung cấp ngày cập nhật Windows cuối cùng, thay vì ngày cài đặt hệ thống.
Tharindu Sathischandra

bản cài đặt windows 7 của tôi không hiển thị InstallDate ở vị trí đăng ký đó, SP1.
dùng734028

175

Một câu hỏi khác có thể hiểu được đối với một ' thách thức mã ': đây là một số thực thi mã nguồn để trả lời vấn đề, nhưng chúng chưa hoàn thành.
Bạn sẽ tìm thấy một tập lệnh vb mà bất cứ ai cũng có thể thực hiện trên máy tính của mình, với kết quả mong đợi?


systeminfo|find /i "original" 

sẽ cung cấp cho bạn ngày thực tế ... không phải số giây;)
Như nhận xét của Sammy , cung cấp nhiều hơn bạn cần. Và điều này chỉ hoạt động nếu ngôn ngữ là tiếng Anh: Nó cần phải phù hợp với ngôn ngữ. Đối với tiếng Thụy Điển, đây sẽ là " " và " " cho tiếng Đức.find /i "install"

ursprungligtursprüngliches


Trong tập lệnh Windows PowerShell , bạn chỉ cần gõ:

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

Bằng cách sử dụng WMI ( Thiết bị quản lý Windows )

Nếu bạn không sử dụng WMI, bạn phải đọc sau đó chuyển đổi giá trị đăng ký:

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"

Phần còn lại của bài đăng này cung cấp cho bạn những cách khác để truy cập cùng thông tin đó. Chọn thuốc độc của bạn ;)


Trong VB.Net sẽ cung cấp một cái gì đó như:

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

Trong Autoit (ngôn ngữ kịch bản Windows), đó sẽ là:

;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

Trong Delphy 7, điều đó sẽ diễn ra như sau:

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;

Thay thế, CoastN đề xuất trong các ý kiến :

system.ini-filevẫn còn nguyên trong quá trình triển khai windows thông thường, bạn thực sự có thể có được ngày cài đặt bằng cách sử dụng oneliner sau:

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

2
Tôi đã tìm ra lý do tại sao. Đó là bởi vì Windows của tôi không có tiếng Anh. :)
Pedro77

3
Sử dụng systeminfo|find /i "original"để chỉ lọc "Ngày cài đặt gốc". Nếu bạn sử dụng "cài đặt" dưới dạng chuỗi, bạn sẽ nhận được nhiều thông tin hơn bạn cần. Ngoài ra, nếu ngôn ngữ không phải là tiếng Anh thì điều này có thể sẽ không hoạt động. Nó cần phải phù hợp với ngôn ngữ. Đối với tiếng Thụy Điển, đây sẽ là "ursprungligt" và "ursprüngliches" cho tiếng Đức.
Samir

1
Đối với tôi systeminfo | find / i "bản gốc" đã trả về ngày 30 tháng 6 năm 2017 đã phải cập nhật một số cửa sổ vì tôi đã có máy trong khoảng 4 năm.
Tim

1
Tôi vừa mới trải qua điều này nhưng với 245 hotfix theo mặc định, cửa sổ CMD không có đủ các đường thẳng đứng để hiển thị toàn bộ đầu ra 'systeinfo'. Đã gãi đầu trong một phút. Làm theo cách này để sửa nó: stackoverflow.com/questions/1740876/ cấp
asdf30

1
Nó cho thấy rằng tôi đã cài đặt hệ thống hai tuần trước, nhưng thực tế nó là một hoặc hai năm. Có vẻ như đây là một ngày của bản nâng cấp lớn cuối cùng.
Hans

48

Chúng tôi có đủ câu trả lời ở đây nhưng tôi muốn đặt 5 xu của mình.

Tôi đã cài đặt Windows 10 10/30/2015và Creators Update được cài đặt 04/14/2017trên đầu cài đặt trước đó của tôi. Tất cả các phương pháp được mô tả trong các câu trả lời trước khi khai thác cho tôi ngày cài đặt Cập nhật người tạo.

Ngày cài đặt gốc

Tôi đã quản lý để tìm một vài tệp ngày tạo phù hợp với ngày cài đặt thực (sạch) của Windows 10 của tôi:

  • trong C:\Windows

Vài tệp C: \ Windows

  • trong C:\

Vài tập tin C: \


7
Tốt hơn là các câu trả lời khác, nhưng làm thế nào về triển khai hình ảnh?
dùng3800527

7
Điều này chắc chắn là gần với câu trả lời chính xác; các giải pháp khác không còn hoạt động với các bản nâng cấp Windows 10. Tuy nhiên, không có tệp nào trong số 5 tệp / thư mục được liệt kê ở đây có ngày chính xác trên hệ thống của tôi (một số là sau và một số thực sự sớm hơn). Tuy nhiên, tôi đã tìm thấy 1 tệp và 2 thư mục có ngày chính xác trên hệ thống của mình: C: \ Windows \ hbcikrnl.ini, C: \ Windows \bols \, & C: \ Windows \ CSC \. Vì vậy, nếu bạn biết khi nào nó xấp xỉ, hãy truy cập C: \ Windows \, ​​hiển thị các tệp hệ thống, sắp xếp theo ngày và tìm thứ gì đó có vẻ đúng.
Matt Jacobi

Đối với hệ thống Windows 10 của tôi, BOOTNXT và bootmgr đã có ngày chính xác. Win.ini & $ Recycl.Bin đã có ngày mới hơn.
Keith

Ngày system.inikhông có ý nghĩa gì trên các máy Windows 7 và 2008 của tôi, có vẻ như dấu thời gian được tạo từ các nguồn cài đặt đang được sao chép khi cài đặt. C:\pagefile.syscó dấu thời gian chính xác.
Daniel Sokolowski

38

Mở dấu nhắc lệnh, gõ " systeminfo " và nhấn enter. Hệ thống của bạn có thể mất vài phút để có được thông tin. Trong trang kết quả, bạn sẽ tìm thấy một mục là "Ngày cài đặt hệ thống". Đó là ngày cài đặt windows. Quá trình này hoạt động trong XP, Win7 và cả trên win8.


1
Lưu ý rằng bạn phải là Quản trị viên để làm điều này.
Đầu đọc Barrie

2
Trên Windows 7, mục này cung cấp mục nhập "Ngày cài đặt gốc", vì một số lý do là 11.1.2002, điều này rõ ràng là không chính xác :(
ghế bạc

18

Cách tìm hiểu ngày / giờ cài đặt Windows 7:

chỉ cần nhìn thấy điều này ...

  • bắt đầu> nhập CMD
  • nhập systeminfo

đó là nó; sau đó bạn có thể xem tất cả thông tin về máy của bạn; phương pháp rất đơn giản


13

Bạn đã bao giờ muốn tìm hiểu ngày cài đặt hệ điều hành của PC chưa? Dưới đây là cách nhanh chóng và dễ dàng để tìm ra ngày và giờ cài đặt hệ điều hành PC của bạn (hoặc nâng cấp lần cuối).

Mở dấu nhắc lệnh (start-> run -> gõ cmd-> nhấn enter) và chạy lệnh sau

hệ thống thông tin | tìm / tôi "ngày cài đặt"

Trong vài giây, bạn sẽ thấy ngày cài đặt


3
cho đến khi bạn cài đặt gói dịch vụ chính, thì nó sẽ phản ánh ngày đó
user3800527

12

Trong Powershell chạy lệnh:

systeminfo | Select-String "Install Date:"

2
Chuỗi chọn yêu cầu phiên bản Windows PowerShell> 3.0 sử dụng tốt hơnfind /i
sactiw

5

HĐH Windows 10 có một khoá con đăng ký khác, mã khóa này trong tệp hive HỆ THỐNG:

Computer\HKEY_LOCAL_MACHINE\SYSTEM\Setup\

Thông tin Ngày cài đặt ở đây là ngày / giờ cài đặt hệ điều hành máy tính ban đầu. Nó cũng cho bạn biết khi cập nhật bắt đầu, tức là

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

Điều này tất nhiên có thể không phải là khi cập nhật kết thúc, người dùng có thể chọn tắt thay vì khởi động lại khi được nhắc, v.v ...

Bản cập nhật thực sự có thể hoàn thành vào một ngày khác và

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

sẽ phản ánh ngày / giờ nó bắt đầu cập nhật.


4

HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDate và systeminfo.exe tạo ra ngày sai .

Các định nghĩa của UNIX timestamp là múi giờ độc lập. Dấu thời gian UNIX được định nghĩa là số giây đã trôi qua kể từ 00:00:00 Giờ quốc tế phối hợp (UTC), Thứ Năm, ngày 1 tháng 1 năm 1970 và không tính giây nhuận.

Nói cách khác, nếu bạn đã cài đặt máy tính của mình ở Seattle, WA và chuyển đến New York, NY thì HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDate sẽ không phản ánh điều này. Đó là ngày sai , nó không lưu trữ múi giờ nơi máy tính được cài đặt ban đầu.

Tác dụng của việc này là, nếu bạn thay đổi múi giờ trong khi chạy chương trình này, ngày sẽ sai. Bạn phải chạy lại tệp thực thi, để nó tính đến sự thay đổi múi giờ.

Nhưng bạn có thể lấy thông tin múi giờ từ lớp WMI Win32_Registry .

InstallDate có định dạng UTC (yyyymmddHHMMSS.xxxxxx ± UUU) theo bài viết của Microsoft TechNet "Làm việc với Ngày và Thời gian bằng WMI" trong đó đáng chú ý là xxxxxx là mili giây và ± UUU là số phút khác với Giờ Greenwich.

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

Định nghĩa của Dấu thời gian UNIX bao gồm múi giờ, UTC. Nếu một máy tính được cài đặt vào lúc 6:00 PM giờ New York và 3:00 PM giờ Seattle cùng ngày, chúng sẽ có cùng Dấu thời gian UNIX vì chúng được cài đặt cùng lúc với UTC. Nếu bạn đã cài đặt vào ngày 1 tháng 4 năm 2018 lúc 3:00 chiều tại Seattle và chuyển đến New York và sau đó chuyển đổi từ UTC sang giờ địa phương của bạn, nó sẽ nói ngày 1 tháng 4 năm 2018 lúc 6:00 chiều và chính xác, bởi vì đó là 6 giờ : 00 PM tại New York khi bạn cài đặt ở Seattle.
jla

Cảm ơn bạn jla, tôi đã không rõ ràng trong bài viết của tôi. Khi bạn thay đổi múi giờ một cách nhanh chóng trong khi chương trình đang chạy, thay đổi múi giờ sẽ không được phản ánh. Bạn phải khởi động lại chương trình để múi giờ có hiệu lực. Đây là hành vi tương tự như Powershell.
Markus

InstallDate trả về thời gian cục bộ với múi giờ hiện tại được áp dụng và cả múi giờ ở dạng + XXX. Khi múi giờ thay đổi, ngày cài đặt cũng thay đổi và cả múi giờ. Nếu ngày cài đặt trong UTC là 2000-01-01T12: 00: 00Z. InstallDate là 20000101120000.000000 + 000. Đặt múi giờ thành UTC + 5 và trở thành 20000101170000.000000 + 300. Khi sử dụng mã trên, múi giờ được thêm hai lần. Để có được ngày UTC, dòng "InstallDate =" phải được đổi thành: InstallDate = new DateTime (năm, tháng, ngày, giờ, phút, giây, msecs, DateTimeKind.Utc) - UTCoffset;
Jesús Diéguez Fernández

3

Tôi thấy ngày tạo của c: \ pagefile.sys có thể khá đáng tin cậy trong hầu hết các trường hợp. Có thể dễ dàng lấy được bằng lệnh này (giả sử Windows được cài đặt trên C :):

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

'/ As' chỉ định 'tệp hệ thống', nếu không sẽ không tìm thấy. '/ T: c' đặt trường thời gian để hiển thị 'sáng tạo'.


1
Điều đó sẽ đưa ra ngày tạo của pagefile, hoàn toàn không liên quan đến ngày cài đặt của chính HĐH. Nó có thể được tạo lại vì một số lý do và thậm chí bị can thiệp nếu bạn thực sự muốn. Đó không phải là một phương pháp đáng tin cậy.
Alejandro

1
Nó không "hoàn toàn không liên quan", vì nó được tạo ra trong quá trình cài đặt ban đầu. Vì vậy, trừ khi nó được cố tình tái tạo hoặc xóa vào một lúc nào đó, trong 'hầu hết các trường hợp', ngày tạo sẽ giống như ngày cài đặt ban đầu, vì nó vẫn tồn tại thông qua các bản nâng cấp. Vâng, nó không đáng tin cậy 100%, nhưng nó nhanh chóng và dễ dàng, và tôi sẽ đoán chính xác trong nhiều trường hợp hơn là không. Chắc chắn nhiều hơn rất nhiều câu trả lời ở đây.
MoonDogg

Bạn có thể tạo lại tệp đó bất cứ lúc nào và nếu phương pháp không đảm bảo kết quả đúng 100% một lần, không ai có thể thực sự dựa vào nó.
Slava Murygin

2

Xác định ngày cài đặt Windows với WMIC

os vũ trụ có được installdate


1
Điều này có lẽ chỉ cần đọc khoá đăng ký InstallDate và có cùng một vấn đề; nó thay đổi trên bản cập nhật xây dựng.
Anders

1

Sử dụng đặc tả. Nó hiển thị ngày cài đặt trong phần Hệ điều hành. http://www.piriform.com/speccy


1
Không phải là một giải pháp lập trình. Nếu có một loại giao diện nào đó mà Powershell (ví dụ) có thể tương tác, hãy liệt kê nó.
Tyler Montney

1

Bạn cũng có thể kiểm tra kiểm tra bất kỳ thư mục nào trong ổ đĩa hệ thống như "windows" và "file chương trình". Nhấp chuột phải vào thư mục, nhấp vào các thuộc tính và kiểm tra trong tab chung ngày mà thư mục được tạo.


5
Mặc dù hợp lệ - đây không phải là một giải pháp lập trình
Matt Wilko

@Matt Ông cung cấp cho bạn thuật toán trong Lenguaje tự nhiên, vì vậy chỉ cần sao chép nó trong một thiết bị của con người! : D
Jonathan

3
Trong các phiên bản Windows mới hơn, sử dụng cài đặt dựa trên hình ảnh ( .WIMtệp), ngày được tạo là khi Microsoft tạo hình ảnh, không phải khi hệ điều hành được cài đặt trên một máy cụ thể.
ctype.h

1

Trong RunCommand viết "MSINFO32"và nhấn enter Nó sẽ hiển thị Tất cả thông tin liên quan đến hệ thống


Tất cả thông tin ngoại trừ thời gian cài đặt. Windows 7 SP1.
Pavel Vlasov


0

Nhấn WindowsKey+ Rvà nhậpcmd

Trong cửa sổ lệnh gõ:

systeminfo | find /i "Original"

(đối với các phiên bản cũ hơn của windows, hãy nhập "ORIGINAL" bằng tất cả các chữ in hoa).


Bất cứ ai biết tại sao bỏ phiếu xuống? Làm việc cho tôi, nó có thể không chính xác vì một số lý do? Có thể giải thích khi bỏ phiếu xuống
russelrillema 16/07/18

@russelrillema gói dịch vụ chính cuối cùng ghi đè ngày này.
Don Tomato

Nếu bạn có windows 10 v1809, hãy đi tới Cài đặt> Hệ thống> Giới thiệu. Tìm thông số kỹ thuật của Windows và ở đó bạn có một trường có tên "Cài đặt trên". (Lưu ý: Không chắc chắn nếu nó hoạt động trên các phiên bản cũ hơn của windows)
abdullahjavaid86

0

Bạn chỉ cần kiểm tra ngày tạo của Thư mục Windows (nhấp chuột phải vào nó và kiểm tra thuộc tính) :)


0

Bạn có thể làm điều này với 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()}}

0

Hãy thử lệnh powershell này:

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"

Gần như đúng và cần lưu ý nhiều hơn vì điều này có tính đến các bản cập nhật xây dựng tài khoản làm thay đổi khóa trong HKLM: \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion nhưng người ta cần cả hai kết hợp vì các khóa của hệ điều hành nguồn không xuất hiện nếu một hệ thống chưa bao giờ thực sự được cập nhật (chưa) và cũng sẽ thiếu ngày cập nhật bản dựng cuối cùng
Syberdoor
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.