Windows 10 IoT Enterprise — секреты настройки для Embedded-сценариев +10


Предисловие


Наверно Вы видели банкоматы, информационные киоски, рекламные панели, на которых отображается ошибка или уведомление системы. Если Вы не видели подобные общественные устройства «живьем», то Вы легко сможете найти подобные фотографии в интернете если поищете картинки по словам «банкомат ошибка windows». А однажды уведомление системы появилось в прямом эфире во время прогноза погоды, фото можно найти по словам «уведомление windows в прямом эфире». Ради интереса еще можете поискать «самый большой синий экран».

О чем же все это говорит?


— Вы любите кошек?
— Нет
— Вы просто не умеете их готовить!

Для специализированных устройств Майкрософт предлагает использовать Windows 10 IoT Enterprise, которая отличается от Windows 10 Enterprise только отсутствием универсальных приложений. Соответственно, с технической точки зрения Win 10 IoT Enterprise является настольной операционной системой, которая подразумевает взаимодействие с пользователем. Но на специализированных устройствах взаимодействия с пользователем не должно быть т.к. порой даже нет пользователя в привычном его понимании, особенно это касается рекламных панелей.

При подготовке специализированного устройства некоторые технические специалисты забывают о вышеуказанном нюансе совсем или забывают отключить какую-либо категорию уведомлений. Данная статья написана чтобы напомнить о некоторых особенностях настройки Windows для специализированных решений. В данной статье мы рассмотрим подготовку решения для одной бизнес-задачи.

Все настройки будут описаны для Win 10 IoT Enterprise 2016 LTSB, демо-версию которой можно скачать здесь.

Какую бизнес-задачу решаем?


Как-то раз я приехал в пункт самовывоза одного онлайн магазина. В данном магазине продавцы только выдавали товар или давали его посмотреть, а заказ нужно было оформлять только на сайте магазина. Чтобы можно было оформить заказ прямо в пункте самовывоза, в зале самовывоза было установлено множество ПК. Сами ПК были спрятаны, был только монитор и мышка, на экране была открыта специализированная база магазина, в которой можно было найти товар и оформить заказ и экранная клавиатура.

Рассмотрим подготовку аналогичного решения, которое будет предназначено для навигации по сайту www.quarta-embedded.ru. Предполагаемые условия использования – без источника бесперебойного питания и с минимальным техническим обслуживанием.

Подготовка решения


Шаг 1 – подготовка устройства


В качестве устройства был взят обычный ПК, с жестким диском 120 ГБ, оперативной памятью 4 ГБ. Режим загрузки ОС – Legacy.

Т.к. у нас устройство будет использоваться без источника бесперебойного питания нужно обязательно предусмотреть внеплановое отключение питания. Т.е. устройство должно само включаться при появлении питания, для этого необходимо соответствующим образом настроить BIOS устройства. Необходимые пункты в BIOS’е можно найти по интуитивно-понятным названиям, у меня это «Advanced > Power-On Options > After Power Loss», выставляем «On». Но если Вы хотите, чтобы при включении устройство оставалось выключенным, когда его выключили намеренно, то установите «Previous State».

Шаг 2 – установка Win 10 IoT


Установка Win 10 IoT Enterprise ничем не отличается от установки Win 10 Enterprise, поэтому не вижу особого смысла описывать установку. Я буду устанавливать «Win 10 IoT Enterprise 2016 LTSB x32» без подключения к интернету, чтобы в систему не «прилетело» ничего лишнего. При первой загрузке создал пользователя Admin.

Шаг 3 – сохранение образа системы


Что, не ждали такого поворота? Только установили систему и сразу сохраняем образ. При подготовке решения желательно периодически сохранять образ системы на тот случай если вдруг что-то пойдет не так. Тогда не нужно будет делать настройку системы сначала.

Когда мы говорим о создании образа мы затрагиваем вопрос тиражирования, но он настолько широкий, что ему можно посвятить отдельную статью и не одну, поэтому в данной статье я не буду подробно описывать данный вопрос.

Для создания технологического (промежуточного) образа я запечатаю систему командой

%SYSTEMROOT%\System32\Sysprep\sysprep.exe /audit /generalize /shutdown /quiet

и создам wim образ системного тома с помощью утилиты DISM.

Важно — если Вы пойдете тем же путем, то после разворачивания такого образа не забудьте скопировать содержимое каталога «Windows\System32\Recovery» на первый том в папку «Recovery\WindowsRE». И сделать это нужно до загрузки ОС т.к. после загрузки ОС каталог «Windows\System32\Recovery» уже будет пустым. У меня это реализовано следующим образом:

if exist W:\Windows\System32\Recovery\*.* (
xcopy W:\Windows\System32\Recovery\*.* S:\Recovery\WindowsRE\ /h /k /y
attrib +s +h +i S:\Recovery
attrib +s +h +i S:\Recovery\*.* /s /d
)

Обратите внимание, что после запечатывания система будет автоматически входить во встроенную учетную запись администратора. И теперь автоматически будет запускаться sysprep. Чтобы это окно мне не мешало, я добавил в shell:startup скрипт с одной единственной командой

taskkill /im sysprep.exe

Чтобы не забыть удалить скрипт, я сразу сделаю скрипт для запечатывания, в котором будет прописана команда для очистки автозапуска.

del "%systemdrive%\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\*.*" /q

Мне ведь все равно нужно будет запечатывать систему в oobe режиме.
Все технологические файлы я буду размещать в папке C:\Sysprep

Шаг 4 – установка драйверов


Как ни странно, но некоторые жалуются, что после установки Win 10 «драйверы не установились сами». Спешу Вас огорчить, само ничего не бывает, драйверы необходимо устанавливать. В системе идет некий набор стандартных драйверов, но вряд ли со стандартным набором драйверов можно будет использовать все возможности оборудования. Лучше всего если Вы сами установите наиболее подходящие драйверы для Вашего устройства. Windows может автоматически загружать драйверы из специального хранилища Майкрософта и устанавливать их, но не обязательно что там будут все необходимые драйверы или что это будут подходящие драйверы. Драйвер, который система установит автоматически может привести к сбою системы. Что же делать если Вы оказались в ситуации, когда нужно предотвратить такую автоматическую установку драйвера? Есть 2 варианта:

1. Отключить службу обновления
net stop wuauserv – команда остановки службы
sc config wuauserv start=disabled – изменить режим запуска службы на «Отключено»
Но в таком случае система не будет получать какие-либо обновления вообще

2. Отключить установку конкретного драйвера в групповых политиках

Для этого нужно:

Открыть редактор групповых политик командой gpedit

Перейти в раздел «Конфигурация компьютера\Административные шаблоны\Система\Установка устройства\Ограничение на установку устройств». Англоязычный вариант ветки «Computer Configuration\Administrative Templates\System\Device Installation\Device Installation Restrictions»
В данном разделе Вы сможете запретить установку драйвера по конкретному классу или ID оборудования. Для предотвращения установки других драйверов НЕ нужно устанавливать флажок «Также применить для соответствующих устройств, которые уже были установлены» «Also apply to matching devices that are already installed», иначе Вы сделаете использование устройства невозможным.

Т.к. у меня экспериментальное решение и драйверы особого значения не имеют, я не буду целенаправленно устанавливать драйверы. После подключения к интернету система нашла драйвер на некоторые устройства.

Шаг 5 – русификация системы


Думаю, что это действие весьма простое и его не нужно подробно описывать. Скажу, что для корректного отображения кириллицы я указал русский язык для программ, которые не поддерживают Юникод. Указал расположение, хотя в моем случае это не нужно. И попутно можно изменить часовой пояс т.к. по умолчанию UTC -8. Установил русскоязычный языковой пакет, когда я устанавливал языковой пакет через интернет, мне показалось это долгим, поэтому я установил его с помощью предварительно скачанного пакета «Microsoft-Windows-Client-Language-Pack_x86_ru-ru.cab», установил командой

DISM /Online /Add-Package /PackagePath:"%~dp0Microsoft-Windows-Client-Language-Pack_x%PROCESSOR_ARCHITECTURE:~-2%_ru-ru.cab"

После установки переключил основной язык системы на русский и включил опцию копирования языковых параметров для экрана приветствия и новых учетных записей.
Вот и все, русский язык добавлен, пожалуй, можно сохранить образ системы…

Шаг 6 – настройка питания


Наше устройство не должно засыпать и отключать монитор, поэтому нужно настроить питание соответствующим образом. Питание можно настроить с помощью скрипта:

powercfg -change -monitor-timeout-ac 0 
powercfg -change -monitor-timeout-dc 0 
powercfg -change -disk-timeout-ac 0 
powercfg -change -disk-timeout-dc 0 
powercfg -change -standby-timeout-ac 0 
powercfg -change -standby-timeout-dc 0 
powercfg -change -hibernate-timeout-ac 0 
powercfg -change -hibernate-timeout-dc 0
pause

Шаг 7 – отключение аварийного режима загрузки


Важный момент – если у нашего устройства будет 2-3 раза подряд некорректное завершение работы, то система загрузится в режим восстановления, а этого допускать нельзя. Поэтому отключаем этот режим загрузки. Это можно сделать с помощью команды

bcdedit /set {current} bootstatuspolicy IgnoreAllFailures

Обратите внимание, что данная настройка прописывается в bcd хранилище, которое находится на разделе восстановления. Я не сохраняю раздел восстановления при сохранении образа системы, следовательно после разворачивания системы данная настройка будет в исходном состоянии т.к. будет новое bcd хранилище. Чтобы не забыть про данную настройку я добавлю ее в скрипт запечатывания в oobe режиме.

Шаг 8 – отключение сообщений об ошибках и всплывающих уведомлений


Чтобы система не выдавала сообщения об ошибках, запрос об отправке отчетов об ошибках, сообщения о проблемах с оборудованием, все это нужно отключить. Службу политики диагностики можно настроить в групповых политиках:

Конфигурация компьютера\Административные шаблоны\Система\Диагностика
Диагностика: настройка уровня выполнения сценария — Включить «Только обнаружение и диагностика»

Но мне проще все настроить с помощью одного reg файла.

Windows Registry Editor Version 5.00

;Подавление отображения ошибок системы
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows]
;"ErrorMode"=dword:00000000	 ;Отображаются все сообщения
;"ErrorMode"=dword:00000001	 ;Подавлять только сообщения об ошибках системы. Например, о нехватке виртуальной памяти
"ErrorMode"=dword:00000002	 ;Подавлять все сообщения об ошибках. Например, об отсутствии dll

;Отключение отправки отчетов об ошибках
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting]
;"Disabled"=dword:00000000		;Отправка отчетов включена
"Disabled"=dword:00000001		;Отправка отчетов отключена

;Настройка уровня выполнения сценария службы политики диагностики
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WDI]
;"ScenarioExecutionEnabled"=dword:00000000	;Выключить возможность изменения уровня выполнения сценария
"ScenarioExecutionEnabled"=dword:00000001	;Включить возможность изменения уровня выполнения сценария
"EnabledScenarioExecutionLevel"=dword:00000001	;Только обнаружение и диагностика
;"EnabledScenarioExecutionLevel"=dword:00000002	;Обнаружение, диагностика и решение проблем

Всплывающие уведомления можно настроить в групповых политиках «Конфигурация пользователя\Административные шаблоны\Меню «Пуск» и панель задач\Уведомления». Но мне проще включить режим «Не беспокоить», его можно включить в графическом интерфейсе, в центре уведомлений и в реестре. Т.к. эта настройка относится к конкретному пользователю, то и выполнять его нужно под целевым пользователем. Поэтому создаем пользователя, под которым и будет выполняться приложение для общественного использования. Пока этот пользователь будет в группе администраторы, для удобства настройки. Чтобы не было проблем с названием группы русская/английская, то получу название группы по SID’у.

net user User /add
wmic useraccount where "Name='User'" set PasswordExpires=False
for /f "tokens=2 delims==" %%i in ('wmic group where "SID='S-1-5-32-544'" get Name /value^|find "Name"') do set GroupName=%%i
net localgroup %GroupName% User /add
pause

И включаем режим не беспокоить.

Windows Registry Editor Version 5.00

;Включить режим "Не беспокоить"
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Notifications\Settings]
"NOC_GLOBAL_SETTING_TOASTS_ENABLED"=dword:00000000		;Режим включен
;"NOC_GLOBAL_SETTING_TOASTS_ENABLED"=dword:00000001	;Режим отключен

Чтобы не забыть исключить пользователя из группы администраторы, добавлю команду на исключение в скрипт запечатывания.

for /f "tokens=2 delims==" %%i in ('wmic group where "SID='S-1-5-32-544'" get Name /value^|find "Name"') do set GroupName=%%i
net localgroup %GroupName% User /delete

Шаг 9 – настройка обновлений системы


Не помешает установить все актуальные обновления на момент подготовки системы. Настроить обновления Вы можете исходя из специфики работы Вашего устройства. Можно отключить установку всех обновлений или обновлений драйверов, как это сделать мы рассмотрели в шаге 4. А можно отключить установку обновлений системы и оставить обновление драйверов.

Windows Registry Editor Version 5.00

;Отключить установку обновлений. При этом драйверы будут обновляться
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU]
"NoAutoUpdate"=dword:00000001	;Установка отключена
;"NoAutoUpdate"=dword:00000000	;Установка включена

Но также возможна ситуация, когда нужно устанавливать обновления системы, но какое-то конкретное обновление выводит систему из строя. В этой ситуации можно запретить установку конкретного обновления. Это можно сделать с помощью утилиты wushowhide.diagcab, которую можно найти здесь.

В групповых политиках Вы можете найти множество детализированных настроек по установке обновлений. «Конфигурация компьютера\Административные шаблоны\Компоненты Windows\Центр обновления Windows»

Т.к. мне обновления не нужны я их отключу полностью:

net stop wuauserv
sc config wuauserv start=disabled
pause

Здесь я в очередной раз сохраню образ системы.

Шаг 10 – настройка запуска приложения


Навигация по сайту quarta-embedded.ru будет в IE, чтобы убрать доступ к адресной строке и настройкам можно включить полноэкранный режим в групповых политиках. «Конфигурация пользователя > Административные шаблоны > Компоненты Windows > Internet Explorer > Включение полноэкранного режима». И нужно запретить закрытие IE «Конфигурация пользователя > Административные шаблоны > Компоненты Windows > Internet Explorer > Меню браузера > Меню «Файл»: отключить закрытие окон браузера и проводника».
Для запуска приложения вместо оболочки системы будем использовать специальное средство запуска приложений – ShellLauncher. С его помощью можно:

1. Назначать запуск конкретного приложения для конкретного пользователя или группы пользователей

2. Контролировать работу запущенного приложения, при закрытии запущенного приложения можно:

  • a. Перезапустить приложение
  • b. Перезагрузить систему
  • c. Выключить систему
  • d. Не предпринимать никаких действий

Сначала нужно добавить ShellLauncher как компонент, это можно сделать в графическом интерфейсе «Панель управления > Программы > Включение и отключение компонентов Window», раздел «Блокировка устройства». Настроить запуск программ можно в ветке реестра «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Embedded\Shell Launcher». настройка запуска программ производится по SID’ам пользователей, SID’ы можно узнать с помощью утилиты whoami. Для включения ShellLauncher’а нужно просто заменить в реестре запуск стандартной оболочки на запуск ShellLauncher’а. И еще маленький нюанс, ShellLauncher не влияет на размеры и положение окна запущенной программы, а IE хотелось бы запустить развернутым на весь экран. Поэтому настраиваем режим запуска IE, опять же под пользователем User, заодно запрещаем вызов контекстного меню IE, чтобы пользователь ничего не испортил.

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main]
"FullScreen"="yes"
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Restrictions]
"NoBrowserContextMenu"=dword:00000001

Теперь настраиваем ShellLauncher, опять же мне все удобней делать с помощью консоли…

@echo off
chcp 1251
echo Добавляем ShellLouncher в систему
DISM /online /Enable-Feature /all /FeatureName:Client-EmbeddedShellLauncher
echo.
echo Получаем SID пользователя User
for /f "tokens=2 delims==" %%i in ('wmic useraccount where "Name='User'" get SID /value^|find "SID"') do set SID=%%i
echo.
echo Настройка запуска iexplore.exe для пользователя User
reg add "HKLM\SOFTWARE\Microsoft\Windows Embedded\Shell Launcher\%SID%" /v Shell /t REG_SZ /d "C:\Program Files\Internet Explorer\iexplore.exe www.quarta-embedded.ru" /f
echo.
echo Настройка действия при закрытии IE
reg add "HKLM\SOFTWARE\Microsoft\Windows Embedded\Shell Launcher\%SID%" /v DefaultReturnCodeAction /t REG_DWORD /d 0 /f
echo.
echo Настройка запуска оболочки для группы администраторы
reg add "HKLM\SOFTWARE\Microsoft\Windows Embedded\Shell Launcher\S-1-5-32-544" /v Shell /t REG_SZ /d "explorer.exe" /f
echo.
echo Настройка действия при закрытии приложения для группы администраторы
reg add "HKLM\SOFTWARE\Microsoft\Windows Embedded\Shell Launcher\S-1-5-32-544" /v DefaultReturnCodeAction /t REG_DWORD /d 3 /f
pause

И, в качестве примера, можно назначить запускаемую оболочку по умолчанию, когда пользователю не назначено никаких приложений.

Windows Registry Editor Version 5.00

;Если приложение по умолчанию не указывать, то будет запущен cmd.exe
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Embedded\Shell Launcher]
"Shell"="explorer.exe"

;Нижеуказанный параметр определяет действие при завершении работы приложения
;"DefaultReturnCodeAction"=dword:00000000	;Перезапуск приложения
;"DefaultReturnCodeAction"=dword:00000001	;Перезагрузка
;"DefaultReturnCodeAction"=dword:00000002	;Выключение
"DefaultReturnCodeAction"=dword:00000003	;Действий не требуется

И включаем Shell Launcher

Windows Registry Editor Version 5.00

;Запустить ShellLouncher вместо стандартной оболочки
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
"Shell"="eShell.exe"	;Включить Shell Launcher
;"Shell"="explorer.exe"	;Выключить Shell Launcher

Шаг 11 – настройка отображения загрузки системы


В предыдущих версиях Windows можно было установить свои логотипы, которые отображались бы при загрузке системы, сейчас есть только две опции вкл. и выкл. Отключить процесс отображения загрузки можно в bcd хранилище, эти команды я выполню сразу и добавлю в скрипт запечатывания.

echo Отключение отображения логотипа Windows при загрузке. Для включения необходимо вместо true необходимо указать false
bcdedit /set {globalsettings} custom:16000067 true

echo Отключение анимации в виде шариков при загрузке Windows. Для включения необходимо указать false
bcdedit /set {globalsettings} nobootuxprogress true

Также можно скрыть процесс входа пользователя в систему.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Embedded\EmbeddedLogon]
;"HideAutoLogonUI"=dword:00000000	;Отображение включено
"HideAutoLogonUI"=dword:00000001	;Отображение выключено

Теперь включаем автоматический вход пользователя User, это можно сделать с помощью команды netplwiz. Перезагружаемся и смотрим что получилось, отображения хода загрузки ОС нет, отображения входа пользователя в систему нет. Только, непосредственно перед входом в систему на несколько секунд появляется значок Win и анимация в виде шариков, но это потому, что ОС в режиме аудита, после запечатывания в режиме oobe этого не будет. Автоматически запустился IE с адресом www.quarta-embedded.ru, чуть позже появилась вкладка microsoft.com, ну ничего, нужно будет добавить в файл ответов запечатывания команду на изменение настроек в реестре

reg add HKLM\Software\Microsoft\Internet Explorer\Main" /v "DisableFirstRunCustomize" /t REG_DWORD /d 1

Вот здесь я опять сделаю образ системы.

Шаг 12 – установка и удаление ключа Windows


Перед установкой ключа нужно отключить ПК от интернета, чтобы система не активировалась. Можно добавить ключ и сразу же его можно удалить, чтобы никто не смог его вытащить. При этом система все равно сможет активироваться.

slmgr /ipk XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
slmgr /cpky

Шаг 13 – запечатываем систему


Чтобы система не задавала вопросов при первой загрузке после запечатывания в oobe режиме, я использую файл ответов, предварительно подготовленный в утилите «Windows System Image Manager». Запускаю скрипт для запечатывания, ниже содержание скрипта и файла ответов.

Скрипт для запечатывания:

del "%systemdrive%\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\*.*" /q

for /f "tokens=2 delims==" %%i in ('wmic group where "SID='S-1-5-32-544'" get Name /value^|find "Name"') do set GroupName=%%i
net localgroup %GroupName% User /delete

bcdedit /set {current} bootstatuspolicy IgnoreAllFailures
bcdedit /set {globalsettings} custom:16000067 true
bcdedit /set {globalsettings} nobootuxprogress true

pushd "%~dp0"
%SYSTEMROOT%\System32\Sysprep\sysprep.exe /oobe /generalize /shutdown /quiet /unattend:Unattend.xml

Unattend.xml:

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <settings pass="specialize">
        <component name="Microsoft-Windows-Deployment" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <RunSynchronous>
                <RunSynchronousCommand wcm:action="add">
                    <Path>reg add HKLM\Software\Microsoft\Windows\CurrentVersion\Setup\OOBE /v SetupDisplayedProductKey /t REG_DWORD /d 1 /f</Path>
                    <Order>1</Order>
                    <Description>Dont show key page</Description>
                </RunSynchronousCommand>
                <RunSynchronousCommand wcm:action="add">
                    <Path>reg add HKLM\Software\Microsoft\Windows\CurrentVersion\Setup\OOBE /v UnattendCreatedUser /t REG_DWORD /d 1 /f</Path>
                    <Order>2</Order>
                    <Description>Dont make account</Description>
                </RunSynchronousCommand>
                <RunSynchronousCommand wcm:action="add">
                    <Path>reg add "HKLM\Software\Microsoft\Internet Explorer\Main" /v "DisableFirstRunCustomize" /t REG_DWORD /d 1 /f</Path>
                    <Order>3</Order>
                    <Description>Disable First Run Customize</Description>
                </RunSynchronousCommand>
                <RunSynchronousCommand wcm:action="add">
                    <Path>cmd.exe /c rd %systemdrive%\Sysprep /s /q</Path>
                    <Order>4</Order>
                    <Description>Del Folder</Description>
                </RunSynchronousCommand>
            </RunSynchronous>
        </component>
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <AutoLogon>
                <Enabled>true</Enabled>
                <Username>User</Username>
            </AutoLogon>
        </component>
    </settings>
    <settings pass="oobeSystem">
        <component name="Microsoft-Windows-International-Core" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <InputLocale>en-US; ru-RU</InputLocale>
            <SystemLocale>ru-RU</SystemLocale>
            <UILanguage>ru-RU</UILanguage>
            <UILanguageFallback></UILanguageFallback>
            <UserLocale>ru-RU</UserLocale>
        </component>
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <OOBE>
                <HideEULAPage>true</HideEULAPage>
                <HideLocalAccountScreen>true</HideLocalAccountScreen>
                <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
                <HideOnlineAccountScreens>true</HideOnlineAccountScreens>
                <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
                <ProtectYourPC>1</ProtectYourPC>
            </OOBE>
        </component>
    </settings>
    <cpi:offlineImage cpi:source="" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>

Итог


Что же получилось в итоге… Система загрузилась сама без каких-либо вопросов, запустился IE с нужной страничкой. Если учесть, что физического доступа к ПК не будет, а из средств ввода будет доступна только мышка, то вроде ничего сломать нельзя. Заходим в учетную запись администратора и видим, что папка Sysprep удалена. Система готова…




К сожалению, не доступен сервер mySQL