2008-10-04 104 views
89

這可能聽起來像是一個瘋狂的問題,但我怎麼能找出(希望通過API /註冊表項)Windows的安裝時間和日期?如何找到Windows的安裝時間和日期?

到目前爲止我所能想到的最好的方法是查看C:\ Windows中的各種文件並嘗試猜測...但這不完全是一個很好的解決方案。

回答

71
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate 

自1月1日它給出的秒數,1970年

到該號碼轉換成可讀的日期/時間只需粘貼在該領域的十進制值:此Unix Time Conversion online tool的「Unix時間戳」 。

+3

這很棒,您是否有一個特別的地方可以獲取這些信息,或者您只是知道它? – 2008-10-04 16:50:07

+3

工程很好,除非Windows使用磁盤映像安裝。 有沒有辦法檢查用戶配置文件的創建來解決這個問題? – 2013-10-01 14:27:24

+0

不工作體現了最新的服務包/更新安裝日期(EA當前版本,而不是原來的版本安裝時間。 – user3800527 2018-01-29 08:18:20

144

另一個針對'code-challenge'的問題:這裏有一些源代碼可執行文件來回答這個問題,但它們並不完整。
你會找到一個任何人都可以在他/她的計算機上執行的vb腳本,並獲得預期的結果嗎?


systeminfo|find /i "original" 

會給你的實際日期...不是秒數;)
作爲Sammycommentsfind /i "install"給比你更需要。
這隻適用於區域設置爲英語的情況:它需要與語言相匹配。
對於瑞典語,這將是「ursprungligt」和「ursprüngliches」爲德語。


在Windows PowerShell腳本,你可以只輸入:

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

通過使用WMI(Windows Management Instrumentation

如果你不使用WMI,您必須閱讀,然後轉換的註冊表鍵值:

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" 

本文的其餘部分爲您提供了其他訪問方式那同樣的信息。挑選你的毒藥;)


在VB.Net,這將使類似:

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 

Autoit(一個Windows腳本語言),這將是:

;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中, o如:

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; 
+0

同時使用autoIt3.0我發現我們需要添加頭文件功能_DateAdd及其 的#include shahjapan 2010-04-25 07:50:44

+0

系統的系統信息| find /我「安裝」不適合我Duno爲什麼... – Pedro77 2013-05-17 14:26:26

+0

@ Pedro77你有錯誤信息?o您是否有隱藏Windows系統「find.exe」命令的gnu find(http://superuser.com/q/312135/141)? – VonC 2013-05-17 15:09:11

13

如何找出Windows 7的安裝日期/時間:

只是看到這...

  • 開始>輸入CMD
  • 進入系統的系統信息

就是這樣;那麼你可以看到關於你的機器的所有信息;非常簡單的方法

2

您還可以檢查系統驅動器中的任何文件夾,如「窗口」和「程序文件」。右鍵單擊文件夾,單擊屬性並在常規選項卡下檢查文件夾的創建日期。

29

打開命令提示符,鍵入「systeminfo」,然後按回車。您的系統可能需要幾分鐘才能獲取信息。在結果頁面中,您會看到一個條目爲「系統安裝日期」。這是Windows安裝的日期。這個過程在XP,Win7和win8上都可以工作。

9

有沒有想過找出你電腦的操作系統安裝日期?下面是一個快速簡便的方法,可以找出安裝(或上次升級)PC操作系統的日期和時間。

打開命令提示符(開始 - >運行 - >型CMD->擊輸入),並運行下面的命令

系統的系統|發現/我「安裝日期」

在幾秒鐘你會看到安裝日期

7

在PowerShell中運行以下命令:

systeminfo | Select-String "Install Date:" 
1

在RunCommand 寫"MSINFO32"和回車鍵 它將顯示與系統相關的所有信息

2

HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDate和systeminfo。 exe生成wrong date

UNIX時間戳的definition與時區無關。 UNIX時間戳定義爲從00:00:00協調世界時(UTC)(1970年1月1日星期四)開始經過的秒數,不計算閏秒。換句話說,如果你在華盛頓州的西雅圖安裝了電腦,並且搬到了紐約州紐約,那麼HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDate將不會反映這一點。這是錯誤的日期,它不存儲計算機最初安裝的時區。

但是,您可以從WMI Win32_Registry類中獲取時區信息。

InstallDate是在UTC格式(yyyymmddHHMMSS.xxxxxx±UUU),按照微軟的TechNet article「使用日期和使用時間WMI」,其中特別是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);  
    } 
12

我們在這裏有足夠的答案,但我想把我的5美分。

我安裝了Windows 10,安裝在10/30/2015上,並且在我以前的安裝之上安裝了04/14/2017上的Creators Update。在我之前的答案中描述的所有方法都會爲我提供創作者更新安裝的日期。

Original Install Date

我設法找到了創作的幾files`日期相匹配的現實(乾淨)安裝我的Windows 10的日期:

  • C:\Windows

Few C:\Windows files

  • in C:\

Few C:\ files

0

的Windows 10操作系統還有另一個註冊表子項,這一個在系統配置單元文件:

> "\Setup\Source OS." 

這裏的安裝日期的信息是原來的電腦的操作系統,安裝日期/時間。它還告訴你什麼時候該更新開始,即

"\Setup\Source OS (Updated on xxxxxx)." 

這當然可以不是當更新結束後,用戶可以選擇關閉,而不是在出現提示時重新啓動,等...

的更新實際上可以在不同的日子完成,並且

> "\Setup\Source OS (Updated on xxxxxx)" 

將反映它開始更新的日期/時間。

0

WindowsKey的 + [R並進入cmd

在命令窗口中鍵入:

systeminfo | find /i "Original" 

(在所有大寫字母舊版本的窗口,鍵入 「原始」)。

相關問題