function Invoke-WPFUpdatesdisable { <# .SYNOPSIS Disables Windows Update .NOTES Disabling Windows Update is not recommended. This is only for advanced users who know what they are doing. #> $confirmation = Show-WinUtilMessage ` -Message "Disabling Windows Update stops update services, disables scheduled tasks, and clears downloaded update files. Security updates will not be installed until defaults are restored. Continue?" ` -Title "Disable Windows Update?" ` -Button "YesNo" ` -Icon "Warning" if ($confirmation -ne "Yes") { Write-WinUtilLog -Component "Updates" -Message "Windows Update disable workflow cancelled." return } Write-WinUtilLog -Component "Updates" -Message "Disabling Windows Update settings." Write-Host "Configuring registry settings..." -ForegroundColor Yellow Write-WinUtilLog -Component "Updates" -Message "Configuring Windows Update registry policy values for disable mode." New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Force Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "NoAutoUpdate" -Type DWord -Value 1 Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "AUOptions" -Type DWord -Value 1 New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config" -Force Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config" -Name "DODownloadMode" -Type DWord -Value 0 foreach ($serviceName in @("BITS", "wuauserv", "UsoSvc")) { Write-Host "Stopping and disabling $serviceName service." Write-WinUtilLog -Component "Updates" -Message "Stopping and disabling $serviceName service." Stop-Service -Name $serviceName -Force -ErrorAction SilentlyContinue Set-Service -Name $serviceName -StartupType Disabled } Remove-Item -Path "C:\Windows\SoftwareDistribution\*" -Recurse -Force -ErrorAction SilentlyContinue Write-Host "Cleared SoftwareDistribution folder." Write-WinUtilLog -Component "Updates" -Message "Cleared SoftwareDistribution folder." Write-Host "Disabling update related scheduled tasks..." -ForegroundColor Yellow Write-WinUtilLog -Component "Updates" -Message "Disabling update related scheduled tasks." $Tasks = '\Microsoft\Windows\InstallService\*', '\Microsoft\Windows\UpdateOrchestrator\*', '\Microsoft\Windows\UpdateAssistant\*', '\Microsoft\Windows\WaaSMedic\*', '\Microsoft\Windows\WindowsUpdate\*', '\Microsoft\WindowsUpdate\*' foreach ($Task in $Tasks) { Get-ScheduledTask -TaskPath $Task -ErrorAction SilentlyContinue | Disable-ScheduledTask -ErrorAction SilentlyContinue } Write-Host "=================================" -ForegroundColor Green Write-Host "--- Windows Update Is Disabled ---" -ForegroundColor Green Write-Host "=================================" -ForegroundColor Green Write-Host "Note: You must restart your system in order for all changes to take effect." -ForegroundColor Yellow Write-WinUtilLog -Component "Updates" -Message "Windows Update disable workflow completed. Restart required." }