Як запустити SysPrep після апгрейда Windows

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

Sysprep не вдалося перевірити установку Windows. Додаткові відомості див. У файлі журналу% Windows% \ System32 \ Sysprep \ Panther \ setupact.log. Після усунення проблеми знову перевірте установку за допомогою Sysprep.

В англійській версії Windows 10 помилка аналогічна:

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

Відкриємо і проаналізуємо помилки у файлі журналу утиліти 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_MACHINE \ SYSTEM \ Setup \
  3. Видалити вкладену гілку Upgrade (Якщо є) і параметр з ім'ям Upgrade 
  4. У гілці HKEY_LOCAL_MACHINE \ SYSTEM \ Setup \ Status \ SysprepStatus встановити значень ключа 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