У компонента Microsoft-Windows-Shell-Setup имеется дочерний компонент FirstLogonCommands, который можно использовать для выполнения команд при первом входе пользователя в систему. Если провести аналогию с автоматической установкой Windows XP, FirstLogonCommands пришли на смену командам, выполнявшимся из раздела [GuiRunOnce] файла ответов. С помощью компонента FirstLogonCommands задается выполнение синхронных команд. Синхронные команды выполняются последовательно, причем следующая команда начинает выполняться только после завершения предыдущей.
Важно! В Windows 10 синхронные команды выполняются асинхронно - все они запускаются одновременно (документация), т.е. работают так же как Logon Commands | AsyncrounousCommand.
Это поведение можно переопределить записью в реестр из файла ответов на более раннем этапе:
<RunSynchronousCommand wcm:action="add">
<Description>disable async RunOnce</Description>
<Order>4</Order>
<Path>reg add HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer /v AsyncRunOnce /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
См. также пару связанных твиков в этой статье.
На этой странице
Описание процесса
Команды компонента FirstLogonCommands конфигурируются для прохода 7 oobeSystem. Они выполняются в контексте пользователя, т. е. для их выполнения необходимо, чтобы в систему был выполнен вход. В этом заключается одно из отличий от выполнения команд способом SetupComplete.cmd, который выполняется до входа пользователя в систему от имени системной учетной записи LocalSystem. Из этого следует, что компонент FirstLogonCommands можно использовать не только для установки приложений и запуска скриптов, но и для импорта пользовательских параметров реестра, хотя они будут применены только к той учетной записи, от имени которой выполняются.
Выполнение команд начинается сразу после входа пользователя в систему, однако под "входом" в данном случае нужно понимать аутентификацию, т. е. проверку учетных данных. Как известно, при первом входе пользователя в систему сначала создается его профиль, а затем загружается пользовательская среда - рабочий стол. Параллельно с этим процессом и выполняются команды. На практике это означает, что если команды выполнятся быстро, вы можете не увидеть прогресса их исполнения. А в том случае, когда устанавливается много приложений, ход их установки можно будет увидеть после загрузки рабочего стола (если, конечно, их диалоговые окна не полностью скрыты с помощью ключей тихой установки).
Условия, необходимые для успешного выполнения команд
Для того чтобы команды выполнялись без сучка и задоринки, необходимо соблюдение двух условий.
Во-первых, нужно настроить автоматический вход в систему для какой-либо учетной записи. Вы можете использовать встроенную учетную запись Администратор, либо создать другие учетные записи, следуя статье Создание учетных записей и настройка автоматического входа в систему.
Во-вторых, эта учетная запись должна входить в группу Администраторы, поскольку лишь в этом случае происходит автоматическое повышение прав, позволяющее избежать запроса UAC (контроля учетных записей). Конечно, эти команды могут выполняться и при входе в систему обычного пользователя, но если прав окажется недостаточно, полностью автоматического выполнения команд не произойдет - придется иметь дело с дополнительными диалоговыми окнами.
Добавление команд
Запустите WSIM и откройте файл ответов. Из меню Вставка выберите раздел Синхронная команда, а в нем - пункт Проход 7 oobeSystem.
В открывшемся окне введите команду и установите порядковый номер ее выполнения. Порядковый номер может быть от 1 до 500. Номера необязательно должны идти подряд. Зачастую удобно задавать порядковые номера через 5 или 10, чтобы потом между ними было проще вставлять другие команды, если понадобится.
cmd /c %DiskRoot%\Install\firefox_setup.exe -ms
Эта команда осуществляет автоматическую установку браузера Firefox с USB- или установочного DVD-диска. В данном случае используется переменная %DiskRoot%, подробнее о которой рассказывается в статье Создание переменной среды, соответствующей букве установочного диска.
В диспетчере системных образов это выглядит примерно так:
Как видите, при этом был автоматически добавлен родительский компонент синхронной команды - Microsoft-Windows-Shell-Setup | FirstLogonCommands. Конечно, можно было добавить эти компоненты из панели Образ Windows, а затем редактировать параметры компонента SynchronousCommand.
Теперь добавьте еще одну команду и установите порядковый номер ее выполнения.
cmd /c %DiskRoot%\Install\install.cmd
Эта команда осуществляет запуск файла install.cmd, содержащего любые необходимые вам команды. Другими словами, можно ограничиться запуском CMD-файла, в который внесены команды для установки приложений.
Остальные синхронные команды добавляются к компоненту FirstLogonCommands точно таким же образом.
Пример файла ответов
Фрагмент файла ответов с примером команд, добавление которых описано в этой статье, вы найдете на странице Примеры. В этом фрагменте не приводятся параметры, отвечающие за создание учетных записей и настройку автоматического входа в систему, что является необходимым условием для успешного выполнения команд.