Как узнать время и дату установки Windows?
Это может показаться немного сумасшедшим вопросом, но как я могу узнать (надеюсь, через API/раздел реестра) время и дату установки Windows?
лучшее, что я могу придумать до сих пор, это посмотреть на различные файлы в C:Windows и попробуй угадать... но это не совсем хорошее решение.
15 ответов:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDateэто задано как количество секунд с 1 января 1970 года.
чтобы преобразовать это число в читаемую дату / время, просто вставьте десятичное значение в поле "unix TimeStamp:" этого Unix-время преобразования он-лайн инструмент.
еще один вопрос 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)
если вы не используете 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"остальная часть этого поста дает вам другие способы доступа к той же информации. Выбери свой яд;)
In 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
на программы (язык сценариев 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;
Откройте командную строку, введите "systeminfo " и нажмите enter. Ваша система может занять несколько минут, чтобы получить информацию. На странице результатов вы найдете запись "дата установки системы". Это дата установки windows. Этот процесс работает в XP, Win7, а также на win8.
у нас достаточно ответов здесь, но я хочу поставить свои 5 центов.
у меня установлена Windows 10 на
10/30/2015и создатели обновления установлены на04/14/2017на моей предыдущей установки. Все методы, описанные в ответах перед моим, дают мне дату установки обновления Creators.мне удалось найти дату создания нескольких файлов, которая соответствует реальной (чистой) дате установки моей Windows 10:
- на
C:\Windows
- на
C:\
Как узнать дату/время установки Windows 7:
просто посмотрите на это...
- Пуск > введите CMD
- введите systeminfo
вот и все; тогда вы можете увидеть всю информацию о вашей машине; очень простой метод
всегда хотел узнать дату установки операционной системы вашего ПК? Вот быстрый и простой способ узнать дату и время, когда ваша операционная система ПК установлена(или последний раз обновлена).
Откройте командную строку (Пуск - > Выполнить - > тип cmd - > нажмите enter) и выполните следующую команду
systeminfo / find / i "Дата установки"
через пару секунд вы увидите дату установки
используйте speccy. Он показывает дату установки в разделе операционной системы. http://www.piriform.com/speccy
вы также можете проверить проверить любую папку на системном диске, например "windows" и "program files". Щелкните правой кнопкой мыши папку, нажмите на свойства и проверьте на вкладке Общие дату, когда папка была создана.
ОС Windows 10 имеет еще один подраздел реестра, на этот раз в файле SYSTEM hive:
> "\Setup\Source OS."информация о дате установки здесь-это исходная дата/время установки ОС компьютера. Он также сообщает вам, когда началось обновление, т. е.
"\Setup\Source OS (Updated on xxxxxx)."Это может, конечно, не быть, когда обновление заканчивается, пользователь может отключить вместо перезагрузки при появлении запроса и т. д...
обновление может фактически завершиться в другой день, и
> "\Setup\Source OS (Updated on xxxxxx)"будет отражать дату / время начала обновления.
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallDate и systeminfo.ехе выдает неверная дата.
на определение unix timestamp не зависит от часового пояса. Временная метка UNIX определяется как количество секунд, прошедших с 00: 00: 00 по всемирному координированному времени (UTC), четверг, 1 января 1970 года и не считая високосных секунд.
другими словами, если вы установили свой компьютер в Сиэтле, WA и переехал в Нью-Йорк, Нью-Йорк 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' задает поле времени для отображения 'создание'.
пресс WindowsKey + R и вводим
cmdв командной строке введите:
systeminfo | find /i "Original"(для более старых версий windows, введите "оригинал" во всех заглавных буквах).



Comments