Windows 10 не запускается после SysPrep
Я бьюсь над этой проблемой уже неделю. Я надеюсь, что кто-то может помочь. Вот предыстория: начав с базового образа Windows 10 сборки 1703, я обновился до Windows 10 20H2. Все прошло нормально. Фактически мы обновили 200 таких систем одинаковым образом и использовали один и тот же ISO без каких-либо проблем. ПК — HP EliteDesk 800 G2 SFF.
До обновления 20H2 я мог без проблем успешно подготовить программу sysprep и развернуть образ. После обновления 20H2 программа sysprep работает нормально и выключает систему, готовую записать новый образ. Проблема возникает во время первой загрузки после sysprep. Установка Windows останавливается из-за ошибки «Программе установки Windows не удалось настроить Windows для работы на оборудовании этого компьютера». Я пробовал все, что угодно, на основе поиска этой проблемы, в том числе:
- запуск sysyprep без указания файла ответов, sysprep /generalize /oobe
- запуск sysprep как из режима аудита, так и не из режима аудита
- проверка диспетчера устройств на наличие ошибок перед запуском sysprep
- обновление драйверов хранилища, драйверов чипсета и видеодрайверов
- удаление всех учетных записей пользователей, кроме встроенных учетных записей
- присвоение пароля встроенной учетной записи администратора
- включение (и отключение) встроенной учетной записи администратора
- отключение защитника Windows (в системе нет другого AV)
- запуск средства проверки системных файлов (sfc /scannow) и проверки диска (chkdsk /f)
- удаление папок групповой политики из windows/system32
- возможно, еще несколько вещей, о которых я забыл упомянуть
Вот соответствующая часть setupact.log:
2021-02-12 07:16:04, Info SYSPRP ActionPlatform::LaunchModule: Executing method 'CryptoSysPrep_Specialize' from C:\Windows\system32\capisp.dll
2021-02-12 07:16:04, Info capisp.dll::CheckIFCryptoSysPrepSpecialized: returning 0
2021-02-12 07:16:04, Info CBS TI: --- Initializing Trusted Installer ---
2021-02-12 07:16:04, Info CBS TI: Last boot time: 2021-02-12 07:15:45.500
2021-02-12 07:16:04, Info CBS Starting TrustedInstaller initialization.
2021-02-12 07:16:04, Info CBS Lock: New lock added: CCbsPublicSessionClassFactory, level: 30, total lock:4
2021-02-12 07:16:04, Info CBS Lock: New lock added: CCbsPublicSessionClassFactory, level: 30, total lock:5
2021-02-12 07:16:04, Info CBS Lock: New lock added: WinlogonNotifyLock, level: 8, total lock:6
2021-02-12 07:16:04, Info CBS Ending TrustedInstaller initialization.
2021-02-12 07:16:04, Info CBS Starting the TrustedInstaller main loop.
2021-02-12 07:16:04, Info CBS Running under Setup's First boot, setting idle time to 30 minutes
2021-02-12 07:16:04, Info CBS TrustedInstaller service starts successfully.
2021-02-12 07:16:04, Info CBS Setup in progress, aborting startup processing checks.
2021-02-12 07:16:04, Info CBS Startup processing thread terminated normally
2021-02-12 07:16:04, Info CBS TI: Startup Processing completes, release startup processing lock.
2021-02-12 07:16:49, Info capisp.dll::CryptoSysPrep_Specialize: assigned CAPI machine guid "124eee6a-4493-4872-a69b-378a55ab51d8"
2021-02-12 07:16:49, Info capisp.dll::LsaOpenPolicy failed: c0020003
2021-02-12 07:16:49, Info capisp.dll::CryptoSysPrep_Specialize: DisableAdministratorIfApplicable failed
2021-02-12 07:16:49, Info capisp.dll::CryptoSysPrep_Specialize: returning 65b
2021-02-12 07:16:49, Error SYSPRP ActionPlatform::LaunchModule: Failure occurred while executing 'CryptoSysPrep_Specialize' from C:\Windows\system32\capisp.dll; dwRet = 0x65b
2021-02-12 07:16:49, Error SYSPRP SysprepSession::ExecuteAction: Failed during sysprepModule operation; dwRet = 0x65b
2021-02-12 07:16:49, Error SYSPRP SysprepSession::ExecuteInternal: Error in executing action for Microsoft-Windows-Cryptography; dwRet = 0x65b
2021-02-12 07:16:49, Error SYSPRP SysprepSession::Execute: Error in executing actions from C:\Windows\System32\Sysprep\ActionFiles\Specialize.xml; dwRet = 0x65b
2021-02-12 07:16:49, Info SYSPRP SysprepSession::Execute: Sysprep mode was not specified, deleting it from registry
2021-02-12 07:16:49, Error SYSPRP RunPlatformActions:Failed while executing Sysprep session actions; dwRet = 0x65b
2021-02-12 07:16:49, Info SYSPRP Callback_Specialize: Internal Providers Specialized Failed. System can't proceed to handle Internal Providers
2021-02-12 07:16:49, Info SYSPRP Callback_Specialize: Specialize return: [1627]
2021-02-12 07:16:49, Error [0x0f0435] SYSPRP Callback_Specialize: An error occurred while either deciding if we need to specialize or while specializing; dwRet = 0x65b[gle=0x00000002]
2021-02-12 07:16:49, Info [0x0640ae] IBSLIB PublishMessage: Publishing message [Windows Setup could not configure Windows to run on this computer's hardware.]
Несмотря на все, что я пробовал, он каждый раз останавливается в одной и той же точке с одним и тем же сообщением и одними и теми же зарегистрированными ошибками. Я провел небольшое исследование кода c0020003, сгенерированного функцией LsaOpenPolicy, и, похоже, это код HRESULT, который сопоставляется с RPC_NT_INVALID_BINDING, а цель LsaOpenPolicy — получить дескриптор объекта политики Windows. Исходя из этого, я предполагаю, что по какой-то причине функция LsaOpenPolicy не может получить дескриптор объекта политики, что может объяснить, почему попытка отключить учетную запись администратора в следующей строке также терпит неудачу.
У меня полностью закончились идеи, поэтому я надеюсь, что кто-нибудь предложит еще несколько предложений, которые стоит попробовать.
2 ответа
@Drink More Pimp Juice IT-специалисты дали мне много хороших советов, некоторые из которых в конечном итоге привели меня к тому, что сработало. Вот что наконец сработало для меня:
После применения образа 1703, но до установки каких-либо обновлений:
- Я удалил пакеты appx, которые, как я знал, вызывали проблемы с моими предыдущими попытками sysprep.
-
Get-AppPackage Microsoft.Messaging* | Remove-AppxPackage -allUser
-
Get-AppPackage Microsoft.OneConnect* | Remove-AppxPackage -allUser
-
Get-AppPackage AD2F1837.HPPrinterControl* | Remove-AppxPackage -allUser
-
Get-AppPackage Microsoft.Windows.Cortana* | Remove-AppxPackage -allUser
- Еще находясь на 1703, я запустил sysprep /generalize /oobe (файл ответов не указан)
- При первой загрузке после sysyprep я выполнил управляемый процесс настройки новой учетной записи, назовем ее TempAccount1.
- Войдя в систему под учетной записью TempAccount1, я установил Win10 версии 1903 в качестве промежуточного обновления. После завершения обновления я снова вошел в систему под TempAccount1.
- Я еще раз удалил 4 пакета appx, используя те же команды, что и на шаге 1.
- Я запустил sysyprep/generalize/oobe (снова без указания файла ответов)
- При первой загрузке после sysprep я создал еще одну новую учетную запись, назовите ее TempAccount2.
- Войдя в систему как TempAccount2, я установил Win 10 версии 20H2, разрешил ее завершение и затем снова вошел в систему как TempAccount2.
- Я еще раз удалил 4 пакета appx, используя те же команды, что и на шаге 1.
- Я считаю, что проблема, скорее всего, была устранена на этом этапе, но, поскольку я все еще тестировал, я снова запустил sysypep, не указывая файл ответов, sysprep /generalize /oobe, просто чтобы посмотреть, будет ли это работать.
- Впервые Windows 10 20H2 полностью загрузилась после запуска sysprep, поэтому я был вполне уверен, что проблема устранена на этом этапе. Я в последний раз выполнил пошаговую процедуру настройки новой учетной записи, назову ее TempAccount3.
- Я вошел в систему как TempAcount3 и запустил режим аудита, sysprep /audit
- В режиме аудита я удалил три созданные ранее временные учетные записи: TempAccount1, TempAccount2 и TempAccount3.
- Я удалил все неизвестные профили из «Система>>Дополнительные настройки системы>>Вкладка «Дополнительно»>>Профили пользователей>>Настройки.
- Еще раз удалены 4 пакета appx, описанные на шаге 1.
- Запустил sysprep /generalize /oobe /unattend:c:\myUnattendFile.xml и наконец добился успеха!
Я не могу с уверенностью сказать, что все эти шаги были необходимы, но после двух недель устранения этой проблемы я не склонен возвращаться и продолжать устранение неполадок, чтобы попытаться сузить круг еще больше.
Надеюсь, это поможет кому-то еще в будущем. Большое спасибо @Drink More Pimp Juice IT за многочисленные предложения, некоторые из которых в конечном итоге привели меня к решению.
Сбой Sysprep или обновления функции
Выполните приведенные ниже действия до и/или после любого обновления функций Windows 10 или операции системной подготовки. После завершения установки любого обновления функции войдите в систему и перезагрузите его один раз. Выполните эти шаги как задачу очистки после обновления после входа в систему и перезапустите после завершения обновления функции.
Есть также некоторые дополнительные моменты, которые следует принять во внимание, если ни один из этих шагов не поможет решить проблему.
Войдите на компьютер как локальный администратор и подтвердите успешный вход.
Перейти в Панель управления | Система | Расширенные настройки системы | Вкладка «Дополнительно» | Раздел «Профили пользователей» |
Settings
Выделите и удалите все учетные записи «Неизвестная учетная запись » и любые другие учетные записи по одной, кроме профиля по умолчанию и учетной записи локального администратора , под которой вы сейчас вошли.
Запустите приведенную ниже команду с повышенными правами администратора после удаления всех неизвестных профилей из системы, как указано в шаге №3. Игнорируйте все ошибки команд и просто дождитесь завершения.
Get-AppXpackage -AllUsers | Remove-AppxPackage; Get-AppxPackage | % { Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml" }; Get-AppxPackage -AllUsers | % { Add-AppxPackage -Register "$($_.InstallLocation)\appxmanifest.xml" -DisableDevelopmentMode };
Запустите приведенный ниже PowerShell с повышенными правами и дайте ему завершиться.
PowerShell с повышенными правами
Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\*' | % { New-ItemProperty -Path $_.PSPath -Name StateFlags0001 -Value 2 -PropertyType DWord -Force }; Start-Process -FilePath CleanMgr.exe -ArgumentList '/sagerun:1'
Запустите ниже
DISM.exe
Административные процессы повышаются ниже одного за другим, пока все они не завершатся.DISM.exe /online /Cleanup-Image /StartComponentCleanup DISM.exe /online /Cleanup-Image /SPSuperseded DISM.exe /online /cleanup-image /restorehealth
Дополнительные соображения
Удалять
HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows
ключи перед запуском sysprep, чтобы удалить любые политики набора реестра, которые могут быть установленыПросматривать
gpedit.msc
и найдите и установите все политики, установленные дляNot Configured
перезагрузитесь и снова войдите в систему, если они были обнаружены до запуска sysprep.Очевидно, вы не хотите, чтобы машина была присоединена к какому-либо домену во время подготовки sysprep, поэтому убедитесь, что это не проблема.
Проверьте наличие
services.msc
службы, настроенные для запуска в качестве учетных данных домена, и, если таковые имеются, отключите их или удалите программное обеспечение для удаления или запуска.sc
команды для их удаления.Обязательно перезагрузитесь после удаления или отключения, если они обнаружены, и подтвердите, что они исчезли после повторного входа в систему, а затем запустите программу sysprep.
Согласно совету из сообщения об ошибке обобщения Sysprep , просмотрите
HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList
ключи реестра и посмотрите, указывает ли профиль какой-либо учетной записи пользователя на диск, отличный отC:\Users\<UserAccountName>
и исправьте это и подтвердите исправление с помощью перезагрузки, а затем запустите sysprep. Посмотрите наProfileImagePath
значения для каждого GUID профиля из этих ключей.