Оглавление
Если возникает ошибка при запуске процесса обновления Windows, то возможно поможет следующий набор рецептов
1. Для исправления можно воспользоваться утилитой Fix Windows Update
2. Набор скриптов от Заметки IT Менеджера Wsus-fix В данном наборе не только процесс восстановление обновления, но и процесс очистки и реанимации после очистки папки от обновлений
а. Первый скрипт самый простой, и, на самом деле, даже не для лечения используется, а для того, чтобы принудительно запустить проверку на обновление, ну и, заодно, чистит папку, в которой накапливаются дистрибутивы уже установленных обновлений:
wsus_detect_manual.cmd
1 2 3 4 5 6 |
net stop wuauserv && net stop bits && net stop cryptsvc del /f /s /q %windir%\SoftwareDistribution\download\*.* net start wuauserv && net start bits && net start cryptsvc wuauclt.exe /detectnow exit |
fix_wsus_service.cmd
1 2 3 4 5 |
net stop bits net stop wuauserv net stop cryptsvc |
1 2 3 |
del /f /s /q %windir%\SoftwareDistribution\download\*.* |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
ren %systemroot%\System32\Catroot2 Catroot2.old ren %systemroot%\SoftwareDistribution SoftwareDistribution.old REM del /f /s /q %windir%\SoftwareDistribution\*.* del /f /s /q %windir%\windowsupdate.log %windir%\system32\regsvr32.exe /U /s %windir%\system32\vbscript.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\mshtml.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\msjava.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\msxml.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\actxprxy.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\shdocvw.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\Mssip32.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\wintrust.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\initpki.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\dssenh.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\rsaenh.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\gpkcsp.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\sccbase.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\slbcsp.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\cryptdlg.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\Urlmon.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\Oleaut32.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\msxml2.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\Browseui.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\shell32.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\Mssip32.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\atl.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\jscript.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\msxml3.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\softpub.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\wuapi.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\wuaueng.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\wuaueng1.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\wucltui.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\wups.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\wups2.dll %windir%\system32\regsvr32.exe /U /s %windir%\system32\wuweb.dll %windir%\system32\regsvr32.exe /s %windir%\system32\vbscript.dll %windir%\system32\regsvr32.exe /s %windir%\system32\mshtml.dll %windir%\system32\regsvr32.exe /s %windir%\system32\msjava.dll %windir%\system32\regsvr32.exe /s %windir%\system32\msxml.dll %windir%\system32\regsvr32.exe /s %windir%\system32\actxprxy.dll %windir%\system32\regsvr32.exe /s %windir%\system32\shdocvw.dll %windir%\system32\regsvr32.exe /s %windir%\system32\Mssip32.dll %windir%\system32\regsvr32.exe /s %windir%\system32\wintrust.dll %windir%\system32\regsvr32.exe /s %windir%\system32\initpki.dll %windir%\system32\regsvr32.exe /s %windir%\system32\dssenh.dll %windir%\system32\regsvr32.exe /s %windir%\system32\rsaenh.dll %windir%\system32\regsvr32.exe /s %windir%\system32\gpkcsp.dll %windir%\system32\regsvr32.exe /s %windir%\system32\sccbase.dll %windir%\system32\regsvr32.exe /s %windir%\system32\slbcsp.dll %windir%\system32\regsvr32.exe /s %windir%\system32\cryptdlg.dll %windir%\system32\regsvr32.exe /s %windir%\system32\Urlmon.dll %windir%\system32\regsvr32.exe /s %windir%\system32\Oleaut32.dll %windir%\system32\regsvr32.exe /s %windir%\system32\msxml2.dll %windir%\system32\regsvr32.exe /s %windir%\system32\Browseui.dll %windir%\system32\regsvr32.exe /s %windir%\system32\shell32.dll %windir%\system32\regsvr32.exe /s %windir%\system32\Mssip32.dll %windir%\system32\regsvr32.exe /s %windir%\system32\atl.dll %windir%\system32\regsvr32.exe /s %windir%\system32\jscript.dll %windir%\system32\regsvr32.exe /s %windir%\system32\msxml3.dll %windir%\system32\regsvr32.exe /s %windir%\system32\softpub.dll %windir%\system32\regsvr32.exe /s %windir%\system32\wuapi.dll %windir%\system32\regsvr32.exe /s %windir%\system32\wuaueng.dll %windir%\system32\regsvr32.exe /s %windir%\system32\wuaueng1.dll %windir%\system32\regsvr32.exe /s %windir%\system32\wucltui.dll %windir%\system32\regsvr32.exe /s %windir%\system32\wups.dll %windir%\system32\regsvr32.exe /s %windir%\system32\wups2.dll %windir%\system32\regsvr32.exe /s %windir%\system32\wuweb.dll net start bits net start wuauserv net start cryptsvc wuauclt /detectnow exit |
wsus_resetaut_detect_manual.cmd
1 2 3 |
wuauclt.exe /resetauthorization /detectnow |
AU_Clean_SID.cmd
1 2 3 4 5 6 7 8 9 |
@echo on net stop wuauserv REG DELETE "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate" /v AccountDomainSid /f REG DELETE "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate" /v PingID /f REG DELETE "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate" /v SusClientId /f net start wuauserv wuauclt /resetauthorization /detectnow |
для x32 версий Windows
1 2 3 |
windowsupdateagent30-x86.exe /wuforce |
для x64 версий Windows
1 2 3 |
windowsupdateagent30-x64.exe /wuforce |
Если вы счастливый обладатель Itanium – догадаетесь сами 🙂
После установки агента нужно обязательно перезагрузиться.
е. Для «лечения» ошибок 0x80070005, т.е. ошибок доступа может пригодиться нижеприведенный скрипт. Он восстанавливает доступы для администраторов и системы к реестру и системным папкам.
Для выполнения этого скрипта понадобится майкрософтовская утилита subinacl.exe. Она входит в resource kit для Windows Server 2003, но пользоваться той версией, что входит туда не стоит, т.к. там неприятные ошибки. Следует скачать subinacl.exe версии 5.2.3790.1180.
Restore_registry_and_system_permission.cmd
1 2 3 4 5 6 7 8 9 10 11 12 |
@echo off REM Применять при ошибках 0x80070005 Windows Update subinacl /subkeyreg HKEY_LOCAL_MACHINE /grant=administrators=f subinacl /subkeyreg HKEY_CURRENT_USER /grant=administrators=f subinacl /subkeyreg HKEY_CLASSES_ROOT /grant=administrators=f subinacl /subdirectories %SystemDrive% /grant=administrators=f subinacl /subkeyreg HKEY_LOCAL_MACHINE /grant=system=f subinacl /subkeyreg HKEY_CURRENT_USER /grant=system=f subinacl /subkeyreg HKEY_CLASSES_ROOT /grant=system=f subinacl /subdirectories %SystemDrive% /grant=system=f |
Все эти скрипты можно выполнять практически автоматически, в случае возникновения проблем. Если в результате проблема таки не решена, то приходится разбираться уже плотнее. И тут нам пригодится тот самый windowsupdate.log, который лежит в корне папки Windows. Если компьютер проблемный, то файл этот большого размера. Для простоты, желательно его удалить перед тем как запускать скрипты. Почти во всех скриптах предусмотрена команда его удаления, но не все так просто. Не смотря на остановку сервиса wuauserv, обычно, его продолжают держать открытые IE и т.п. Поэтому, есть хитрый способ. Запускаю
1 2 3 |
notepad.exe %windir%\windowsupdate.log |
Выделяю весь текст, удаляю его и сохраняю вместо старого файла (не забыть в диалоге сохранения поменять тип файла на *.*, а то по умолчанию – *.txt)
Итак, вернемся к логу, коды ошибок WSUS 3 могут помочь в разбирательстве.
Одна из распространенных проблем со wsus клиентом на серверах может заключаться в том, что сам сервис может подключаться к WSUS через прокси, а этого не нужно и наоборот. Манипулировать этим поведением можно с помощью команды proxycfg
Доступ без прокси: proxycfg –d
Доступ через прокси с опциональным указанием байпас листа: proxycfg –d
Проимпортировать пользовательские настройки: proxycfg –u
3. И небольшой набор скриптов, который иногда помогает
Создаем текстовый файл с расширением .bat и вписываем туда следующее:
Для 64 разрядной системы:
1 2 3 4 5 6 7 8 9 10 |
powershell (new-object System.Net.WebClient).DownloadFile( 'https://download.microsoft.com/download/5/D/0/5D0821EB-A92D-4CA2-9020-EC41D56B074F/Windows6.1-KB3020369-x64.msu', '%TEMP%\KB3020369.msu') powershell (new-object System.Net.WebClient).DownloadFile( 'https://download.microsoft.com/download/5/6/0/560504D4-F91A-4DEB-867F-C713F7821374/Windows6.1-KB3172605-x64.msu', '%TEMP%\KB3172605.msu') net stop wuauserv wusa /update "%TEMP%\KB3020369.msu" /quiet /norestart net stop wuauserv wusa /update "%TEMP%\KB3172605.msu" /quiet /warnrestart:5 powershell remove-item '%TEMP%\KB3020369.msu' powershell remove-item '%TEMP%\KB3172605.msu' |
Для 32 разрядной системы:
1 2 3 4 5 6 7 8 9 10 |
powershell (new-object System.Net.WebClient).DownloadFile( 'https://download.microsoft.com/download/5/D/0/5D0821EB-A92D-4CA2-9020-EC41D56B074F/Windows6.1-KB3020369-x86.msu', '%TEMP%\KB3020369.msu') powershell (new-object System.Net.WebClient).DownloadFile( 'https://download.microsoft.com/download/5/6/0/560504D4-F91A-4DEB-867F-C713F7821374/Windows6.1-KB3172605-x86.msu', '%TEMP%\KB3172605.msu') net stop wuauserv wusa /update "%TEMP%\KB3020369.msu" /quiet /norestart net stop wuauserv wusa /update "%TEMP%\KB3172605.msu" /quiet /warnrestart:5 powershell remove-item '%TEMP%\KB3020369.msu' powershell remove-item '%TEMP%\KB3172605.msu' |
Сохраняем на рабочем столе, запускаем от имени администратора, после выполнения bat-файла перезагружаем компьютер и пробуем обновится.