Раніше, я вже писав, як звірити список комп'ютерів, які є в AD з тими, які є у WSUS. Якщо ці списки не збігаються, то у вас проблема і частина комп'ютерів не оновлюється.
У найпростішому випадку, ви забули зробити групову політику, яка налаштовує клієнтські комп'ютери і сервери на оновлення зі WSUS, або сконфигурировали її так, що вона не застосовується. Ручна настройка параметрів через gpedit.msc теж допустима, але тільки для тих комп'ютерів, які не входять до складу домену.
Отже, політика застосовується, але все одно комп'ютер не оновлюється. Що робити і як лікувати?
Install new Windows Update software
Ми намагаємося це зробити, але в результаті отримуємо помилку:
Error Code 80070005
У балці% systemroot% \ WindowsUpdate.log обнаружтваются наступні повідомлення:
WARNING: WU client fails CClientCallRecorder :: RemoveService with error 0x80248014
Слід перевірити дозволу в груповій політиці для сервісу "Windows Updates"
Startup Mode: Automatic і дозволу:
Type Name Permission
Allow Everyone Read, Delete
Allow Everyone Change template, Start, Stop, Pause and continue
Якщо установка таких дозволів не принесе результату, спробуйте наступний варіант:
a) Поміняти параметри для "Windows Updates" сервісу в "not defined" і для старту і дозволу
b) Видалити ключ в реєстрі:
HKLM \ SYSTEM \ CurrentControlSet \ Services \ wuauserv \ Security
Після наступного оновлення групової політики проблема повинна усунутися. gpupdate / force
Для простоти, для таких способів, викладаю всі ці скрипти в уже готовому вигляді: Wsus-fix
1. Перший скрипт найпростіший, і, насправді, навіть не для лікування використовується, а для того, щоб примусово запустити перевірку на оновлення, ну і, заодно, чистить папку, в якій накопичуються дистрибутиви вже встановлених оновлень:
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
2. Другий скрипт потрібен для того, щоб "оживити" непрацюючий сервіс WSUS. У ньому йде чистка від старих оновлень, після чого папки SoftwareDistribution і Catroot2 перейменовуються, що при перезапуску сервісу призведе до їх пересозданию. Потім системні dll бібліотеки перереєстровуються.
net stop bits
net stop wuauserv
net stop cryptsvc
del / f / s / q% windir% \ SoftwareDistribution \ download \ *. *
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.exe / resetauthorization / detectnow
@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
5. Іноді, для того, щоб все запрацювало потрібно перевстановити агента WSUS. Спочатку потрібно завантажити latest Windows Update Agent. ну а потім встановити відповідну редакцію
для x32 версій Windows
для x64 версій Windows
Якщо ви щасливий володар Itanium - здогадаєтеся самі :-)
Після установки агента потрібно обов'язково перезавантажитися.
6. Для "лікування" помилок 0x80070005, тобто помилок доступу може стати в нагоді нижченаведений скрипт. Він відновлює доступи для адміністраторів і системи до реєстру і системних папок.
@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 і т.п. Тому, є хитрий спосіб. запускаю
Виділяю весь текст, видаляю його і зберігаю замість старого файлу (не забути в діалозі збереження поміняти тип файлу на *. *, А то за замовчуванням - * .txt)
Отже, повернемося до балці, коди помилок WSUS 3 можуть допомогти в розгляді.
Одна з поширених проблем зі wsus клієнтом на серверах може полягати в тому, що сам сервіс може підключатися до WSUS через проксі. а цього не потрібно і навпаки. Маніпулювати цим поведінкою можна за допомогою команди proxycfg
Доступ без проксі: proxycfg -d
Доступ через проксі з опціональним зазначенням байпас листа: proxycfg -d
Проімпортіровать призначені для користувача настройки: proxycfg -u
Сподіваюся, що плоди наших праць кому-небудь допоможуть.
Для простоти, викладаю всі ці скрипти в уже готовому вигляді: Wsus-fix
Добрий день, не стикалися ви з проблемою зі звітами?
На діаграмі відображається тільки 2 і 4 пункт. Хочеться відображення кількість встановлених оновлень (3 пункт). Підкажіть в чому може бути проблема або звідки капати? Може Report Viewer жене?
У мене відображається 1,2 і 4 :-)
Я навіть якось не замислювався з приводу цієї діаграми, тому що мене завжди цікавили 1 і 2 пункти
Підкажіть як боротися з помилкою 80070002 на клієнті (Windows 7), Не можу підключити його до WSUS. Заздалегідь дякую.
Утиліти і інструкції від Мікрософтвера не допомагають.
Якщо я правильно розумію, то способи, які я перерахував вище ви вже пробували?
Я не пригадую саме таких помилок у себе, то, що я відразу знаходжу як причину - перевірка правильності синхронізації дати часу на проблемному комп'ютері, це варто перевірити ретельно, тому що може викликати купу проблем.
Друге - очищення всіх темпів, наприклад disk cleaner з комплекту MS і пересозданіе папки Software Distribution (зупинити сервіс, перейменувати існуючу папку, створити сервіс)