Как запустить SysPrep после апгрейда Windows

Как запустить SysPrep после апгрейда Windows

Столкнулся со странной ошибкой при попытке выполнить SysPrep на уже установленной системе, которую планировались использовать для создания эталонного образа для развертывания Windows 10 средствами System Center Configuration Manager 2012 R2. При запуске SysPrep неожиданно появляется ошибка:

Sysprep не удалось проверить установку Windows. Дополнительные сведения см. в файле журнала %Windows%System32SysprepPanthersetupact.log. После устранения проблемы снова проверьте установку с помощью Sysprep.

Sysprep не удалось проверить установку Windows. Дополнительные сведения см. в файле журнала %Windows%System32SysprepPanthersetupact.log

В английской версии Windows 10 ошибка аналогичная:

Sysprep was not able to validate your Windows installation, Review the log file at %Windows%System32SysprepPanthersetupact.log for details. After resolving the issue, use Sysprep to validate your installation again.

Sysprep was not able to validate your Windows installation

Откроем и проанализируем ошибки в файле журнала утилиты Sysprep setupact.log. В глаза сразу бросается следующая строка:

2016-08-01 10:22:51, Error [0x0f0036] SYSPRP spopk.dll:: Sysprep will not run on an upgraded OS. You can only run Sysprep on a custom (clean) install version of Windows.

Т.е. ошибка явно сообщает, что запрещено выполнять Sysprep на системах, которые были обновлены с предыдущей версии Windows. В нашем случае это как раз так: одна система была получена путем апгрейда с Windows 7 до Windows 10, вторая через обновление с Windows 8.1. И действительно, согласно статье в базе знаний KB828287: Microsoft не поддерживает использование Sysprep для создания образов для инсталляций Windows, которые были обновлены через режим апгрейда (установка SP при этом не считается апгрейдом). Windows разрешает выполнять только sysprep на системах, полученных в результате «чистой установки». Неужели в таком случае придется переустанавливать систему с нуля?

Мне удалось найти более простое решение. С помощью Process Monitor с фильтром для процесса sysprep.exe и сравнения чистой и «обновленной» Windows 10 удалось получить список ключей реестра, которые проверяются Sysprep при запуске на предмет определения чистая ли эта система или «обновленная». Итак, что нужно сделать, чтобы сбросить маркер «обновленной» системы для Windows 10, который проверяется утилитой Sysprep (для других версий ОС все аналогично):

Важно. Описанная ниже методика официально не поддерживается Microsoft, и не гарантируется, что в дальнейшем не возникнет проблем с полученным таким способом образом системы.

  1. Открыть редактор реестра (regedit.exe)
  2. Перейди в ветку HKEY_LOCAL_MACHINESYSTEMSetup
  3. Удалить вложенную ветку Upgrade (если есть) и параметр с именем Upgrade Метка Upgrade в реестре
  4. В ветке HKEY_LOCAL_MACHINESYSTEMSetupStatusSysprepStatus установить значений ключа CleanupState равным 7
  5. Осталось перезагрузить компьютер и попробовать выполнить SysPrep еще раз

Совет. В случае с Windows 10, чтобы SysPrep заработал, дополнительно пришлось удалить все нестандартные Modern приложения, которые индивидуально (не в режиме provision) были установлены из Microsoft Store пользователями системы.

Это можно сделать, удалив все профили пользователей (если применимо), полностью удалив все Metro приложения для всех пользователей (не рекомендуемы способ), либо удалив такие приложения вручную. Последний вариант реализуется так:

  1. Получим список всех установленных Metro приложений в профилях всех пользователей (нас интересуют только пакеты со статусом Installed):
    Get-AppxPackage -AllUser | Format-List -Property PackageFullName,PackageUserInformation
  2. И последовательно удалив их таким образом:
    Remove-AppxPackage -Package
    . Или так:
    Remove-AppxProvisionedPackage -Online -PackageName

Windows 8
Как запустить SysPrep после апгрейда Windows