пятница, 15 ноября 2013 г.

SYSPREP прекращает свою работу с неустранимой ошибкой на ОС Windows Vista/2008 и выше

Если вы подготовили образ операционной системы, запустили sysprep и получили данное окно с ошибкой, действуйте следующим образом:


Проверьте лог-файл setuperr.log, который находится в папке "%windir%\System32\sysprep\Panther". В случае обнаружения похожих строк,

[0x0f0073] SYSPRP RunExternalDlls:Not running DLLs; either the machine is in an invalid state or we couldn't update the recorded state, dwRet = 31
[0x0f00ae] SYSPRP WinMain:Hit failure while processing sysprep cleanup external providers; hr = 0x8007001f

откройте реестр и проверьте следующие параметры ключа "HKEY_LOCAL_MACHINE\SYSTEM\Setup\Status\SysprepStatus\":

CleanupState должен быть равен 2,
GeneralizationState должен быть равен 7.

Если значения другие, исправьте их и запустите sysprep.

В ином случае, если вы слишком часто (более 4 раз) запускали скрипт Windows Software Licensing Rearm (slmgr.vbs /rearm) для сброса триального периода, сможете увидеть следующие строки в setuperr.log:

[0x0f0082] SYSPRP LaunchDll:Failure occurred while executing 'C:\Windows\System32\slc.dll,SLReArmWindows', returned error code -1073425657
[0x0f0070] SYSPRP RunExternalDlls:An error occurred while running registry sysprep DLLs, halting sysprep execution. dwRet = -1073425657
[0x0f00a8] SYSPRP WinMain:Hit failure while processing sysprep generalize internal providers; hr = 0xc004d307

Сброс "Rearm" также автоматически производится при выполнении sysprep. Поэтому, если вы используете единый эталонный образ, постоянно раскрываете его для обновлений, а затем заново делаете sysprep, Microsoft рекомендует задействовать файл ответов Unattend.xml примерно следующего содержания:


<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="generalize">
<component name="Microsoft-Windows-Security-Licensing-SLC" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SkipRearm>1</SkipRearm>
</component>
</settings>
</unattend>

Файл подкладывается в папку с sysprep.exe. Это позволит исключить выполнение Windows Software Licensing Rearm при использовании sysprep. Если целевая ОС 32-битная, значение параметра "processorArchitecture" должно быть установлено в "x86".
Для ОС Windows 7/2008R2 и выше можно обойтись без файла ответов. Достаточно изменить значение параметра SkipRearm с 0 на 1 в ветке реестра:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\SoftwhereProtectionPlatform\

После распаковки образа данный параметр автоматически установится в 0.

3 комментария: