Как найти время и дату установки Windows?
Это может показаться немного сумасшедшим вопросом, но как я могу узнать (надеюсь, с помощью ключа API/реестра) время и дата установки Windows?
Лучшее, что я могу придумать, - это посмотреть на различные файлы в C:\Windows и попытаться угадать... но это не совсем хорошее решение.
Ответы
Ответ 1
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate
Он задается как количество секунд с 1 января 1970 года.
Чтобы преобразовать это число в читаемую дату/время, просто вставьте десятичное значение в поле "UNIX TimeStamp:" этого онлайн-инструмент Unix Time Conversion.
Ответ 2
Еще один вопрос: "Уязвимость для code-challenge": вот некоторые исходные коды исходного кода, чтобы ответить на проблему, но они не являются полный.
Вы найдете vb script, который любой может выполнить на своем компьютере с ожидаемым результатом?
systeminfo|find /i "original"
даст вам фактическую дату... не количество секунд;)
Поскольку Sammy комментарии, find /i "install"
дает больше, чем вам нужно.
И это работает только в том случае, если язык является английским: он должен соответствовать языку.
Для шведского языка это будет "ursprungligt
" и "ursprüngliches
" для немецкого языка.
В Windows PowerShell script вы можете просто ввести:
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
В 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;
Ответ 3
У нас здесь достаточно ответов, но я хочу поставить свои 5 центов.
У меня Windows 10 установлена 10/30/2015
а Creators Update установлена 04/14/2017
поверх моей предыдущей установки. Все методы, описанные в предыдущих ответах, дают мне дату установки Creators Update.
![Original Install Date]()
Мне удалось найти дату создания нескольких файлов, которая соответствует реальной (чистой) дате установки моей Windows 10:
![Few C:\Windows files]()
![Few C:\ files]()
Ответ 4
Откройте командную строку, введите " systeminfo" и нажмите клавишу ввода. Для получения информации ваша система может занять несколько минут. На странице результатов вы найдете запись как "Дата установки системы". Это дата установки Windows. Этот процесс работает в XP, Win7, а также на win8.
Ответ 5
Как узнать дату и время установки Windows 7:
просто посмотрите это...
- start > введите CMD
- введите systeminfo
что он; то вы можете увидеть всю информацию о своей машине; очень простой метод
Ответ 6
Всегда хотелось узнать дату установки операционной системы вашего ПК? Ниже приведен быстрый и простой способ узнать дату и время установки операционной системы (или последней версии).
Откройте командную строку (start- > run → type cmd- > hit enter) и выполните следующую команду
systeminfo | find/i "установить дату"
Через пару секунд вы увидите дату установки
Ответ 7
В Powershell выполните команду:
systeminfo | Select-String "Install Date:"
Ответ 8
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate и systeminfo.exe выдают неправильную дату.
Определение метки времени UNIX не зависит от часового пояса. Временная метка UNIX определяется как количество секунд, прошедших с 00:00:00 по всемирному координированному времени (UTC), четверг, 1 января 1970 года, без учета високосных секунд.
Другими словами, если вы установили свой компьютер в Сиэтле, штат Вашингтон, и переехали в Нью-Йорк, штат Нью-Йорк, HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate не будет отражать это. Это неправильная дата, она не хранит часовой пояс, где изначально был установлен компьютер.
В результате, если вы измените часовой пояс во время работы этой программы, дата будет неправильной. Вы должны повторно запустить исполняемый файл, чтобы он учитывал изменение часового пояса.
Но вы можете получить информацию о часовом поясе из класса WMI Win32_Registry.
InstallDate имеет формат UTC (ггггммддЧЧММСС .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);
}
Ответ 9
В ОС Windows 10 есть еще один раздел реестра, этот в файле куста 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)"
будет отражать дату/время начала обновления.
Ответ 10
Я считаю, что дата создания c:\pagefile.sys может быть довольно надежной в большинстве случаев. Его легко получить с помощью этой команды (при условии, что Windows установлена на C :):
dir /as /t:c c:\pagefile.sys
"/As" указывает "системные файлы", в противном случае он не будет найден. "/T: c" устанавливает поле времени для отображения "создание".
Ответ 11
Определите дату установки Windows с помощью WMIC
wmic os get installldate
Ответ 12
Используйте speccy. Он показывает дату установки в разделе "Операционная система".
http://www.piriform.com/speccy
Ответ 13
Вы также можете проверить проверку любой папки на системном диске, например "окна" и "файлы программы". Щелкните правой кнопкой мыши папку, щелкните по свойствам и проверьте под общей вкладкой дату создания папки.
Ответ 14
В RunCommand
напишите "MSINFO32"
и нажмите Enter.
Он покажет всю информацию, связанную с системой
Ответ 15
Нажмите WindowsKey + R и введите cmd
В командной строке введите:
systeminfo | find /i "Original"
(для более старых версий Windows введите "ОРИГИНАЛ" заглавными буквами).
Ответ 16
Вы можете просто проверить дату создания папки Windows (щелкните правой кнопкой мыши на ней и проверьте свойства)
:)
Ответ 17
Вы можете сделать это с помощью 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()}}
Ответ 18
Попробуйте эту команду 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"
Ответ 19
Очень простой способ из PowerShell:
(Get-CimInstance -Class Win32_OperatingSystem).InstallDate
Извлечено из: https://www.sysadmit.com/2019/10/windows-cuando-fue-instalado.html
Ответ 20
https://www.howtogeek.com/174997/ask-htg-how-can-i-check-the-age-of-my-windows-installation/ Вот точное решение вашего вопроса. Он показывает дату установки оригинальной Windows, а не обновления с точными секундами.