Reg delete hklm software microsoft windows currentversion windowsupdate f v susclientid

Иногда может возникнуть такая ситуация, что рабочие станции на WSUS заменяют друг друга. Кто последний отрепортился на сервер WSUS — остается там, другой компьютер пропадает из списка. Ситуация может возникнуть при клонировании ОС. В моем же случае компьютеры уже приехали с предустановленной ОС.

Чтобы устранить данную проблему, на компьютерах необходимо удалить параметр SusClientId отсюда:

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate

Либо воспользоваться командой:

REG DELETE "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate" /v SusClientId /f

Также на всякий случай нужно проверить наличие параметров AccountDomainSid и PingID здесь же, и не совпадают ли они на взаимозаменяемых ПК. Если что, то по аналогии

REG DELETE "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate" /v AccountDomainSid /f
REG DELETE "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate" /v PingID /f

Заново регистрируем рабочую станцию на WSUS

wuauclt /resetauthorization /detectnow

И запускаем проверку обновлений.

Теперь каждый ПК будет на WSUS отдельно.

Вторник, 12 — Август — 2014

Перемещаясь из одной компании в другую, практически везде вижу одну и ту же картину: клонированные с помощью Acronis или Ghost рабочие станции, а также тиражированные на гипервизоре VMWare сервера не распознаются сервером Windows Server Update Services (WSUS). То есть, компьютеры видят WSUS и ставят с него обновления, на самой же консоли управления WSUS их не видно — из 600 рабочих станций распознаются, к примеру, всего 100.

Причина весьма проста — после первого же визита на Windows Update служба WUAUServ генерирует уникальный идентификатор SusClientId, затем администратор сохраняет образ уже обновленной операционной системы. У всех растиражированных с данного образа копии ОС этот идентификатор будет одинаков.

Заменить SusClientId просто, и статей на эту тему предостаточно. Меня же интересовало написание скрипта, который можно применить в любой компании сразу ко всем машинам. Думается, мне не жалко им поделиться с вами. Сохраните скрипт в шаринг NetLogon контроллера домена, затем сконфигурируйте его запуск в качестве Startup Script для всех компьютеров домена. Для отсылки уведомлений на почту раскидайте на все компьютеры программу BLAT (http://www.blat.net/).

@echo off
set NetworkFolder=\\FileServer\Data\Computer_Reports\SusClientId
set LogFileName=C:\Windows\SusClientId.txt
set MailServer=mail.company.lv
set MailFrom=%ComputerName%@Company.local
set RcptTo=ITSupport@Company.lv

set SusClientId=None
if not exist %NetworkFolder% goto End
if exist «%NetworkFolder%\Computer_%ComputerName%.txt» goto End
echo Checking WSUS Client ID on %ComputerName% at %date% %time% > «%LogFilename%»
for /f «tokens=2,*» %%a in (‘reg query HKLM\Software\Microsoft\Windows\Currentversion\WindowsUpdate /v SusClientId 2^>NUL ^| findstr SusClientId’) do set SusClientId=%%b
echo Current ID = %SusClientId% >> «%LogFilename%»
if not exist «%NetworkFolder%\ID_%SusClientId%.txt» goto Update

:ResetID
reg delete HKLM\Software\Microsoft\Windows\Currentversion\WindowsUpdate /f /v SusClientId
reg delete HKLM\Software\Microsoft\Windows\Currentversion\WindowsUpdate /f /v SusClientIdValidation
net stop WUAUServ
ping localhost
net start WUAUServ
ping localhost
wuauclt /resetauthorization /detectnow

for /f «tokens=2,*» %%a in (‘reg query HKLM\Software\Microsoft\Windows\Currentversion\WindowsUpdate /v SusClientId 2^>NUL ^| findstr SusClientId’) do set SusClientId=%%b
echo WSUS ID has been updated >> %LogFilename%
echo New ID = %SusClientId% >> %LogFilename%
if exist «%NetworkFolder%\ID_%SusClientId%.txt» goto End
ping localhost
blat.exe %LogFilename% -f %MailFrom% -to %RcptTo% -subject «WSUS Client ID Update Notification» -server %MailServer%

:Update
echo %ComputerName% > «%NetworkFolder%\ID_%SusClientId%.txt»
echo %SusClientId% > «%NetworkFolder%\Computer_%ComputerName%.txt»
:End

Как оно работает:

  1. Отрабатывая впервые, скрипт сохраняет в сетевой папке %NetworkFolder% два файла: %ComputerName%.txt и ID_%SusClientId%.txt. Ну вот так мне захотелось.
  2. В дальнейшем, если файл с именем компьютера уже есть, скрипт просто заканчивает свою работу. Это означает, что он уже отстрелялся ранее.
  3. Если же обнаруживается, что файла с именем компьютера нет, а файл с идентификатором есть, выходит, что этот ID уже занят кем-то другим. В этом случае скрипт уничтожает свой текущий SusClientId и генерирует его заново. Новый идентификатор высылается на заданный почтовый адрес для того, чтобы отметить сам факт его успешной замены.

Заметил, что при первой зачистке существует вероятность генерации нового идентификатора, идентичного предыдущему. С остальным, думаю, разберётесь сами.

При вводе в эксплуатацию партии новых рабочих станций HP с предустановленной ОС Windows 7 Pro OEM столкнулись с ситуацией, когда новые клиентские компьютеры успешно обновлялись с локального сервера WSUS, но при этом не появлялись на консоли WSUS. Вернее сказать, на консоли отображался лишь один новый компьютер, который последним обратился на WSUS. Изучив WindowsUpdate.log на нескольких таких клиентских компьютерах, стало очевидно, что каждый из них использует один и тот же SusClientId, что и приводит к цикличному переписыванию на WSUS сведений о новых клиентах.

Информация об уникальном идентификаторе клиента WSUS оказалась идентичной в реестре на всех новых компьютерах из этой поставки.

WSUS SusClientId Registry

Сверив SID на этих компьютерах, и убедившись в его идентичности, стало понятно, что «ноги растут» из некорректного разлива образа ОС.

PsGetSID

Осознавать то, что один из крупнейших мировых вендоров позволяет себе и сегодня такие промахи, конечно неприятно, учитывая то, что степень фрустрации при этом сгущается ещё и воспоминаниями о Double UUID.

Описанию проблемы на WSUS с клиентами с идентичными SusClientId посвящена статья KB903262 — A Windows 2000-based, Windows Server 2003-based, or Windows XP-based computer that was set up by using a Windows 2000, Windows Server 2003, or Windows XP image does not appear in the WSUS console. Исходя из описанных в ней инструкций, мы можем создать пакетный файл, с помощью которого выполним регенерацию SusClientId и перерегистрацию клиента на WSUS:

rem === Останавливаем службу Windows Update
net stop wuauserv
rem === Удаляем идентификационные данные клиента Windows Update
reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v PingID /f
reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v AccountDomainSid /f
reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v SusClientId /f
reg delete HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v SusClientIDValidation /f
rem === Удаляем файловый кэш клиента Windows Update
del /f /s /q %windir%\SoftwareDistribution*
rem === Запускаем службу Windows Update
net start wuauserv
rem === Вызываем форсированную перерегистрацию клиента Windows Update
wuauclt.exe /resetauthorization /detectnow

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

Для того чтобы избежать подобной проблемы, при подготовке образа для развертывания ОС Windows перед выполнением «запаковки» ОС с помощью средства Sysprep, нужно создать файл Sysprep.inf в каталоге с файлом Sysprep.exe с следующим содержанием:

[GuiRunOnce]

Command0="reg.exe delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v PingID /f"
Command1="reg.exe delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v AccountDomainSid /f"
Command2="reg.exe delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v SusClientId /f"
Command3="reg.exe delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate /v SusClientIDValidation /f"

Дополнительные источники информации:

  • The WSUS Support Team Blog — Resolving the duplicate SUSClientID issue, or “Why don’t all my clients show up in the WSUS console?”
  • TechNet Forum — WSUS — Полезные советы

Время на прочтение2 мин

Количество просмотров33K

Клиенты WSUS не хотят обновляться после смены сервера?
Тогда мы идем к вам. (С)

У всех бывали ситуации, когда что-нибудь переставало работать. В данной статье речь пойдет о WSUS (более подробную информации о WSUS можно получить здесь и здесь). А точнее о том, как заставить клиентов WSUS (т.е. наши с вами компьютеры) заново получать обновления после переноса или восстановления существующего сервера обновлений.

Итак, ситуация следующая

Сдох сервер WSUS. Точнее RAID-контроллер аж 2000 года выпуска. Но радости этот факт не прибавил. После непродолжительной возни (с попытками восстановить RAID, загубленный помирающим контроллером), было принято решение

послать все

развернуть новый WSUS-сервер.

В итоге мы получили работающий WSUS, на который почему-то не коннектились клиенты.
Моменты: WSUS привязан с FQDN через внутренний DNS-сервер, WSUS-сервер прописан в групповых политиках и распространяется на клиентов через AD, настройки для сервера по-умолчанию, перед началом всех действий обновите сам WSUS и выполните синхронизацию обновлений.

После анализа ситуации, было выявлено несколько ключевым моментов

  1. Клинч клиента (речь о wuauclt) при попытке соединиться с SID старого сервера WSUS.
  2. Проблема с неустановленными обновлениями, скачанными со старого WSUS-сервера.
  3. Парковка служб влияющих на работу wuauclt (речь о wuauserv, bits и cryptsvc). Парковка произошла по разным причинам, которые детально не анализировались.

В итоге все решение вылилось в маленький скрипт, который распространяется групповыми политиками через AD или собственными руками (и ногами). Скрипт использует наиболее безопасный вариант починки и не приносил ни одного негативного результата уже на протяжении полугода использования.

Опишу, что делается (для особо любопытных)

Паркуем службу сервера обновлений, чистим дескриптор безопасности службы связи с WSUS, удаляем имеющиеся обновления от предыдущего WSUS, чистим реестр от упоминаний о предыдущем WSUS, стартуем службы автоматического обновления (wuauserv), фоновую интеллектуальную службу передачи (bits) и службу криптографии (cryptsvc), в самом конце принудительно стукаемся в WSUS с обнулением авторизации, обнаружением нового WSUS и генерацией отчета на сервер.

И как всегда: все действия описанные выше и ниже вы выполняете на свой страх и риск. Пожалуйста, удостоверьтесь в том что все необходимые данные сохранены до выполнения скрипта.

Скрипт

net stop wuauserv
sc sdset wuauserv D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)
del /f /s /q %windir%\SoftwareDistribution\download\*.*
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 && net start bits && net start cryptsvc
wuauclt /resetauthorization /detectnow /reportnow

<#

.SYNOPSIS

Reset-WindowsUpdate.ps1 — Resets the Windows Update components

.DESCRIPTION

This script will reset all of the Windows Updates components to DEFAULT SETTINGS.

.OUTPUTS

Results are printed to the console. Future releases will support outputting to a log file.

.NOTES

Written by: Ryan Nemeth

Find me on:

* My Blog: http://www.geekyryan.com

* Twitter: https://twitter.com/geeky_ryan

* LinkedIn: https://www.linkedin.com/in/ryan-nemeth-b0b1504b/

* Github: https://github.com/rnemeth90

* TechNet: https://social.technet.microsoft.com/profile/ryan%20nemeth/

Change Log

V1.00, 05/21/2015 — Initial version

V1.10, 09/22/2016 — Fixed bug with call to sc.exe

V1.20, 11/13/2017 — Fixed environment variables

#>

$arch = Get-WMIObject Class Win32_Processor ComputerName LocalHost | Select-Object AddressWidth

Write-Host «1. Stopping Windows Update Services…«

Stop-Service Name BITS

Stop-Service Name wuauserv

Stop-Service Name appidsvc

Stop-Service Name cryptsvc

Write-Host «2. Remove QMGR Data file…«

Remove-Item «$env:allusersprofile\Application Data\Microsoft\Network\Downloader\qmgr*.dat« ErrorAction SilentlyContinue

Write-Host «3. Renaming the Software Distribution and CatRoot Folder…«

Rename-Item $env:systemroot\SoftwareDistribution SoftwareDistribution.bak ErrorAction SilentlyContinue

Rename-Item $env:systemroot\System32\Catroot2 catroot2.bak ErrorAction SilentlyContinue

Write-Host «4. Removing old Windows Update log…«

Remove-Item $env:systemroot\WindowsUpdate.log ErrorAction SilentlyContinue

Write-Host «5. Resetting the Windows Update Services to defualt settings…«

«sc.exe sdset bits D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)«

«sc.exe sdset wuauserv D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)«

Set-Location $env:systemroot\system32

Write-Host «6. Registering some DLLs…«

regsvr32.exe /s atl.dll

regsvr32.exe /s urlmon.dll

regsvr32.exe /s mshtml.dll

regsvr32.exe /s shdocvw.dll

regsvr32.exe /s browseui.dll

regsvr32.exe /s jscript.dll

regsvr32.exe /s vbscript.dll

regsvr32.exe /s scrrun.dll

regsvr32.exe /s msxml.dll

regsvr32.exe /s msxml3.dll

regsvr32.exe /s msxml6.dll

regsvr32.exe /s actxprxy.dll

regsvr32.exe /s softpub.dll

regsvr32.exe /s wintrust.dll

regsvr32.exe /s dssenh.dll

regsvr32.exe /s rsaenh.dll

regsvr32.exe /s gpkcsp.dll

regsvr32.exe /s sccbase.dll

regsvr32.exe /s slbcsp.dll

regsvr32.exe /s cryptdlg.dll

regsvr32.exe /s oleaut32.dll

regsvr32.exe /s ole32.dll

regsvr32.exe /s shell32.dll

regsvr32.exe /s initpki.dll

regsvr32.exe /s wuapi.dll

regsvr32.exe /s wuaueng.dll

regsvr32.exe /s wuaueng1.dll

regsvr32.exe /s wucltui.dll

regsvr32.exe /s wups.dll

regsvr32.exe /s wups2.dll

regsvr32.exe /s wuweb.dll

regsvr32.exe /s qmgr.dll

regsvr32.exe /s qmgrprxy.dll

regsvr32.exe /s wucltux.dll

regsvr32.exe /s muweb.dll

regsvr32.exe /s wuwebv.dll

Write-Host «7) Removing WSUS client settings…«

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

Write-Host « 8) Resetting the WinSock…«

netsh winsock reset

netsh winhttp reset proxy

Write-Host «9) Delete all BITS jobs…«

Get-BitsTransfer | Remove-BitsTransfer

Write-Host «10) Attempting to install the Windows Update Agent…«

if($arch -eq 64){

wusa Windows8RTKB2937636x64 /quiet

}

else{

wusa Windows8RTKB2937636x86 /quiet

}

Write-Host «11) Starting Windows Update Services…«

Start-Service Name BITS

Start-Service Name wuauserv

Start-Service Name appidsvc

Start-Service Name cryptsvc

Write-Host «12) Forcing discovery…«

wuauclt /resetauthorization /detectnow

Write-Host «Process complete. Please reboot your computer.«

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Звук только через hdmi windows 10
  • Windows не может найти программу очистки диска
  • Windows 10 видит не все компьютеры в локальной сети
  • Jre 8u201 windows x64 exe
  • Sshfs для windows 10