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, но до установки каких-либо обновлений:

  1. Я удалил пакеты 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 
    
  1. Еще находясь на 1703, я запустил sysprep /generalize /oobe (файл ответов не указан)
  2. При первой загрузке после sysyprep я выполнил управляемый процесс настройки новой учетной записи, назовем ее TempAccount1.
  3. Войдя в систему под учетной записью TempAccount1, я установил Win10 версии 1903 в качестве промежуточного обновления. После завершения обновления я снова вошел в систему под TempAccount1.
  4. Я еще раз удалил 4 пакета appx, используя те же команды, что и на шаге 1.
  5. Я запустил sysyprep/generalize/oobe (снова без указания файла ответов)
  6. При первой загрузке после sysprep я создал еще одну новую учетную запись, назовите ее TempAccount2.
  7. Войдя в систему как TempAccount2, я установил Win 10 версии 20H2, разрешил ее завершение и затем снова вошел в систему как TempAccount2.
  8. Я еще раз удалил 4 пакета appx, используя те же команды, что и на шаге 1.
  9. Я считаю, что проблема, скорее всего, была устранена на этом этапе, но, поскольку я все еще тестировал, я снова запустил sysypep, не указывая файл ответов, sysprep /generalize /oobe, просто чтобы посмотреть, будет ли это работать.
  10. Впервые Windows 10 20H2 полностью загрузилась после запуска sysprep, поэтому я был вполне уверен, что проблема устранена на этом этапе. Я в последний раз выполнил пошаговую процедуру настройки новой учетной записи, назову ее TempAccount3.
  11. Я вошел в систему как TempAcount3 и запустил режим аудита, sysprep /audit
  12. В режиме аудита я удалил три созданные ранее временные учетные записи: TempAccount1, TempAccount2 и TempAccount3.
  13. Я удалил все неизвестные профили из «Система>>Дополнительные настройки системы>>Вкладка «Дополнительно»>>Профили пользователей>>Настройки.
  14. Еще раз удалены 4 пакета appx, описанные на шаге 1.
  15. Запустил sysprep /generalize /oobe /unattend:c:\myUnattendFile.xml и наконец добился успеха!

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

Надеюсь, это поможет кому-то еще в будущем. Большое спасибо @Drink More Pimp Juice IT за многочисленные предложения, некоторые из которых в конечном итоге привели меня к решению.

Сбой Sysprep или обновления функции

Выполните приведенные ниже действия до и/или после любого обновления функций Windows 10 или операции системной подготовки. После завершения установки любого обновления функции войдите в систему и перезагрузите его один раз. Выполните эти шаги как задачу очистки после обновления после входа в систему и перезапустите после завершения обновления функции.

Есть также некоторые дополнительные моменты, которые следует принять во внимание, если ни один из этих шагов не поможет решить проблему.

  1. Войдите на компьютер как локальный администратор и подтвердите успешный вход.

  2. Перейти в Панель управления | Система | Расширенные настройки системы | Вкладка «Дополнительно» | Раздел «Профили пользователей» | Settings

  3. Выделите и удалите все учетные записи «Неизвестная учетная запись » и любые другие учетные записи по одной, кроме профиля по умолчанию и учетной записи локального администратора , под которой вы сейчас вошли.

  4. Запустите приведенную ниже команду с повышенными правами администратора после удаления всех неизвестных профилей из системы, как указано в шаге №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 
        };
    
  5. Запустите приведенный ниже 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' 
    
  6. Запустите ниже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 профиля из этих ключей.

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