NOTE: The following code may be out-of-date compared to GitHub, but is all pulled from GitHub every hour or so.
When shortlinks are used (filename as subdomain), code used by PowerShell and other interactions with this site is served from GitHub.
(Right-click -> Download the button below to save the file)
# Copyright (C) 2026 TroubleChute (Wesley Pyburn)
# Licensed under the GNU General Public License v3.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.gnu.org/licenses/gpl-3.0.en.html
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
#
# ----------------------------------------
# This script:
# 1. Elevates to Administrator by default
# 2. Optionally runs the fixer as System (higher than Admin) using PSExec
# 3. Undo changes possibly made by https://github.com/tsgrgo/windows-update-disabler
# 4. Undo changes possibly made by Privacy.sexy
# 5. Run the Chris Titus Tech Windows Update - Reset script from: https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/Update.md
# ----------------------------------------
Write-Host "--------------------------------------------" -ForegroundColor Cyan
Write-Host "Welcome to TroubleChute's Windows Update fixer!" -ForegroundColor Cyan
Write-Host "[Version 2026-05-11]" -ForegroundColor Cyan
Write-Host "`nThis script is provided AS-IS without warranty of any kind. See https://tc.ht/privacy & https://tc.ht/terms."
Write-Host "Consider supporting these install scripts: https://tc.ht/support" -ForegroundColor Green
Write-Host "--------------------------------------------`n`n" -ForegroundColor Cyan
Set-Variable ProgressPreference SilentlyContinue # Remove annoying yellow progress bars when doing Invoke-WebRequest for this session
function Write-Step {
param(
[Parameter(Mandatory = $true)]
[string]$Message,
[ConsoleColor]$Color = [ConsoleColor]::Cyan
)
Write-Host "==> $Message" -ForegroundColor $Color
}
function Write-StepDetail {
param(
[Parameter(Mandatory = $true)]
[string]$Message
)
Write-Host " -> $Message" -ForegroundColor DarkCyan
}
function Write-StepSuccess {
param(
[Parameter(Mandatory = $true)]
[string]$Message
)
Write-Host "[OK] $Message" -ForegroundColor Green
}
$isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
$adminRelaunchAttempted = $env:TCHT_FIXUPDATES_ADMIN_ATTEMPTED -eq '1'
if (-not $isAdmin -and -not $adminRelaunchAttempted) {
Write-Step 'Requesting administrator access' -Color Yellow
Write-Host 'Windows may show a permission prompt next.' -ForegroundColor Gray
$adminCommand = '$env:TCHT_FIXUPDATES_ADMIN_ATTEMPTED=''1''; Invoke-Expression (Invoke-RestMethod ''https://fixupdates.tc.ht'')'
try {
Start-Process -FilePath 'powershell.exe' -Verb RunAs -ArgumentList @(
'-NoProfile'
'-ExecutionPolicy', 'Bypass'
'-Command', $adminCommand
)
return
}
catch {
Write-Warning 'Administrator approval was cancelled or could not be started. Continuing without administrator rights.'
}
}
elseif (-not $isAdmin -and $adminRelaunchAttempted) {
Write-Warning 'Administrator relaunch was already attempted once. Continuing without administrator rights.'
}
Invoke-Expression (Invoke-RestMethod 'https://Import-RemoteFunction.tc.ht') # Get RemoteFunction importer
Import-RemoteFunction("Get-GeneralFuncs.tc.ht")
$currentIdentity = [Security.Principal.WindowsIdentity]::GetCurrent()
$isSystem = $currentIdentity.User.Value -eq 'S-1-5-18'
$systemRelaunchAttempted = $env:TCHT_FIXUPDATES_SYSTEM_ATTEMPTED -eq '1'
if ($isSystem) {
Write-StepSuccess 'Running as NT AUTHORITY\SYSTEM'
}
elseif ($isAdmin -and $systemRelaunchAttempted) {
Write-Warning 'Higher permissions were already attempted once. Continuing in administrator mode.'
}
elseif ($isAdmin) {
Write-Host ''
Write-Step 'Administrator mode is ready'
Write-Host 'Most people should just press Enter and continue.' -ForegroundColor Gray
Write-Host 'If this fixer has not worked well for you before, you can press Y to try a deeper repair with higher permissions.' -ForegroundColor Gray
$trySystem = Read-Host 'Press Enter to continue, or type Y for higher permissions'
if ($trySystem -match '^(?i)y(?:es)?