Команда RunOnce, выполненная из SetupComplete.cmd после SysPrep, не работает, в то время как она отлично работает из Windows

ОС: Windows 7 Embedded 64-bit (Используемый шаблон: Совместимость приложений)

Я пытаюсь запустить другой скрипт (SetupComplete2.cmd) после запуска SetupComplete.cmd и перезагрузки компьютера.

Я добавил эту строку в SetupComplete.cmd:

REG ADD "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v Setup /t REG_SZ /d "cmd.exe /C C:\Windows\Setup\Scripts\SetupComplete2.cmd" /f

Эта команда прекрасно работает в Windows, я тестировал ее несколько раз, но по какой-то причине она не работает при запуске из SetupComplete.cmd...

Может кто-нибудь сказать мне, что я скучаю?

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

Мне нужно запустить другой сценарий, потому что я переименовываю компьютер в сценарии SetupComplete.cmd, и я автоматически устанавливаю приложения в SetupComplete2.cmd, которые зависят от имени нового компьютера, я не могу переименовать компьютер и устанавливать приложения сразу после, так как переименование компьютера не вступило в силу до перезагрузки, я не прав?

4 ответа

Кажется, несколько ссылок подразумевают, что это не просто строка в команде. Посмотрите на это: http://technet.microsoft.com/en-us/library/dd346765.aspx

Также рассмотрим контекст. Записи HKLM будут выполняться в контексте учетной записи Local\System. Записи HKCU будут выполняться в контексте пользователя. Что вам нужно?

Я пытаюсь сделать то же самое, и у меня та же проблема. Я пробовал RunOnce и RunOnce/Setup, как на HKLM, так и на HKCU, и, похоже, ничего не работает. Я не понимаю проблемы.

В качестве обходного пути, я просто добавил свой второй скрипт к клавише Run

REG ADD HKLM\Software\Microsoft\Windows\CurrentVersion\Run /v Setup /t REG_SZ /d "cmd.exe /C C:\Windows\Setup\Scripts\SetupComplete2.cmd" /f

Затем включил команду во 2-й скрипт удаления самого себя (должен быть локальный администратор, а не другая учетная запись с правами администратора, или вы столкнулись с проблемами UAC)

REG DELETE HKLM\Software\Microsoft\Windows\CurrentVersion\Run /v Setup /f

Прежде чем вы обобщите свою систему, создайте локальную учетную запись администратора (например, sysadmin) и вставьте ключ RunOnce в ее HKCU, чтобы запустить любой файл.cmd или.bat, который вы хотите. Затем в файле unattend.xml вы включаете раздел "Microsoft-Windows-Shell-Setup" в фазе OOBE и используете компонент "AutoLogon", в котором вы указываете sysadmin, пароль и количество раз для автозапуска (обычно только один раз). Я предполагаю, что у вас уже есть unattend.xml и вы знаете, как его изменить.

Вам также следует пропустить работу OOBE Machine и User, чтобы инициализация выполнялась без ввода, пока он не войдет в систему с помощью sysadmin и не предоставит пользователю сценарий. Конечно, вы должны выполнить sysprep /generalize и записать свой файл.wim и т. Д. Это единственный способ, который я нашел для интерактивного ввода во время OOBE.

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

Согласно статье TechNet " Добавить пользовательский сценарий в программу установки Windows", "команды в файле Setupcomplete.cmd выполняются с правами локальной системы.

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

Вам также следует изучить использование Microsoft Deployment Toolkit (MDT) для развертывания Windows. Некоторые преимущества использования MDT включают установку программного обеспечения после развертывания Windows с последовательностями задач "После установки", в том числе проверку наличия обновлений в WSUS или Центре обновления Windows. Он также может управлять драйверами и пакетами устройств и может использоваться со службами развертывания Windows (WDS), чтобы загрузка PXE могла доставлять ваши образы. Windows Embedded PoSReady 7 является одной из поддерживаемых операционных систем для развертывания.

Надеюсь это поможет,

РЕДАКТИРОВАТЬ: я только заметил, что ОП старый... Я не намеренно перетащил старый пост.

Другие вопросы по тегам