นี่อาจฟังดูเป็นคำถามบ้าๆ แต่ฉันจะรู้ได้อย่างไร (หวังว่าจะผ่าน API / คีย์รีจิสทรี) เวลาและวันที่ติดตั้งของ Windows
สิ่งที่ดีที่สุดที่ฉันสามารถทำได้คือการดูไฟล์ต่างๆใน C: \ Windows และพยายามเดา ... แต่นั่นไม่ใช่ทางออกที่ดี
นี่อาจฟังดูเป็นคำถามบ้าๆ แต่ฉันจะรู้ได้อย่างไร (หวังว่าจะผ่าน API / คีย์รีจิสทรี) เวลาและวันที่ติดตั้งของ Windows
สิ่งที่ดีที่สุดที่ฉันสามารถทำได้คือการดูไฟล์ต่างๆใน C: \ Windows และพยายามเดา ... แต่นั่นไม่ใช่ทางออกที่ดี
คำตอบ:
ในregedit.exe
การเดินทางไปที่:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate
โดยกำหนดให้เป็นจำนวนวินาทีนับตั้งแต่วันที่ 1 มกราคม 1970 (หมายเหตุ: สำหรับ Windows 10 วันที่นี้จะเป็นวันที่ติดตั้งการอัปเดตฟีเจอร์ล่าสุดไม่ใช่วันที่ติดตั้งเดิม)
ในการแปลงตัวเลขนั้นให้เป็นวันที่ / เวลาที่อ่านได้เพียงแค่วางค่าทศนิยมในฟิลด์ "UNIX TimeStamp:" ของเครื่องมือออนไลน์ Unix Time Conversionนี้
คำถามอีกข้อที่เป็น elligeable สำหรับ ' code-challenge ': นี่คือไฟล์ปฏิบัติการซอร์สโค้ดบางส่วนเพื่อตอบปัญหา แต่ยังไม่สมบูรณ์
คุณจะพบสคริปต์ vb ที่ทุกคนสามารถเรียกใช้งานบนคอมพิวเตอร์ของตนพร้อมกับผลลัพธ์ที่คาดหวังได้หรือไม่?
systeminfo|find /i "original"
จะให้คุณวันที่เกิดขึ้นจริง ... ไม่ได้จำนวนวินาที;)
ขณะที่แซมมี่ ความคิดเห็น , 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 นั่นจะเป็น:
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;
อีกทางเลือกหนึ่งCoastNเสนอในความคิดเห็น :
เนื่องจาก
system.ini-file
ยังคงไม่มีการแตะต้องในการปรับใช้ Windows ทั่วไปคุณสามารถรับวันที่ติดตั้งได้โดยใช้ oneliner ต่อไปนี้(PowerShell): (Get-Item "C:\Windows\system.ini").CreationTime
systeminfo|find /i "original"
เพื่อกรอง "วันที่ติดตั้งเดิม" เท่านั้น หากคุณใช้ "ติดตั้ง" เป็นสตริงคุณจะได้รับข้อมูลมากกว่าที่คุณต้องการ นอกจากนี้หากภาษาไม่ใช่ภาษาอังกฤษสิ่งนี้อาจใช้ไม่ได้ ต้องตรงกับภาษา สำหรับภาษาสวีเดนสิ่งนี้จะเป็น "ursprungligt" และ "ursprüngliches" สำหรับภาษาเยอรมัน
เรามีคำตอบเพียงพอที่นี่ แต่ฉันต้องการใส่ 5 เซ็นต์
ฉันติดตั้ง Windows 10 10/30/2015
และอัปเดตผู้สร้างไว้04/14/2017
ที่ด้านบนของการติดตั้งครั้งก่อน วิธีการทั้งหมดที่อธิบายไว้ในคำตอบก่อนที่ฉันจะระบุวันที่ติดตั้งการอัปเดตผู้สร้าง
ฉันจัดการเพื่อหาวันที่สร้างไฟล์ไม่กี่ไฟล์ซึ่งตรงกับวันที่ติดตั้งจริง (สะอาด) ของ Windows 10 ของฉัน:
C:\Windows
C:\
system.ini
ไม่มีเหตุผลในเครื่อง Windows 7 และ 2008 ของฉันดูเหมือนว่าการประทับเวลาที่สร้างขึ้นจากแหล่งการติดตั้งจะถูกคัดลอกเมื่อติดตั้ง C:\pagefile.sys
มีการประทับเวลาที่ถูกต้อง
เปิดพรอมต์คำสั่งพิมพ์ " systeminfo " แล้วกด Enter ระบบของคุณอาจใช้เวลาไม่กี่นาทีในการรับข้อมูล ในหน้าผลลัพธ์คุณจะพบรายการเป็น "วันที่ติดตั้งระบบ" นั่นคือวันที่ติดตั้ง windows กระบวนการนี้ใช้ได้ใน XP, Win7 และบน win8
วิธีค้นหาวันที่ / เวลาในการติดตั้ง Windows 7:
เห็นแค่นี้ ...
แค่นั้นแหละ; จากนั้นคุณสามารถดูข้อมูลทั้งหมดเกี่ยวกับเครื่องของคุณ วิธีการที่ง่ายมาก
เคยต้องการทราบวันที่ติดตั้งระบบปฏิบัติการของพีซีของคุณหรือไม่? นี่คือวิธีที่ง่ายและรวดเร็วในการค้นหาวันที่และเวลาที่ระบบปฏิบัติการพีซีของคุณติดตั้ง (หรืออัปเกรดครั้งล่าสุด)
เปิดพรอมต์คำสั่ง (start-> run -> พิมพ์ cmd-> hit enter) และเรียกใช้คำสั่งต่อไปนี้
systeminfo | ค้นหา / i "วันที่ติดตั้ง"
ภายในไม่กี่วินาทีคุณจะเห็นวันที่ติดตั้ง
ใน Powershell ให้รันคำสั่ง:
systeminfo | Select-String "Install Date:"
find /i
Windows 10 OS ยังมีคีย์ย่อยของรีจิสทรีอีกอันหนึ่งซึ่งอยู่ในไฟล์กลุ่ม SYSTEM:
Computer\HKEY_LOCAL_MACHINE\SYSTEM\Setup\
ข้อมูลวันที่ติดตั้งที่นี่คือวันที่ / เวลาในการติดตั้งระบบปฏิบัติการคอมพิวเตอร์ดั้งเดิม นอกจากนี้ยังบอกคุณเมื่อการอัปเดตเริ่มต้นเช่น
Computer\HKEY_LOCAL_MACHINE\SYSTEM\Setup\Source OS (Updated on xxxxxx)."
แน่นอนว่านี่อาจไม่ใช่เมื่อการอัปเดตสิ้นสุดลงผู้ใช้อาจเลือกที่จะปิดแทนที่จะรีบูตเมื่อได้รับแจ้ง ฯลฯ ...
การอัปเดตสามารถทำได้จริงในวันอื่นและ
Computer\HKEY_LOCAL_MACHINE\SYSTEM\Setup\Source OS (Updated on xxxxxx)"
จะแสดงวันที่ / เวลาที่เริ่มการอัปเดต
HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDate และ systeminfo.exe ผลิตวันที่ไม่ถูกต้อง
นิยามของการประทับเวลายูนิกซ์เป็นเขตอิสระ การประทับเวลา UNIX หมายถึงจำนวนวินาทีที่ผ่านไปนับตั้งแต่ 00:00:00 เวลาสากลเชิงพิกัด (UTC) วันพฤหัสบดีที่ 1 มกราคม พ.ศ. 2513 และไม่นับวินาทีอธิกสุรทิน
กล่าวอีกนัยหนึ่งคือถ้าคุณติดตั้งคอมพิวเตอร์ของคุณในซีแอตเทิลวอชิงตันและย้ายไปที่นิวยอร์กแล้ว HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ InstallDate จะไม่แสดงถึงสิ่งนี้ มันเป็นวันที่ไม่ถูกต้องก็จะไม่จัดเก็บเขตเวลาที่เครื่องคอมพิวเตอร์ที่ติดตั้งครั้งแรก
ผลของสิ่งนี้คือหากคุณเปลี่ยนเขตเวลาในขณะที่รันโปรแกรมนี้วันที่จะไม่ถูกต้อง คุณต้องเรียกใช้ไฟล์ปฏิบัติการอีกครั้งเพื่อให้บัญชีมีการเปลี่ยนแปลงเขตเวลา
แต่คุณสามารถรับข้อมูลเขตเวลาจากคลาสWMI Win32_Registry
InstallDate อยู่ในรูปแบบ UTC (yyyymmddHHMMSS.xxxxxx ± UUU) ตามบทความของ Microsoft TechNet "การทำงานกับวันที่และเวลาโดยใช้ 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);
}
ฉันพบว่าวันที่สร้าง c: \ pagefile.sys นั้นค่อนข้างน่าเชื่อถือในกรณีส่วนใหญ่ สามารถรับได้อย่างง่ายดายโดยใช้คำสั่งนี้ (สมมติว่าติดตั้ง Windows บน C :):
dir /as /t:c c:\pagefile.sys
'/ as' ระบุ 'ไฟล์ระบบ' มิฉะนั้นจะไม่พบ '/ t: c' ตั้งค่าฟิลด์เวลาเพื่อแสดง 'การสร้าง'
กำหนดวันที่ติดตั้ง Windows ด้วย WMIC
wmic os รับ installdate
ใช้ speccy แสดงวันที่ติดตั้งในส่วนระบบปฏิบัติการ http://www.piriform.com/speccy
คุณยังสามารถตรวจสอบโฟลเดอร์ใดก็ได้ในไดรฟ์ระบบเช่น "windows" และ "program files" คลิกขวาที่โฟลเดอร์คลิกที่คุณสมบัติและตรวจสอบภายใต้แท็บทั่วไปวันที่ที่สร้างโฟลเดอร์
.WIM
ไฟล์) วันที่สร้างคือวันที่ Microsoft สร้างอิมเมจไม่ใช่เมื่อติดตั้งระบบปฏิบัติการบนเครื่องใดเครื่องหนึ่ง
ใน RunCommand ให้เขียน"MSINFO32"
และกด Enter จะแสดงข้อมูลทั้งหมดที่เกี่ยวข้องกับระบบ
คุณสามารถตรวจสอบวันที่สร้างโฟลเดอร์ Windows ได้ (คลิกขวาและตรวจสอบคุณสมบัติ) :)
วิธีง่ายๆจาก PowerShell:
(Get-CimInstance -Class Win32_OperatingSystem).InstallDate
ดึงมาจาก: https://www.sysadmit.com/2019/10/windows-cuando-fue-instalado.html
กดWindowsKey+ Rและป้อนcmd
ในหน้าต่างคำสั่งพิมพ์:
systeminfo | find /i "Original"
(สำหรับ Windows รุ่นเก่าให้พิมพ์ "ORIGINAL" ด้วยตัวพิมพ์ใหญ่ทั้งหมด)
คุณสามารถทำได้ด้วย 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()}}
ลองใช้คำสั่ง powershell นี้:
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"