Ще одне питання, яке можна вирішити як " виклик коду ": ось деякі виконувані файли вихідного коду, щоб відповісти на проблему, але вони не є повною.
Ви знайдете сценарій 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 )
Якщо ви не використовуєте 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
У Дельфі 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