這可能聽起來像是一個瘋狂的問題,但我怎麼能找出(希望通過API /註冊表項)Windows的安裝時間和日期?如何找到Windows的安裝時間和日期?
到目前爲止我所能想到的最好的方法是查看C:\ Windows中的各種文件並嘗試猜測...但這不完全是一個很好的解決方案。
這可能聽起來像是一個瘋狂的問題,但我怎麼能找出(希望通過API /註冊表項)Windows的安裝時間和日期?如何找到Windows的安裝時間和日期?
到目前爲止我所能想到的最好的方法是查看C:\ Windows中的各種文件並嘗試猜測...但這不完全是一個很好的解決方案。
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate
自1月1日它給出的秒數,1970年
到該號碼轉換成可讀的日期/時間只需粘貼在該領域的十進制值:此Unix Time Conversion online tool的「Unix時間戳」 。
另一個針對'code-challenge'的問題:這裏有一些源代碼可執行文件來回答這個問題,但它們並不完整。
你會找到一個任何人都可以在他/她的計算機上執行的vb腳本,並獲得預期的結果嗎?
systeminfo|find /i "original"
會給你的實際日期...不是秒數;)
作爲Sammycomments,find /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;
使用speccy。它顯示操作系統部分中的安裝日期。 http://www.piriform.com/speccy
如何找出Windows 7的安裝日期/時間:
只是看到這...
就是這樣;那麼你可以看到關於你的機器的所有信息;非常簡單的方法
您還可以檢查系統驅動器中的任何文件夾,如「窗口」和「程序文件」。右鍵單擊文件夾,單擊屬性並在常規選項卡下檢查文件夾的創建日期。
打開命令提示符,鍵入「systeminfo」,然後按回車。您的系統可能需要幾分鐘才能獲取信息。在結果頁面中,您會看到一個條目爲「系統安裝日期」。這是Windows安裝的日期。這個過程在XP,Win7和win8上都可以工作。
有沒有想過找出你電腦的操作系統安裝日期?下面是一個快速簡便的方法,可以找出安裝(或上次升級)PC操作系統的日期和時間。
打開命令提示符(開始 - >運行 - >型CMD->擊輸入),並運行下面的命令
系統的系統|發現/我「安裝日期」
在幾秒鐘你會看到安裝日期
在PowerShell中運行以下命令:
systeminfo | Select-String "Install Date:"
在RunCommand 寫"MSINFO32"
和回車鍵 它將顯示與系統相關的所有信息
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);
}
的Windows 10操作系統還有另一個註冊表子項,這一個在系統配置單元文件:
> "\Setup\Source OS."
這裏的安裝日期的信息是原來的電腦的操作系統,安裝日期/時間。它還告訴你什麼時候該更新開始,即
"\Setup\Source OS (Updated on xxxxxx)."
這當然可以不是當更新結束後,用戶可以選擇關閉,而不是在出現提示時重新啓動,等...
的更新實際上可以在不同的日子完成,並且
> "\Setup\Source OS (Updated on xxxxxx)"
將反映它開始更新的日期/時間。
按WindowsKey的 + [R並進入cmd
在命令窗口中鍵入:
systeminfo | find /i "Original"
(在所有大寫字母舊版本的窗口,鍵入 「原始」)。
這很棒,您是否有一個特別的地方可以獲取這些信息,或者您只是知道它? – 2008-10-04 16:50:07
工程很好,除非Windows使用磁盤映像安裝。 有沒有辦法檢查用戶配置文件的創建來解決這個問題? – 2013-10-01 14:27:24
不工作體現了最新的服務包/更新安裝日期(EA當前版本,而不是原來的版本安裝時間。 – user3800527 2018-01-29 08:18:20