2023-03-07 14:28:00 -06:00
|
|
|
function Invoke-WPFFixesUpdate {
|
|
|
|
|
|
|
|
<#
|
2023-10-19 17:12:55 -05:00
|
|
|
|
|
|
|
.SYNOPSIS
|
|
|
|
Performs various tasks in an attempt to repair Windows Update
|
|
|
|
|
2023-03-07 14:28:00 -06:00
|
|
|
#>
|
|
|
|
|
2023-10-19 17:12:55 -05:00
|
|
|
# Reset Windows Update Script - reregister dlls, services, and remove registry entries
|
2023-07-15 10:42:11 -05:00
|
|
|
Write-Host "1. Stopping Windows Update Services..."
|
2023-03-07 14:28:00 -06:00
|
|
|
Stop-Service -Name BITS
|
|
|
|
Stop-Service -Name wuauserv
|
|
|
|
Stop-Service -Name appidsvc
|
|
|
|
Stop-Service -Name cryptsvc
|
2023-07-15 10:42:11 -05:00
|
|
|
Write-Host "2. Remove QMGR Data file..."
|
2023-03-07 14:28:00 -06:00
|
|
|
Remove-Item "$env:allusersprofile\Application Data\Microsoft\Network\Downloader\qmgr*.dat" -ErrorAction SilentlyContinue
|
|
|
|
|
2023-07-15 10:42:11 -05:00
|
|
|
Write-Host "3. Renaming the Software Distribution and CatRoot Folder..."
|
2023-03-07 14:28:00 -06:00
|
|
|
Rename-Item $env:systemroot\SoftwareDistribution SoftwareDistribution.bak -ErrorAction SilentlyContinue
|
|
|
|
Rename-Item $env:systemroot\System32\Catroot2 catroot2.bak -ErrorAction SilentlyContinue
|
|
|
|
|
2023-07-15 10:42:11 -05:00
|
|
|
Write-Host "4. Removing old Windows Update log..."
|
2023-03-07 14:28:00 -06:00
|
|
|
Remove-Item $env:systemroot\WindowsUpdate.log -ErrorAction SilentlyContinue
|
|
|
|
|
2023-07-15 10:42:11 -05:00
|
|
|
Write-Host "5. Resetting the Windows Update Services to default settings..."
|
|
|
|
Start-Process -NoNewWindow -FilePath "sc.exe" -ArgumentList "sdset", "bits", "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)"
|
|
|
|
Start-Process -NoNewWindow -FilePath "sc.exe" -ArgumentList "sdset", "wuauserv", "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)"
|
2023-03-07 14:28:00 -06:00
|
|
|
Set-Location $env:systemroot\system32
|
|
|
|
|
2023-07-15 10:42:11 -05:00
|
|
|
Write-Host "6. Registering some DLLs..."
|
|
|
|
$DLLs = @(
|
|
|
|
"atl.dll", "urlmon.dll", "mshtml.dll", "shdocvw.dll", "browseui.dll",
|
|
|
|
"jscript.dll", "vbscript.dll", "scrrun.dll", "msxml.dll", "msxml3.dll",
|
|
|
|
"msxml6.dll", "actxprxy.dll", "softpub.dll", "wintrust.dll", "dssenh.dll",
|
|
|
|
"rsaenh.dll", "gpkcsp.dll", "sccbase.dll", "slbcsp.dll", "cryptdlg.dll",
|
|
|
|
"oleaut32.dll", "ole32.dll", "shell32.dll", "initpki.dll", "wuapi.dll",
|
|
|
|
"wuaueng.dll", "wuaueng1.dll", "wucltui.dll", "wups.dll", "wups2.dll",
|
|
|
|
"wuweb.dll", "qmgr.dll", "qmgrprxy.dll", "wucltux.dll", "muweb.dll", "wuwebv.dll"
|
|
|
|
)
|
|
|
|
foreach ($dll in $DLLs) {
|
|
|
|
Start-Process -NoNewWindow -FilePath "regsvr32.exe" -ArgumentList "/s", $dll
|
|
|
|
}
|
|
|
|
|
|
|
|
Write-Host "7) Removing WSUS client settings..."
|
|
|
|
if (Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate") {
|
|
|
|
Start-Process -NoNewWindow -FilePath "REG" -ArgumentList "DELETE", "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate", "/v", "AccountDomainSid", "/f"
|
|
|
|
Start-Process -NoNewWindow -FilePath "REG" -ArgumentList "DELETE", "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate", "/v", "PingID", "/f"
|
|
|
|
Start-Process -NoNewWindow -FilePath "REG" -ArgumentList "DELETE", "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate", "/v", "SusClientId", "/f"
|
|
|
|
}
|
|
|
|
|
|
|
|
Write-Host "8) Resetting the WinSock..."
|
|
|
|
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "winsock", "reset"
|
|
|
|
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "winhttp", "reset", "proxy"
|
|
|
|
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "int", "ip", "reset"
|
|
|
|
|
|
|
|
Write-Host "9) Delete all BITS jobs..."
|
2023-03-07 14:28:00 -06:00
|
|
|
Get-BitsTransfer | Remove-BitsTransfer
|
|
|
|
|
2023-07-15 10:42:11 -05:00
|
|
|
Write-Host "10) Attempting to install the Windows Update Agent..."
|
|
|
|
If ([System.Environment]::Is64BitOperatingSystem) {
|
|
|
|
Start-Process -NoNewWindow -FilePath "wusa" -ArgumentList "Windows8-RT-KB2937636-x64", "/quiet"
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
Start-Process -NoNewWindow -FilePath "wusa" -ArgumentList "Windows8-RT-KB2937636-x86", "/quiet"
|
|
|
|
}
|
2023-03-07 14:28:00 -06:00
|
|
|
|
2023-07-15 10:42:11 -05:00
|
|
|
Write-Host "11) Starting Windows Update Services..."
|
2023-03-07 14:28:00 -06:00
|
|
|
Start-Service -Name BITS
|
|
|
|
Start-Service -Name wuauserv
|
|
|
|
Start-Service -Name appidsvc
|
|
|
|
Start-Service -Name cryptsvc
|
|
|
|
|
2023-07-15 10:42:11 -05:00
|
|
|
Write-Host "12) Forcing discovery..."
|
|
|
|
Start-Process -NoNewWindow -FilePath "wuauclt" -ArgumentList "/resetauthorization", "/detectnow"
|
|
|
|
|
2023-03-07 14:28:00 -06:00
|
|
|
|
|
|
|
Write-Host "Process complete. Please reboot your computer."
|
|
|
|
|
|
|
|
$ButtonType = [System.Windows.MessageBoxButton]::OK
|
|
|
|
$MessageboxTitle = "Reset Windows Update "
|
|
|
|
$Messageboxbody = ("Stock settings loaded.`n Please reboot your computer")
|
|
|
|
$MessageIcon = [System.Windows.MessageBoxImage]::Information
|
|
|
|
|
|
|
|
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
|
2023-10-19 17:12:55 -05:00
|
|
|
Write-Host "==============================================="
|
|
|
|
Write-Host "-- Reset All Windows Update Settings to Stock -"
|
|
|
|
Write-Host "==============================================="
|
2023-03-07 14:28:00 -06:00
|
|
|
}
|