Назад | Перейти на главную страницу

Автономная идентификация версии Windows в среде Linux

Я пытаюсь настроить Clonezilla Live iso позволяет удобно делать снимки различных установок Windows (XP, Vista, Win7, Win8). В идеале я хотел бы загрузить машину с компакт-диска, который автоматически определяет версию Windows и создает снимок с именем, содержащим ОС (что-то вроде Windows_XP_2013-06-17).

Есть ли способ программно определить, какая версия Windows установлен на раздел NTFS, смонтированный в среде Linux live?

Ты можешь использовать струны Команда для доступа к файлам реестра, я протестировал на своем компьютере, и она сработала:

strings /media/cuonglm/Windows/Windows/System32/config/SOFTWARE | grep -e '^6.1.*' | head -n 1

Выход:

6.1.7601.17608

Это означает, что моя версия - Windows 7 SP1.

Я думаю, что это более быстрый способ, чем использование некоторых инструментов для управления свойствами PE-файлов или файлов реестра.

Есть несколько не оконных и некомандных решений, которые вы можете использовать для решения своей проблемы. Вот несколько идей, которые я подумал:

Boot.ini

Попробуйте прочитать boot.ini из текстового файла загрузочного раздела Windows (например, C: \ boot.ini). Это (обычно) информация о загрузке по умолчанию, если она не была изменена вручную. Вы можете прочитать текстовый файл и выполнить RegEx, чтобы узнать версию.

Например, в моем boot.ini есть часть «Microsoft Windows XP Professional», которую можно легко проанализировать с помощью любого регулярного выражения.

Проверить структуру файловой системы

Вы можете получить некоторое представление об общей версии Windows, посмотрев на структуру каталогов, которую она использует: Windows XP - семейство использует структуру каталогов C: \ Documents and Settings (зависит от языка), поскольку в других более поздних версиях используются каталоги другого типа.

Это не очень хорошее решение, но это одно из решений.

cmd.exe

В этом случае я не совсем уверен, но думаю, что помню, что в двоичном файле командной строки Windows (cmd.exe) хранится версия. Чтение двоичного файла и его ресурсов может помочь определить правильную версию.

Тем не менее, из всех этих решений я бы посоветовал вам попробовать прочитать boot.ini. Он настраивается пользователем, но очень редко изменяется обычными пользователями.

Вы можете получить доступ к реестру Windows с помощью таких инструментов, как chntpw. Вам понадобятся следующие ключи, расположенные в HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion:

ProductName
Version
VersionNumber
SubVersionNumber

Вы можете создать сценарий, который автоматизирует chntpw и проанализировать ключи реестра для определения версии Windows.

Просмотр информации о версии ntoskrl.exe дает как числовые, так и текстовые результаты

me@host:/mnt$ iconv -cf utf16 Windows/System32/ntoskrnl.exe|strings|grep  6\\.
6.1.7601.18409 (win7sp1_gdr.140303-2144)
6.1.7601.18409

Получите брелок для волшебных желейных бобов. Бесплатная портативная версия работает нормально.

Запустите его и в меню инструментов выберите >> загрузить куст. Затем он показывает все ваши диски, выберите папку Windows соответствующего диска.