- Вопрос или проблема
- Из ответа mivk, с некоторыми bashisms
- Преамбула
- Затем
- Ответ или решение
- 1. Использование исполняемых файлов
- Примеры команд в командной строке:
- 2. Документ лицензии
- 3. Чтение реестра
- Пример на Linux:
- 4. Использование командной строки установочного диска
- 5. Программное обеспечение для извлечения ключа продукта
- Заключение
Вопрос или проблема
Я пытаюсь восстановить старый компьютер, который не загружается, и не уверен, какая версия Windows на нем установлена. Как я могу это определить, просто исследуя файловую систему?
Я довольно уверен, что это либо Vista, либо Windows 7. Есть небольшая вероятность, что это Windows Server 2008.
Ваш лучший вариант – найти свойства исполняемого файла Windows (например, explorer.exe). В моем случае его версия файла и версия продукта – 6.1.7601.17567.
6.0.xxxx.xxxxx будет означать Windows Vista (где 6000, 6001 и 6002 – это RTM, SP1 и SP2 соответственно).
6.1.xxxx.xxxxx будет означать Windows 7 (где 7600 и 7601 – это RTM и SP1).
Те же номера версий будут применяться и к Windows Server, так что я не уверен, как вы могли бы отличить их с помощью этого метода.
Посмотрите на файл
C:\Windows\System32\License.rtf
Этот файл можно найти для всех этих операционных систем Windows
Vista, W7, W8, W8.1
Эти License rtf будут содержать версию Windows и редакцию, например, Windows 7 Pro.
Windows 10 имеет rtf файл, но не показывает редакцию, но если он содержит уведомление об арбитраже вверху, вы знаете, что это W10, или используйте трюк с проводником из ответа Мэтью Стииплса.
Чтобы узнать тип продукта Windows 10 (Home Pro и т.д.), посмотрите ответ Мойфа Мерфи дальше по странице.
Для Windows 10 можно использовать Wordpad.exe или notepad.exe на Windows ОС для анализа
C:\ProgramData\Microsoft\Diagnosis\osver.txt
.
В системах Unix команда консоли, как
cat <корневая часть системы Windows>/ProgramData/Microsoft/Diagnosis/osver.txt
покажет номер версии.
Пример для номера сборки ОС: 10.0.18362 (без .116 – .267 @2019-07-26)
Если у вас нет работающей Windows и вы хотите найти информацию с машины под управлением Linux, вы можете использовать hivexget
, чтобы прочитать файл реестра на диске.
Для систем на базе Debian установите его с помощью sudo apt install libhivex-bin
.
Пример (с grep для сокращения вывода):
# hivexget /mnt/tmp/Windows/System32/config/software 'Microsoft\Windows NT\CurrentVersion' \
| egrep 'BuildLab|ProductName|Version"|"ProductId'
"BuildLab"="19041.vb_release.191206-1406"
"BuildLabEx"="19041.1.amd64fre.vb_release.191206-1406"
"CurrentVersion"="6.3"
"EditionSubVersion"=""
"ProductName"="Windows 10 Pro"
"ProductId"="00330-80000-00000-AA669"
"DisplayVersion"="21H1"
Вам, возможно, придется изменить регистры пути и имени файла. Например, файл реестра может называться “SOFTWARE” вместо “software” и т.д.
Удалите часть | egrep ...
, чтобы увидеть все значения под этим ключом.
Используя реестр, вы можете узнать версию и редакцию
Я нашел этот ответ на Stackoverflow на вопрос Определить версию Windows, редакцию и пакет обновления ОФЛАЙНОГО ДИСКА
Используйте значения под
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion
. Я предполагаю, что вы знаете, где найти этот хранилище?! Соответствующее хранилище можно найти под%SystemRoot%\System32\config
с именемSOFTWARE
.Кстати: вы можете попытаться проверить свои результаты, посмотрев на некоторые известные файлы (например,
kernel32.dll
,ntdll.dll
) и в их ресурсах информации о версии (то, что вам нужно – это версия файла: используя, например,GetFileVersionInfo()
).Значения редакции, если это необходимо, можно найти по адресу
HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions
.
Более конкретно, как загрузить хранилище другого реестра:
Если у вас есть Linux на той же системе, вы можете загрузиться в Linux, убедиться, что раздел Windows смонтирован (например, здесь он находится в /mnt/C
), а затем выполнить strings /mnt/C/Windows/System32/ntoskrnl.exe 2>/dev/null | grep amd64
. У меня напечаталась 9600.18258.amd64fre.winblue_ltsb.160303-0600
, и поиск в Google показывает, что это кодовое имя для Windows 8.1.
Если вы загрузитесь с установочного носителя Windows (скажем, USB-накопителя) и нажмете [SHIFT] + [F10], чтобы получить командную строку, вы можете запросить, какой букве диска соответствует оригинальный диск ОС, а затем получить информацию о версии программы, такой как ntoskrnl.exe
. Например, чтобы исследовать установленные диски и соответствующие буквы дисков,
$ wmic diskdrive get model,name,serialnumber
$ wmic logicaldisk get description,deviceid,volumename
$ wmic datafile where name="<БУКВА ДИСКА>:\\Windows\\System32\\ntoskrnl.exe" get Version /value
Version 10.0.15063.413
Или, используя метод от @beyondtime, который требует меньше печатания, но опускает десятичную часть номера сборки
$ type "<БУКВА ДИСКА>:\ProgramData\Microsoft\Diagnosis\osver.txt"
10.0.15063
Таким образом, здесь ОС, установленная на указанной букве диска – Windows 10, сборка 15063.413. Поиск в Google показывает, что это Windows 10 версии 1703 | Redstone 2 | Обновление для создателей.
В качестве бонуса, если вы хотите увидеть, когда последний раз загружалась эта ОС, вы можете сделать
$ dir /ah /tw <БУКВА ДИСКА>:\pagefile.sys
01/31/2017 03:04 PM ...... pagefile.sys
Вы, вероятно, можете определить, когда ОС была первоначально установлена, просмотрев время создания скрытых файлов и папок в корне диска:
$ dir /ah /tc "<БУКВА ДИСКА>:\"
И чтобы завершить работу, когда закончите:
$ wpeutil shutdown
Если вы все еще можете запускать исполняемые файлы из этой файловой системы, вы можете запустить C:\Windows\System32\winver.exe
Из ответа mivk, с некоторыми bashisms
И после чтения страницы man для hivexsh
…
Преамбула
Для того чтобы найти правильное имя файла, я делаю:
rfile=($mnt/[wW][iI][nN][dD][oO][wW][sS]/[sS][yY][sS][tT][eE][mM]32)
rfile=(${rfile[@]/%//[cC][oO][nN][fF][iI][gG]})
rfile=(${rfile[@]/%//[sS][oO][fF][tT][wW][aA][rR][eE]})
Затем
hivexsh "$rfile" < <(
echo 'cd Microsoft\Windows NT\CurrentVersion'
for key in ProductName CurrentVersion ProductId BuildLab ;do
echo lsval $key
done
)
Вывод будет в том порядке, который я запрашивал:
Windows 10 Pro
6.3
00330-80000-00000-AA497
22000.co_release.210604-1628
или
Microsoft Windows XP
5.1
55711-OEM-0011903-00117
2600.xpsp_sp3_qfe.130704-0421
Получите Magical Jelly Bean Keyfinder. Портативная бесплатная версия работает нормально. Лучше всего скачать с их сайта magicaljellybean.com или с софпедия и т.д.
Запустите его. В меню инструментов выберите >> загрузить хранилище. Он затем покажет все ваши диски, выберите папку windows на нужном диске. Он мгновенно предоставит версию и ключи.
Подробная информация о версии Windows находится в ключе реестра HKLM\Software\Microsoft\Windows NT\CurrentVersion
. Вам нужно будет загрузить соответствующее хранилище из реестра той системы:
reg load HKLM\Temp x:\Windows\System32\config\SOFTWARE
где Temp
– произвольное имя, которое нужно использовать, а x:\Windows
– это путь к корню Windows.
Затем, если у вас есть PowerShell под рукой, вы можете получить информацию следующим образом:
Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion'
Вас могут интересовать конкретные свойства:
Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion'
| select ProductName, EditionID, DisplayVersion, CurrentVersion, CurrentBuildNumber, UBR
В противном случае просто используйте reg
:
reg query "HKLM\Temp\Microsoft\Windows NT\CurrentVersion" /v *
или для конкретного свойства:
reg query "HKLM\Temp\Microsoft\Windows NT\CurrentVersion" /v ProductName
Откройте файл bootmgr в блокноте, он находится на жестком диске, который вы хотите узнать о его версии, это будет скрытый файл, поэтому выберите показать скрытые файлы в параметрах папки.
Ответ или решение
Чтобы определить версию и редакцию установленных операционных систем Windows на недоступном для загрузки компьютере, существуют несколько методов, которые можно применить при анализе файловой системы. Давайте рассмотрим эти методы по порядку.
1. Использование исполняемых файлов
Один из наиболее надежных способов определить версию Windows — это исследовать свойства исполняемых файлов, таких как explorer.exe
, ntoskrnl.exe
, или kernel32.dll
, которые находятся в папке C:\Windows\System32
. Вы можете искать версии этих файлов, чтобы установить, какая операционная система установлена:
- Windows Vista: версия
6.0.xxxx.xxxxx
(где6000
— выпущена из коробки (RTM),6001
— Service Pack 1,6002
— Service Pack 2). - Windows 7: версия
6.1.xxxx.xxxxx
(например,7600
— RTM,7601
— Service Pack 1). - Windows Server 2008: аналогично версии Vista, с теми же номерами.
Примеры команд в командной строке:
C:\Windows\System32\ntoskrnl.exe
Правый клик на файле → Свойства → Вкладка "Подробности" → Версия.
2. Документ лицензии
Файл лицензии C:\Windows\System32\License.rtf
содержит информацию о версии и редакции Windows. Этот файл присутствует в большинстве версий Windows и может быть открыт с помощью текстового редактора. Он даст информацию о том, используется ли, например, Windows 7 Pro или Windows Vista Home.
3. Чтение реестра
Если вы имеете доступ к файлам реестра операционной системы (например, из другой операционной системы, например, Linux), вы можете извлечь информацию о Windows из реестра. Основная информация хранится по следующему пути:
- Текущая версия:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion
- Информация о редакции: на уровне ключа
HKLM\SYSTEM\CurrentControlSet\Control\ProductOptions
Пример на Linux:
Если у вас есть доступ к системному разделу Windows на Linux, вы можете использовать hivex
для чтения реестра:
hivexget /mnt/tmp/Windows/System32/config/software 'Microsoft\Windows NT\CurrentVersion' | egrep 'BuildLab|ProductName|Version|ProductId'
4. Использование командной строки установочного диска
Если у вас есть установочный диск Windows, вы можете загрузиться с него, открыть командную строку (нажмите Shift + F10) и выполнить несколько команд, чтобы найти необходимую информацию о системе:
wmic logicaldisk get description,deviceid,volumename
wmic datafile where name="C:\\Windows\\System32\\ntoskrnl.exe" get Version /value
5. Программное обеспечение для извлечения ключа продукта
Существует также программное обеспечение, такое как Magical Jelly Bean Keyfinder, которое может помочь в определении версии Windows. После загрузки приложения, вы можете выбрать хранилище Windows и получить информацию о версии и редакции операционной системы.
Заключение
Каждый из методов имеет свои особенности и может быть выбран в зависимости от ситуации и доступных ресурсов. Важно, чтобы вы применяли подходящие инструменты и техники для извлечения необходимой информации из файловой системы. Знание версии и редакции Windows поможет вам в дальнейшей работе по восстановлению компьютера.