Приходилось ли вам устанавливать современные версии Windows? Если да, то вам точно знаком установщик, каждый этап которого прогружается несколько секунд, и который яростно навязывает вам использование аккаунта Microsoft, с каждым обновлением делая использование локального аккаунта всё труднее и труднее.
Но существует альтернативный способ установить Windows — более быстрый, не требующий подключения к интернету и не навязывающий никаких сервисов — ручная установка с использованием CMD.
Если описать кратко, процесс состоит из следующих частей:
Загрузка с установочного носителя
Ручная разметка диска
Применение WIM-образа (WIM — формат файлов, используемый Microsoft для хранения упакованных системных файлов Windows)
Установка загрузчика
Шаманство с реестром
Первая перезагрузка, запуск с жёсткого диска
Запуск процесса «развёртывания» (deploy) системы
Создание пользователя
Ещё немного возни с реестром и две перезагрузки
PROFIT!
Этап 1. Установка системы
Итак, предположим, что вы уже знаете, как запустить установщик Windows. Теперь было бы неплохо открыть командную строку — для этого, конечно, можно долго и нудно ковыряться в средствах восстановления, но есть и метод проще — нажать сочетание клавиш Shift+F10
.
Выглядит это вот так:

Разметка диска
Теперь, пожалуй, стоит разметить диск, ведь нужно же куда-то устанавливать систему. Для этого прекрасно подойдёт встроенная утилита diskpart
, предоставляющая консольный интерфейс для работы с дисками.
Для установки системы вам понадобится два раздела — тот, на котором она будет установлена, и загрузочный раздел EFI. Эти разделы нужно создать, отформатировать (EFI-раздел нужно форматировать в FAT32, а основной — в NTFS) и назначить им буквы, чтобы позже использовать их в процессе установки. Я предпочитаю назначать для основного раздела букву C
, а для EFI — W
. Если вы захотите использовать другие буквы, не забудьте поменять их во всех командах, которые я буду приводить ниже.
Если ваш диск абсолютно пустой (например, если вы ставите систему на ВМ), то вы можете воспользоваться подготовленными мной командами:
select disk 0
convert gpt
create partition efi size=512
format quick fs=fat32
assign letter W
create partition primary
format quick
assign letter C
Здесь сначала выбирается диск с индексом 0 (то есть первый). Далее он конвертируется в формат GPT, а затем на нём создаются, форматируются и получают буквы два раздела — EFI размером 512 мб и основной, занимающий всё оставшееся место.
Применение WIM-образа
Теперь пришло время скопировать на свежесозданный раздел системные файлы Windows. Для этого существует утилита Dism
. Она способна выполнять самые разнообразные операции с образами, однако нам понадобятся лишь две из них — /Get-WimInfo
и /Apply-Image
.
Для начала стоит определиться, какие редакции Windows доступны для установки. Чтобы узнать это, используйте следующую команду:
dism /get-wiminfo /wimfile:D:\sources\install.wim
D:\sources\install.wim
— файл, содержащий все файлы всех доступных редакций системы. Также этот файл может называться install.esd
, поэтому, если команда выдала ошибку о том, что файл не найден, попробуйте заменить расширение .wim
на .esd
.
UPD: диск D:
— установочная флешка. Если у вас возникают ошибки при вводе команды, возможно, система назначила установочной флешке другую букву. Используйте команду diskpart list volume
, чтобы просмотреть список томов.
Результат будет примерно таким:

Каждая редакция внутри WIM-файла имеет уникальный индекс, который в дальнейшем нужно будет передать команде установки. Я буду устанавливать Windows 10 Pro, её индекс - 4
.
Теперь пришло время самого важного и долгого процесса — применения WIM-образа. В терминологии DISM, применение — это копирование содержащихся в образе файлов в указанную папку (обычно в корень диска) с последующей их подготовкой к работе.
Применение WIM-образа осуществляется такой командой:
dism /apply-image /imagefile:D:\sources\install.wim /index:4 /applydir:C:\
Параметр /imagefile
указывает утилите путь к файлу образа, параметр /index
— необходимую редакцию системы, а /applydir
— место, куда должны быть помещены файлы. В нашем случае это корень диска C
.
Окно CMD после ввода этой команды будет выглядеть так:

Необходимо подождать, когда утилита закончит свою работу. После этого можно переходить к установке загрузчика.
Установка загрузчика
Загрузчик устанавливается довольно простой командой:
bcdboot C:\Windows /s W:
Первый параметр задаёт папку, в которой находится система, а параметр /s
— раздел, на который необходимо установить загрузчик. Установка загрузчика — быстрая операция, занимающая всего несколько секунд.
Когда загрузчик установлен, система фактически готова к загрузке с жёсткого диска, но есть ещё один момент...
Немного твиков реестра
Я не думаю, что вы хотели бы после ручного выполнения первого этапа установки увидеть стандартный OOBE, который сразу же предложит вам подключиться к интернету, чтобы окунуть вас в цифровой концлагерь экосистему Microsoft. Если уж ставить руками — то ставить до конца, не так ли?)
Чтобы при загрузке системы с жёсткого диска вместо неповоротливого OOBE вас встретила элегантная консоль, выполните эти две команды:
reg load HKLM\mount_SYSTEM C:\Windows\System32\config\SYSTEM
reg add HKLM\mount_SYSTEM\Setup /v CmdLine /d "cmd.exe" /t REG_SZ /f
Первая загрузит куст реестра SYSTEM
только что распакованной вами с помощью DISM системы, поместив его в локальном реестре по пути HKEY_LOCAL_MACHINE\mount_SYSTEM
(если вы не знали, HKLM
— это сокращение от HKEY_LOCAL_MACHINE
, а весь реестр на самом деле лежит в папке C:\Windows\System32\config
в виде файлов особого формата).
Вторая команда задаст в качестве установщика программу cmd.exe
, то есть командную строку. Если хотите подробнее узнать о том, что происходит, то вот небольшое объяснение:
Первый аргумент —
HKLM\mount_SYSTEM\Setup
указывает команде раздел реестра, с которым ей предстоит работать;/v
(сокр. отvalue
) указывает название значения, которое необходимо добавить или изменить;/d
(сокр. отdata
) указывает данные, которые необходимо поместить в указанное значение реестра;/t
(сокр. отtype
) указывает используемых тип данных (например,REG_SZ
— это строка, аREG_DWORD
— целое число);/f
(сокр. отforce
) подавляет запрос на изменение существующего значения.
После всех проделанных операций необходимо перезагрузиться, для чего можно использовать команду wpeutil reboot
.
Этап 2. Первая перезагрузка
После перезагрузки вы попадёте в особый режим работы Windows — режим установки. В данном режиме запускается лишь одно приложение, указанное в значении CmdLine
раздела реестра HKEY_LOCAL_MACHINE\SYSTEM\Setup
. В нашем случае этим приложением является командная строка.

Развёртывание системы
Для полноценного функционирования систему нужно «развернуть» (deploy). Этим занимается программа C:\Windows\System32\oobe\windeploy.exe
. Поскольку CMD запускается в папке C:\Windows\System32
, для начала развёртывания системы необходимо ввести команду oobe\windeploy
.

После выполнения этой команды под вращающимся кругом появятся надписи, информирующие о текущей операции, проводимой программой.
Создание пользователя
В системе до сих пор нет ни одного пользовательского аккаунта — обычно эту задачу берёт на себя OOBE, но мы ставим систему без него, поэтому и пользователя придётся создать вручную:
net user /add uzver $tr0ng_p@$$
net localgroup Пользователи /add uzver
net localgroup Администраторы /add uzver
Первая команда создаёт пользователя с именем uzver
и назначает ему пароль $tr0ng_p@$$
, вторая и третья добавляют свежесозданного юзера в группы Пользователи и Администраторы. Добавление в группу пользователей необходимо, потому что команда net
по какой-то причине не может сделать этого самостоятельно, а добавление в группу администраторов нужно, чтобы в дальнейшем иметь полный доступ к установленной системе.
Выдирание хоста с мясом
Чтобы окончательно и бесповоротно покончить с любыми проявлениями OOBE, нужно удалить (или переименовать) файл C:\Windows\System32\WWAHost.exe
, являющийся хост-процессом для OOBE и прочих неприятных штук, которые Microsoft так любит пихать пользователям под нос.
Лучше всего переименовать файл, на случай, если когда-нибудь понадобится:
move wwahost.exe wwahost.exe.bak
Уборка за windeploy
Чтобы продолжать дальше, необходимо дождаться, пока windeploy
закончит со своими грязными делишками. Понять, что процесс завершился, поможет исчезновение надписи снизу от кружка загрузки:

Удостовериться, точно ли windeploy завершил свою работу, можно с помощью команды:
tasklist | find "windeploy"
Если эта команда не вывела ни одного процесса — можно продолжать.
Windeploy во время своей работы устанавливает значения реестра, при которых система грузится во второй этап OOBE. Наша задача — изменить это, чтобы запускалась командная строка. Таким образом, система «засчитает» прохождение второго этапа OOBE, но сам OOBE запущен не будет.
Все создаваемые Windeploy значения реестра лежат в HKLM\SYSTEM\Setup
, поэтому можно использовать команду reg query HKLM\SYSTEM\Setup /t REG_DWORD
, чтобы вывести их названия и значения. (/t REG_DWORD
— указатель на тип значений).
Всем значениям, кроме SetupType
, значения которых отличаются от 0, необходимо установить значение 0 следующей командой:
reg add HKLM\System\Setup /v <значение> /d 0 /t REG_DWORD /f
После этого необходимо вновь настроить систему на запуск командной строки:
reg add HKLM\System\Setup /v CmdLine /d "cmd.exe"
Выполнение этих действий показано на скриншоте.

После внесения изменений в реестр систему необходимо перезагрузить командой shutdown -r -t 0
.
Этап 3. Вторая перезагрузка
Вы вновь попадёте в командную строку, в которой нужно ввести команду shutdown -r -t 0
. Произойдёт перезагрузка, и система загрузится уже полноценно, с графическим интерфейсом входа в аккаунт.


Скриншоты установленной системы



P.S.
Этот способ может показаться сложным, но, на самом деле, если сравнить его с установкой через графический интерфейс, окажется, что он требует выполнения даже меньшего количества действий и времени, чем «нормальная» установка. Также этот способ можно легко автоматизировать при помощи, например, bat-файлов, не прибегая к изучению сложного синтаксиса файла unattend.xml
.
Комментарии (33)
hitlocker
27.06.2025 15:13С одной стороны - очень интересно. Спасибо.
С другой... Ох уже эти гайды для "знающих людей". "Так вот диск, режем его на EFI и C". Через два абзаца "D:\sources.....". Что за диск D? Это третий раздел? Это другой диск? Флешка? А как узнать букву если я болтаюсь в CMD с пустым размеченным диском.... Ех
Но еще раз, все равно любопытно. Спаибо)!
Busla
27.06.2025 15:13А как узнать букву если я болтаюсь в CMD с пустым размеченным диском
в diskpart набрать
list volume
там будут все флэшки, CD/DVD
ryzhpolsos Автор
27.06.2025 15:13Спасибо, учту, что нужно делать гайды подробнее.
А как узнать букву если я болтаюсь в CMD с пустым размеченным диском
Если не ошибаюсь, то установщик всегда флешку в D: монтирует, но если вдруг нет, можно воспользоваться командой, чтобы букву диска, на котором лежит нужный файл:
for %i in (D E F G H I J K L M N O P Q R S T U V) do @(if exist "%i:\sources\install.wim" echo.%i)
hurtavy
27.06.2025 15:13Зачем вам раздел EFI аж на 512, если сама Микрософт рекомендует 100?
ryzhpolsos Автор
27.06.2025 15:13Здесь написано, что
The minimum size of this partition is 200 MB, and must be formatted using the FAT32 file format.
ExoticHadron
27.06.2025 15:13У микрософта тут полная путаница часто. Правда не с EFI, а с MSR, когда под WinRE.wim не остаётся места.
Но тут https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-7/dd744301(v=ws.10) те самые 100 и 128.
Здесь детальнее всего описано:
https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-8.1-and-8/hh825686(v=win.10)?redirectedfrom=MSDN
ryzhpolsos Автор
27.06.2025 15:13Но тут https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-7/dd744301(v=ws.10) те самые 100 и 128.
Там в самом начале статьи написано, что её содержимое применяется к Windows 7.
avmcoder
27.06.2025 15:13Ну на ноутбуках Lenovo Thinkbook например, обновление BIOS разворачивается в раздел efi, и если там не хватает места обновление установить невозможно.
alegz81
27.06.2025 15:13При разбивке диска под uefi нужен раздел типа msr на 16 мб. Так же нужно создать раздел для recovery (WinRE), и соответственно установить и настроить его.
LexD1
27.06.2025 15:13Интересно. Но. Ставил в GUI (GPT), автоматически создалось три раздела метров по 100...200 каждый, помимо C:\.
Насчёт присвоения буквы EFI. Это для удобства прописывания пути загрузчика? Потом буква (W:\) удаляется?
ryzhpolsos Автор
27.06.2025 15:13Это для удобства прописывания пути загрузчика?
Да
Потом буква (W:) удаляется?
Всё происходящее до первой перезагрузки выполняется не в устанавливаемой ОС, а в WinPE — загруженном в память минимальном образе системы (что-то вроде LiveCD в линуксах). Поэтому да, присваивание буквы временное.
ExoticHadron
27.06.2025 15:13Очень классная статья. Не знал, что так можно. Спасибо.
Насчёт разметки диска только кажется, что правильнее было бы разметить так:
Чтобы были разделы с WinRE и install.wim:
DISKPART> list part
Partition ### Type Size Offset
------------- ---------------- ------- -------
Partition 1 Recovery 450 MB 1024 KB
Partition 2 System 100 MB 451 MB
Partition 3 Reserved 128 MB 551 MB
Partition 4 Primary 144 GB 679 MB
Partition 5 Recovery 5168 MB 144 GB
erley
27.06.2025 15:13Забавно, у меня кокой-то когнитивный диссонанс - с одной стороны винда, которой практически не пользуюсь уже лет двадцать, с другой - нормальный контроль над процессом установки, что-то родное такое...
Не знал что так можно ставить, спасибо что просветили :)
Однозначно в закладки!dartraiden
27.06.2025 15:13нормальный контроль над процессом установки
Больше напоминает восход солнца вручную.
Самое главное, что это не нужно, т.к. уже больше 20 лет поддерживается установка с файлом ответов, который позволяет и OOBE пропустить, и не возиться с вот этими действиями, которые установщик выполнит явно быстрее человека.
Hopenolis
27.06.2025 15:13Просто положите в установочную флешку файл с ответами, и будет вам быстрая установка без вопросов, без интернета, без учетки микрософта, на неподдерживаемое железо, и любые твики после установки - реестра, скрипты, что угодно.
mgnskydiver
27.06.2025 15:13Здесь сначала выбирается диск с индексом 0 (то есть первый)
Вот с этим очень осторожно на компьютерах с несколькими дисками. Не всегда нужный диск - 0, особенно если вместе с SSD, подключены еще SATA-диски. Я поэтому предпочитаю ручную разметку, хотя на новых рабочих можно и автоматическую.
Mojiberus
27.06.2025 15:13SSD и SATA это все же разные вещи. Первое это тип носителя, второе его интерфейс.
dyadyaSerezha
27.06.2025 15:13В Виндах должна быть удалённая установка по сети для админов в больших фирмах. Как это соотносится с данным способом?
HardWrMan
27.06.2025 15:13У виндов в принципе система сценариев установки была изначально. Хочешь - ничего туда не пишешь и каждый чих будешь вводить, менять, тыкать. А хочешь - прописал все, даже ключ активации и у тебя будет только одна кнопка "Установить" и прогрессбар и пара ребутов. Я себе свои сценарии писал и для XP и для 7. Это всё как раз для корпоратов и было сделано, там в сценарии даже ввод в AD можно прописать, главное чтобы драйвера на сеть встали и в сети был этот AD.
jackgrebe
27.06.2025 15:13https://www.iventoy.com/en/isolist.html - обещает удаленную установку много чего через PXE.
файлы ответов описаны здесь https://www.iventoy.com/en/doc_autoinstall.html
HardWrMan
27.06.2025 15:13У корпоратов среди AD тоже всегда было решение сетевой холодной установки на основе PXE. Windows Server имея на борту DHCP, DNS, SMB шары при правильной настройке позволял отдать по запросу PXE нужный лодырь, который подключит установочную шару и запустит, собственно, установку. Я с этим игрался ещё в 2001, когда изучал Windows 2000 Server.
Kahelman
27.06.2025 15:13Мыши плакали, кололись но продолжали есть кактус …. Статья интересная, что только люди не придумают чтобы линукс не устанавливать. И потом говорят что винда дружелюбная система :)
MaTocoB
27.06.2025 15:13Что люди только ни придумают, лишь бы доки не читать. Процесс установки по файлу ответов появился ещё в Windows 95, только мужики об этом не знали, потому что пользовались ворованными дистрибутивами.
V1tol
Вот это круто, как будто ArchWiki прочитал. Такими темпами можно портировать Calamares и будет графический установщик нормального человека xD
ryzhpolsos Автор
Планирую когда-нибудь заняться графическим установщиком на основе описанного в статье подхода
ArtyomOchkin
Последние пол месяца тоже пробую сделать похожий проект с GUI, автоматически создающий пользователя, настраивающий подходящий WiFi, скачивающий Хром и запускающий активацию с massgrave, а под конец - устанавливающий апдецсоы с помощью pswubdowsupdate и перезагружающий систему. Пока в альфа-версии, работает, но думаю над GUI и дополнительными твиками.
Пробовал на Windows 10 IoT Enterprise - почти всё настроилось, как и делал, единственное - спасибо за дополнение про отключение oobe, вот это действительно стоит добавить и переименовать файл, а далее запустить свой скрипт-замену oobe :).
ryzhpolsos Автор
Репозиторий есть?
Насчёт замены OOBE: обратите внимание, что во время работы заменяющего скрипта, запущенного через параметр CmdLine, нельзя допускать завершения его процесса до перезагрузки системы, потому что в противном случае винда может свалиться либо в OOBE, либо в «ой-ай, у нас всё сломалось, перезапустите установщик»