mirror of
https://github.com/ChrisTitusTech/winutil
synced 2026-02-04 15:00:09 +00:00
Update-docs (#3889)
* Update _index.md * Rename AH.md to Activity.md * Update Activity.md * Update Activity.md * Update Activity.md * Update ConsumerFeatures.md * Update and rename DVR.md to GameDVR.md * Update DeleteTempFiles.md * Delete docs/content/dev/tweaks/Essential-Tweaks/DisableRecall.md * Update _index.md * Update _index.md * Update DiskCleanup.md * Update EdgeDebloat.md * Update Activity.md * Update EndTaskOnTaskbar.md * Update ConsumerFeatures.md * Update GameDVR.md * Update and rename Hiber.md to Hibernation.md * Delete docs/content/dev/tweaks/Essential-Tweaks/Home.md * Update IPv46.md * Update LaptopHibernation.md * Update and rename Loc.md to Location.md * Delete docs/content/dev/tweaks/Essential-Tweaks/Powershell7.md * Update Powershell7Tele.md * Update RestorePoint.md * Update Services.md * Update Storage.md * Update Tele.md * Rename Tele.md to Telemetry.md * Delete docs/content/dev/tweaks/Essential-Tweaks/Wifi.md * Update _index.md * Update _index.md * Update _index.md * Update _index.md * Update and rename RemoveUltPerf.md to RemoveProfile.md * Delete docs/content/dev/tweaks/Performance-Plans/AddUltPerf.md * Rename RemoveProfile.md to Profile.md * Update _index.md * Update _index.md * Update _index.md * Update BingSearch.md * Update DarkMode.md * Update DetailedBSoD.md * Update HiddenFiles.md * Update MouseAcceleration.md * Update NumLock.md * Update ShowExt.md * Update SnapFlyout.md * Update SnapSuggestion.md * Update SnapWindow.md * Update StickyKeys.md * Update TaskView.md * Update TaskbarAlignment.md * Update TaskbarSearch.md * Update TaskbarWidgets.md * Update VerboseLogon.md * Update _index.md * Update _index.md * Update _index.md * Update BlockAdobeNet.md * Update DeBloat.md * Delete docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/DebloatAdobe.md * Update DisableBGapps.md * Update DisableFSO.md * Delete docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/DisableLMS1.md * Update DisableNotifications.md * Update and rename Disableipsix.md to DisableIPv6.md * Update Display.md * Update OOSUbutton.md * Delete docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/RemoveCopilot.md * Update and rename RemoveEdge.md to EdgeUninstall.md * Update and rename RemoveHomeGallery.md to RemoveHome.md * Create RemoveGallery.md * Delete docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/RemoveOnedrive.md * Update RightClickMenu.md * Update Teredo.md * Update UTC.md * Update Undoall.md * Update button.md * Delete docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/changedns.md * Delete docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/button.md * Delete docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/Undoall.md * Update _index.md * Update _index.md * Update _index.md * Update _index.md * Update DisableLegacyRecovery.md * Delete docs/content/dev/features/Features/DisableSearchSuggestions.md * Update EnableLegacyRecovery.md * Update DisableLegacyRecovery.md * Delete docs/content/dev/features/Features/EnableSearchSuggestions.md * Delete docs/content/dev/features/Features/Install.md * Update RegBackup.md * Update Sandbox.md * Update dotnet.md * Update hyperv.md * Update legacymedia.md * Update nfs.md * Update wsl.md * Update _index.md * Update _index.md * Update _index.md * Update Autologin.md * Update and rename DISM.md to CorruptionScan.md * Update Network.md * Update RunAdobeCCCleanerTool.md * Update Update.md * Update Winget.md * Update _index.md * Update _index.md * Update _index.md * Update control.md * Update network.md * Update power.md * Update printer.md * Update region.md * Update sound.md * Update system.md * Update user.md * Update _index.md * Update _index.md * Update _index.md * Delete docs/assets/images/Compile.png * Add files via upload * Update KnownIssues.md * Update _index.md * Update _index.md * Update _index.md * Update _index.md * Update _index.md * Update _index.md * Update _index.md * Delete docs/archetypes directory * Delete docs/i18n directory * Delete docs/assets/images/Install/Installation-completion.png * Delete docs/assets/images/Install/track-progress.png * Delete docs/assets/images/microwin/dism++_drivercontrol.png * Delete docs/assets/images/microwin/dism++_driverexport.png * Delete docs/assets/images/microwin/dt_activeinst.png * Delete docs/assets/images/microwin/dt_exportdrvs.png * Delete docs/assets/images/microwin/dt_exporttarget.png * Rename microwin-customuser-dark.png to microwin-user-dark.png * Rename microwin-customuser-light.png to microwin-user-light.png * Delete docs/assets/images/microwin/microwin-downloader-dark.png * Delete docs/assets/images/microwin/microwin-downloader-light.png * Delete docs/assets/images/microwin/microwin-screen-dark.png * Delete docs/assets/images/microwin/microwin-screen-full-dark.png * Delete docs/assets/images/microwin/microwin-screen-full-light.png * Delete docs/assets/images/microwin/microwin-screen-light.png * Delete docs/assets/images/microwin/microwin-skuselect-dark.png * Delete docs/assets/images/microwin/microwin-skuselect-light.png * Delete docs/assets/images/microwin/microwin-user-dark.png * Delete docs/assets/images/microwin/microwin-user-light.png * Delete docs/assets/images/microwin/rapr_folderpicker.png * Delete docs/assets/images/microwin/rapr_menu.png * Create 4 * Add files via upload * Delete docs/assets/images/microwin/4 * Delete docs/assets/images/microwin/Configure-Windows-ISO.png * Add files via upload * Delete docs/assets/images/microwin/Configure-Windows-ISO.png * Add files via upload * Create default.md * Fix formatting in automation user guide * Fix typo in Edge uninstall link text * Fix typo in DeBloat.md description Corrected a typo in the description of the WPFTweaksDeBloat section. * Update links for Delete Temp Files and Activity History * fix bad urls * update typos --------- Co-authored-by: Chris Titus <contact@christitus.com>
This commit is contained in:
@@ -1,36 +1,6 @@
|
||||
# Set Up Autologin
|
||||
|
||||
Last Updated: 2024-08-07
|
||||
|
||||
|
||||
> [!NOTE]
|
||||
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
|
||||
|
||||
|
||||
<!-- BEGIN CUSTOM CONTENT -->
|
||||
|
||||
<!-- END CUSTOM CONTENT -->
|
||||
|
||||
<details>
|
||||
<summary>Preview Code</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"Content": "Set Up Autologin",
|
||||
"category": "Fixes",
|
||||
"Order": "a040_",
|
||||
"panel": "1",
|
||||
"Type": "Button",
|
||||
"ButtonWidth": "300",
|
||||
"link": "https://christitustech.github.io/Winutil/dev/features/Fixes/Autologin"
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
## Function: Invoke-WPFPanelAutologin
|
||||
|
||||
```powershell
|
||||
function Invoke-WPFPanelAutologin {
|
||||
<#
|
||||
|
||||
@@ -43,14 +13,4 @@ function Invoke-WPFPanelAutologin {
|
||||
Invoke-WebRequest -Uri "https://live.sysinternals.com/Autologon.exe" -OutFile "$env:temp\autologin.exe"
|
||||
cmd /c "$env:temp\autologin.exe" /accepteula
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
<!-- BEGIN SECOND CUSTOM CONTENT -->
|
||||
|
||||
<!-- END SECOND CUSTOM CONTENT -->
|
||||
|
||||
|
||||
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/feature.json)
|
||||
|
||||
|
||||
141
docs/content/dev/features/Fixes/CorruptionScan.md
Normal file
141
docs/content/dev/features/Fixes/CorruptionScan.md
Normal file
@@ -0,0 +1,141 @@
|
||||
# System Corruption Scan
|
||||
|
||||
```json
|
||||
function Invoke-WPFSystemRepair {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Checks for system corruption using Chkdsk, SFC, and DISM
|
||||
|
||||
.DESCRIPTION
|
||||
1. Chkdsk - Fixes disk and filesystem corruption
|
||||
2. SFC Run 1 - Fixes system file corruption, and fixes DISM if it was corrupted
|
||||
3. DISM - Fixes system image corruption, and fixes SFC's system image if it was corrupted
|
||||
4. SFC Run 2 - Fixes system file corruption, this time with an almost guaranteed uncorrupted system image
|
||||
#>
|
||||
|
||||
function Invoke-Chkdsk {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Runs chkdsk on the system drive
|
||||
.DESCRIPTION
|
||||
Chkdsk /Scan - Runs an online scan on the system drive, attempts to fix any corruption, and queues other corruption for fixing on reboot
|
||||
#>
|
||||
param(
|
||||
[int]$parentProgressId = 0
|
||||
)
|
||||
|
||||
Write-Progress -Id 1 -ParentId $parentProgressId -Activity $childProgressBarActivity -Status "Running chkdsk..." -PercentComplete 0
|
||||
$oldpercent = 0
|
||||
# 2>&1 redirects stdout, allowing iteration over the output
|
||||
chkdsk.exe /scan /perf 2>&1 | ForEach-Object {
|
||||
Write-Debug $_
|
||||
# Regex to match the total percentage regardless of windows locale (it's always the second percentage in the status output)
|
||||
if ($_ -match "%.*?(\d+)%") {
|
||||
[int]$percent = $matches[1]
|
||||
if ($percent -gt $oldpercent) {
|
||||
Write-Progress -Id 1 -Activity $childProgressBarActivity -Status "Running chkdsk... ($percent%)" -PercentComplete $percent
|
||||
$oldpercent = $percent
|
||||
}
|
||||
}
|
||||
}
|
||||
Write-Progress -Id 1 -Activity $childProgressBarActivity -Status "chkdsk Completed" -PercentComplete 100 -Completed
|
||||
}
|
||||
|
||||
function Invoke-SFC {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Runs sfc on the system drive
|
||||
.DESCRIPTION
|
||||
SFC /ScanNow - Performs a scan of the system files and fixes any corruption
|
||||
.NOTES
|
||||
ErrorActionPreference is set locally within a script block & {...} to isolate their effects.
|
||||
ErrorActionPreference suppresses false errors caused by sfc.exe output redirection.
|
||||
A bug in SFC output buffering causes progress updates to appear in chunks when redirecting output
|
||||
#>
|
||||
param(
|
||||
[int]$parentProgressId = 0
|
||||
)
|
||||
& {
|
||||
$ErrorActionPreference = "SilentlyContinue"
|
||||
Write-Progress -Id 1 -ParentId $parentProgressId -Activity $childProgressBarActivity -Status "Running SFC..." -PercentComplete 0
|
||||
$oldpercent = 0
|
||||
sfc.exe /scannow 2>&1 | ForEach-Object {
|
||||
Write-Debug $_
|
||||
if ($_ -ne "") {
|
||||
# sfc.exe /scannow outputs unicode characters, so we directly remove null characters for optimization
|
||||
$utf8line = $_ -replace "`0", ""
|
||||
if ($utf8line -match "(\d+)\s*%") {
|
||||
[int]$percent = $matches[1]
|
||||
if ($percent -gt $oldpercent) {
|
||||
Write-Progress -Id 1 -Activity $childProgressBarActivity -Status "Running SFC... ($percent%)" -PercentComplete $percent
|
||||
$oldpercent = $percent
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Write-Progress -Id 1 -Activity $childProgressBarActivity -Status "SFC Completed" -PercentComplete 100 -Completed
|
||||
}
|
||||
}
|
||||
|
||||
function Invoke-DISM {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Runs DISM on the system drive
|
||||
.DESCRIPTION
|
||||
DISM - Fixes system image corruption, and fixes SFC's system image if it was corrupted
|
||||
/Online - Fixes the currently running system image
|
||||
/Cleanup-Image - Performs cleanup operations on the image, could remove some unneeded temporary files
|
||||
/Restorehealth - Performs a scan of the image and fixes any corruption
|
||||
#>
|
||||
param(
|
||||
[int]$parentProgressId = 0
|
||||
)
|
||||
Write-Progress -Id 1 -ParentId $parentProgressId -Activity $childProgressBarActivity -Status "Running DISM..." -PercentComplete 0
|
||||
$oldpercent = 0
|
||||
DISM /Online /Cleanup-Image /RestoreHealth | ForEach-Object {
|
||||
Write-Debug $_
|
||||
# Filter for lines that contain a percentage that is greater than the previous one
|
||||
if ($_ -match "(\d+)[.,]\d+%") {
|
||||
[int]$percent = $matches[1]
|
||||
if ($percent -gt $oldpercent) {
|
||||
# Update the progress bar
|
||||
Write-Progress -Id 1 -Activity $childProgressBarActivity -Status "Running DISM... ($percent%)" -PercentComplete $percent
|
||||
$oldpercent = $percent
|
||||
}
|
||||
}
|
||||
}
|
||||
Write-Progress -Id 1 -Activity $childProgressBarActivity -Status "DISM Completed" -PercentComplete 100 -Completed
|
||||
}
|
||||
|
||||
try {
|
||||
Set-WinUtilTaskbaritem -state "Indeterminate" -overlay "logo"
|
||||
|
||||
$childProgressBarActivity = "Scanning for corruption"
|
||||
Write-Progress -Id 0 -Activity "Repairing Windows" -PercentComplete 0
|
||||
# Step 1: Run chkdsk to fix disk and filesystem corruption before proceeding with system file repairs
|
||||
Invoke-Chkdsk
|
||||
Write-Progress -Id 0 -Activity "Repairing Windows" -PercentComplete 25
|
||||
|
||||
# Step 2: Run SFC to fix system file corruption and ensure DISM can operate correctly
|
||||
Invoke-SFC
|
||||
Write-Progress -Id 0 -Activity "Repairing Windows" -PercentComplete 50
|
||||
|
||||
# Step 3: Run DISM to repair the system image, which SFC relies on for accurate repairs
|
||||
Invoke-DISM
|
||||
Write-Progress -Id 0 -Activity "Repairing Windows" -PercentComplete 75
|
||||
|
||||
# Step 4: Run SFC again to ensure system files are repaired using the now-fixed system image
|
||||
Invoke-SFC
|
||||
Write-Progress -Id 0 -Activity "Repairing Windows" -PercentComplete 100 -Completed
|
||||
|
||||
Set-WinUtilTaskbaritem -state "None" -overlay "checkmark"
|
||||
} catch {
|
||||
Write-Error "An error occurred while repairing the system: $_"
|
||||
Set-WinUtilTaskbaritem -state "Error" -overlay "warning"
|
||||
} finally {
|
||||
Write-Host "==> Finished System Repair"
|
||||
Set-WinUtilTaskbaritem -state "None" -overlay "checkmark"
|
||||
}
|
||||
|
||||
}
|
||||
```
|
||||
@@ -1,74 +0,0 @@
|
||||
# System Corruption Scan
|
||||
|
||||
Last Updated: 2024-08-07
|
||||
|
||||
|
||||
> [!NOTE]
|
||||
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
|
||||
|
||||
|
||||
<!-- BEGIN CUSTOM CONTENT -->
|
||||
|
||||
<!-- END CUSTOM CONTENT -->
|
||||
|
||||
<details>
|
||||
<summary>Preview Code</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"Content": "System Corruption Scan",
|
||||
"category": "Fixes",
|
||||
"panel": "1",
|
||||
"Order": "a043_",
|
||||
"Type": "Button",
|
||||
"ButtonWidth": "300",
|
||||
"link": "https://christitustech.github.io/Winutil/dev/features/Fixes/DISM"
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
## Function: Invoke-WPFPanelDISM
|
||||
|
||||
```powershell
|
||||
function Invoke-WPFPanelDISM {
|
||||
<#
|
||||
|
||||
.SYNOPSIS
|
||||
Checks for system corruption using Chkdsk, SFC, and DISM
|
||||
|
||||
.DESCRIPTION
|
||||
1. Chkdsk - Fixes disk and filesystem corruption
|
||||
2. SFC Run 1 - Fixes system file corruption, and fixes DISM if it was corrupted
|
||||
3. DISM - Fixes system image corruption, and fixes SFC's system image if it was corrupted
|
||||
4. SFC Run 2 - Fixes system file corruption, this time with an almost guaranteed uncorrupted system image
|
||||
|
||||
.NOTES
|
||||
Command Arguments:
|
||||
1. Chkdsk
|
||||
/Scan - Runs an online scan on the system drive, attempts to fix any corruption, and queues other corruption for fixing on reboot
|
||||
2. SFC
|
||||
/ScanNow - Performs a scan of the system files and fixes any corruption
|
||||
3. DISM - Fixes system image corruption, and fixes SFC's system image if it was corrupted
|
||||
/Online - Fixes the currently running system image
|
||||
/Cleanup-Image - Performs cleanup operations on the image, could remove some unneeded temporary files
|
||||
/Restorehealth - Performs a scan of the image and fixes any corruption
|
||||
|
||||
#>
|
||||
Start-Process PowerShell -ArgumentList "Write-Host '(1/4) Chkdsk' -ForegroundColor Green; Chkdsk /scan;
|
||||
Write-Host '`n(2/4) SFC - 1st scan' -ForegroundColor Green; sfc /scannow;
|
||||
Write-Host '`n(3/4) DISM' -ForegroundColor Green; DISM /Online /Cleanup-Image /Restorehealth;
|
||||
Write-Host '`n(4/4) SFC - 2nd scan' -ForegroundColor Green; sfc /scannow;
|
||||
Read-Host '`nPress Enter to Continue'" -verb runas
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
<!-- BEGIN SECOND CUSTOM CONTENT -->
|
||||
|
||||
<!-- END SECOND CUSTOM CONTENT -->
|
||||
|
||||
|
||||
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/feature.json)
|
||||
|
||||
@@ -1,36 +1,6 @@
|
||||
# Reset Network
|
||||
|
||||
Last Updated: 2024-08-07
|
||||
|
||||
|
||||
> [!NOTE]
|
||||
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
|
||||
|
||||
|
||||
<!-- BEGIN CUSTOM CONTENT -->
|
||||
|
||||
<!-- END CUSTOM CONTENT -->
|
||||
|
||||
<details>
|
||||
<summary>Preview Code</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"Content": "Reset Network",
|
||||
"category": "Fixes",
|
||||
"Order": "a042_",
|
||||
"panel": "1",
|
||||
"Type": "Button",
|
||||
"ButtonWidth": "300",
|
||||
"link": "https://christitustech.github.io/Winutil/dev/features/Fixes/Network"
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
## Function: Invoke-WPFFixesNetwork
|
||||
|
||||
```powershell
|
||||
function Invoke-WPFFixesNetwork {
|
||||
<#
|
||||
|
||||
@@ -41,13 +11,20 @@ function Invoke-WPFFixesNetwork {
|
||||
|
||||
Write-Host "Resetting Network with netsh"
|
||||
|
||||
Set-WinUtilTaskbaritem -state "Normal" -value 0.01 -overlay "logo"
|
||||
# Reset WinSock catalog to a clean state
|
||||
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "winsock", "reset"
|
||||
|
||||
Set-WinUtilTaskbaritem -state "Normal" -value 0.35 -overlay "logo"
|
||||
# Resets WinHTTP proxy setting to DIRECT
|
||||
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "winhttp", "reset", "proxy"
|
||||
|
||||
Set-WinUtilTaskbaritem -state "Normal" -value 0.7 -overlay "logo"
|
||||
# Removes all user configured IP settings
|
||||
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "int", "ip", "reset"
|
||||
|
||||
Set-WinUtilTaskbaritem -state "None" -overlay "checkmark"
|
||||
|
||||
Write-Host "Process complete. Please reboot your computer."
|
||||
|
||||
$ButtonType = [System.Windows.MessageBoxButton]::OK
|
||||
@@ -60,14 +37,4 @@ function Invoke-WPFFixesNetwork {
|
||||
Write-Host "-- Network Configuration has been Reset --"
|
||||
Write-Host "=========================================="
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
<!-- BEGIN SECOND CUSTOM CONTENT -->
|
||||
|
||||
<!-- END SECOND CUSTOM CONTENT -->
|
||||
|
||||
|
||||
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/feature.json)
|
||||
|
||||
|
||||
@@ -1,36 +1,6 @@
|
||||
# Remove Adobe Creative Cloud
|
||||
|
||||
Last Updated: 2024-08-07
|
||||
|
||||
|
||||
> [!NOTE]
|
||||
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
|
||||
|
||||
|
||||
<!-- BEGIN CUSTOM CONTENT -->
|
||||
|
||||
<!-- END CUSTOM CONTENT -->
|
||||
|
||||
<details>
|
||||
<summary>Preview Code</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"Content": "Remove Adobe Creative Cloud",
|
||||
"category": "Fixes",
|
||||
"panel": "1",
|
||||
"Order": "a045_",
|
||||
"Type": "Button",
|
||||
"ButtonWidth": "300",
|
||||
"link": "https://christitustech.github.io/Winutil/dev/features/Fixes/RunAdobeCCCleanerTool"
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
## Function: Invoke-WPFRunAdobeCCCleanerTool
|
||||
|
||||
```powershell
|
||||
function Invoke-WPFRunAdobeCCCleanerTool {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
@@ -63,14 +33,4 @@ function Invoke-WPFRunAdobeCCCleanerTool {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
<!-- BEGIN SECOND CUSTOM CONTENT -->
|
||||
|
||||
<!-- END SECOND CUSTOM CONTENT -->
|
||||
|
||||
|
||||
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/feature.json)
|
||||
|
||||
|
||||
@@ -1,36 +1,6 @@
|
||||
# Reset Windows Update
|
||||
|
||||
Last Updated: 2024-08-07
|
||||
|
||||
|
||||
> [!NOTE]
|
||||
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
|
||||
|
||||
|
||||
<!-- BEGIN CUSTOM CONTENT -->
|
||||
|
||||
<!-- END CUSTOM CONTENT -->
|
||||
|
||||
<details>
|
||||
<summary>Preview Code</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"Content": "Reset Windows Update",
|
||||
"category": "Fixes",
|
||||
"panel": "1",
|
||||
"Order": "a041_",
|
||||
"Type": "Button",
|
||||
"ButtonWidth": "300",
|
||||
"link": "https://christitustech.github.io/Winutil/dev/features/Fixes/Update"
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
## Function: Invoke-WPFFixesUpdate
|
||||
|
||||
```powershell
|
||||
function Invoke-WPFFixesUpdate {
|
||||
|
||||
<#
|
||||
@@ -39,19 +9,7 @@ function Invoke-WPFFixesUpdate {
|
||||
Performs various tasks in an attempt to repair Windows Update
|
||||
|
||||
.DESCRIPTION
|
||||
1. (Aggressive Only) Scans the system for corruption using chkdsk, SFC, and DISM
|
||||
Steps:
|
||||
1. Runs chkdsk /scan /perf
|
||||
/scan - Runs an online scan on the volume
|
||||
/perf - Uses more system resources to complete a scan as fast as possible
|
||||
2. Runs SFC /scannow
|
||||
/scannow - Scans integrity of all protected system files and repairs files with problems when possible
|
||||
3. Runs DISM /Online /Cleanup-Image /RestoreHealth
|
||||
/Online - Targets the running operating system
|
||||
/Cleanup-Image - Performs cleanup and recovery operations on the image
|
||||
/RestoreHealth - Scans the image for component store corruption and attempts to repair the corruption using Windows Update
|
||||
4. Runs SFC /scannow
|
||||
Ran twice in case DISM repaired SFC
|
||||
1. (Aggressive Only) Scans the system for corruption using the Invoke-WPFSystemRepair function
|
||||
2. Stops Windows Update Services
|
||||
3. Remove the QMGR Data file, which stores BITS jobs
|
||||
4. (Aggressive Only) Renames the DataStore and CatRoot2 folders
|
||||
@@ -75,108 +33,13 @@ function Invoke-WPFFixesUpdate {
|
||||
param($Aggressive = $false)
|
||||
|
||||
Write-Progress -Id 0 -Activity "Repairing Windows Update" -PercentComplete 0
|
||||
Set-WinUtilTaskbaritem -state "Indeterminate" -overlay "logo"
|
||||
Write-Host "Starting Windows Update Repair..."
|
||||
# Wait for the first progress bar to show, otherwise the second one won't show
|
||||
Start-Sleep -Milliseconds 200
|
||||
|
||||
if ($Aggressive) {
|
||||
# Scan system for corruption
|
||||
Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Scanning for corruption..." -PercentComplete 0
|
||||
Write-Progress -Id 1 -ParentId 0 -Activity "Scanning for corruption" -Status "Running chkdsk..." -PercentComplete 0
|
||||
# 2>&1 redirects stdout, alowing iteration over the output
|
||||
chkdsk.exe /scan /perf 2>&1 | ForEach-Object {
|
||||
# Write stdout to the Verbose stream
|
||||
Write-Verbose $_
|
||||
|
||||
# Get the index of the total percentage
|
||||
$index = $_.IndexOf("Total:")
|
||||
if (
|
||||
# If the percent is found
|
||||
($percent = try {(
|
||||
$_.Substring(
|
||||
$index + 6,
|
||||
$_.IndexOf("%", $index) - $index - 6
|
||||
)
|
||||
).Trim()} catch {0}) `
|
||||
<# And the current percentage is greater than the previous one #>`
|
||||
-and $percent -gt $oldpercent
|
||||
) {
|
||||
# Update the progress bar
|
||||
$oldpercent = $percent
|
||||
Write-Progress -Id 1 -ParentId 0 -Activity "Scanning for corruption" -Status "Running chkdsk... ($percent%)" -PercentComplete $percent
|
||||
}
|
||||
}
|
||||
|
||||
Write-Progress -Id 1 -ParentId 0 -Activity "Scanning for corruption" -Status "Running SFC..." -PercentComplete 0
|
||||
$oldpercent = 0
|
||||
# SFC has a bug when redirected which causes it to output only when the stdout buffer is full, causing the progress bar to move in chunks
|
||||
sfc /scannow 2>&1 | ForEach-Object {
|
||||
# Write stdout to the Verbose stream
|
||||
Write-Verbose $_
|
||||
|
||||
# Filter for lines that contain a percentage that is greater than the previous one
|
||||
if (
|
||||
(
|
||||
# Use a different method to get the percentage that accounts for SFC's Unicode output
|
||||
[int]$percent = try {(
|
||||
(
|
||||
$_.Substring(
|
||||
$_.IndexOf("n") + 2,
|
||||
$_.IndexOf("%") - $_.IndexOf("n") - 2
|
||||
).ToCharArray() | Where-Object {$_}
|
||||
) -join ''
|
||||
).TrimStart()} catch {0}
|
||||
) -and $percent -gt $oldpercent
|
||||
) {
|
||||
# Update the progress bar
|
||||
$oldpercent = $percent
|
||||
Write-Progress -Id 1 -ParentId 0 -Activity "Scanning for corruption" -Status "Running SFC... ($percent%)" -PercentComplete $percent
|
||||
}
|
||||
}
|
||||
|
||||
Write-Progress -Id 1 -ParentId 0 -Activity "Scanning for corruption" -Status "Running DISM..." -PercentComplete 0
|
||||
$oldpercent = 0
|
||||
DISM /Online /Cleanup-Image /RestoreHealth | ForEach-Object {
|
||||
# Write stdout to the Verbose stream
|
||||
Write-Verbose $_
|
||||
|
||||
# Filter for lines that contain a percentage that is greater than the previous one
|
||||
if (
|
||||
($percent = try {
|
||||
[int]($_ -replace "\[" -replace "=" -replace " " -replace "%" -replace "\]")
|
||||
} catch {0}) `
|
||||
-and $percent -gt $oldpercent
|
||||
) {
|
||||
# Update the progress bar
|
||||
$oldpercent = $percent
|
||||
Write-Progress -Id 1 -ParentId 0 -Activity "Scanning for corruption" -Status "Running DISM... ($percent%)" -PercentComplete $percent
|
||||
}
|
||||
}
|
||||
|
||||
Write-Progress -Id 1 -ParentId 0 -Activity "Scanning for corruption" -Status "Running SFC again..." -PercentComplete 0
|
||||
$oldpercent = 0
|
||||
sfc /scannow 2>&1 | ForEach-Object {
|
||||
# Write stdout to the Verbose stream
|
||||
Write-Verbose $_
|
||||
|
||||
# Filter for lines that contain a percentage that is greater than the previous one
|
||||
if (
|
||||
(
|
||||
[int]$percent = try {(
|
||||
(
|
||||
$_.Substring(
|
||||
$_.IndexOf("n") + 2,
|
||||
$_.IndexOf("%") - $_.IndexOf("n") - 2
|
||||
).ToCharArray() | Where-Object {$_}
|
||||
) -join ''
|
||||
).TrimStart()} catch {0}
|
||||
) -and $percent -gt $oldpercent
|
||||
) {
|
||||
# Update the progress bar
|
||||
$oldpercent = $percent
|
||||
Write-Progress -Id 1 -ParentId 0 -Activity "Scanning for corruption" -Status "Running SFC... ($percent%)" -PercentComplete $percent
|
||||
}
|
||||
}
|
||||
Write-Progress -Id 1 -ParentId 0 -Activity "Scanning for corruption" -Status "Completed" -PercentComplete 100
|
||||
Invoke-WPFSystemRepair
|
||||
}
|
||||
|
||||
|
||||
@@ -220,9 +83,9 @@ function Invoke-WPFFixesUpdate {
|
||||
# Reset the Security Descriptors on the Windows Update Services
|
||||
Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Resetting the WU Service Security Descriptors..." -PercentComplete 25
|
||||
Write-Progress -Id 4 -ParentId 0 -Activity "Resetting the WU Service Security Descriptors" -Status "Resetting the BITS Security Descriptor..." -PercentComplete 0
|
||||
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", "bits", "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)" -Wait
|
||||
Write-Progress -Id 4 -ParentId 0 -Activity "Resetting the WU Service Security Descriptors" -Status "Resetting the wuauserv Security Descriptor..." -PercentComplete 50
|
||||
Start-Process -NoNewWindow -FilePath "sc.exe" -ArgumentList "sdset", "wuauserv", "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)" -Wait
|
||||
Write-Progress -Id 4 -ParentId 0 -Activity "Resetting the WU Service Security Descriptors" -Status "Completed" -PercentComplete 100
|
||||
}
|
||||
|
||||
@@ -254,19 +117,53 @@ function Invoke-WPFFixesUpdate {
|
||||
if (Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate") {
|
||||
Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Removing WSUS client settings..." -PercentComplete 60
|
||||
Write-Progress -Id 6 -ParentId 0 -Activity "Removing WSUS client settings" -PercentComplete 0
|
||||
Start-Process -NoNewWindow -FilePath "REG" -ArgumentList "DELETE", "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate", "/v", "AccountDomainSid", "/f" -RedirectStandardError $true
|
||||
Start-Process -NoNewWindow -FilePath "REG" -ArgumentList "DELETE", "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate", "/v", "PingID", "/f" -RedirectStandardError $true
|
||||
Start-Process -NoNewWindow -FilePath "REG" -ArgumentList "DELETE", "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate", "/v", "SusClientId", "/f" -RedirectStandardError $true
|
||||
Start-Process -NoNewWindow -FilePath "REG" -ArgumentList "DELETE", "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate", "/v", "AccountDomainSid", "/f" -RedirectStandardError "NUL"
|
||||
Start-Process -NoNewWindow -FilePath "REG" -ArgumentList "DELETE", "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate", "/v", "PingID", "/f" -RedirectStandardError "NUL"
|
||||
Start-Process -NoNewWindow -FilePath "REG" -ArgumentList "DELETE", "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate", "/v", "SusClientId", "/f" -RedirectStandardError "NUL"
|
||||
Write-Progress -Id 6 -ParentId 0 -Activity "Removing WSUS client settings" -Status "Completed" -PercentComplete 100
|
||||
}
|
||||
|
||||
# Remove Group Policy Windows Update settings
|
||||
Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Removing Group Policy Windows Update settings..." -PercentComplete 60
|
||||
Write-Progress -Id 7 -ParentId 0 -Activity "Removing Group Policy Windows Update settings" -PercentComplete 0
|
||||
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" -Name "ExcludeWUDriversInQualityUpdate" -ErrorAction SilentlyContinue
|
||||
Write-Host "Defaulting driver offering through Windows Update..."
|
||||
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Device Metadata" -Name "PreventDeviceMetadataFromNetwork" -ErrorAction SilentlyContinue
|
||||
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DriverSearching" -Name "DontPromptForWindowsUpdate" -ErrorAction SilentlyContinue
|
||||
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DriverSearching" -Name "DontSearchWindowsUpdate" -ErrorAction SilentlyContinue
|
||||
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DriverSearching" -Name "DriverUpdateWizardWuSearchEnabled" -ErrorAction SilentlyContinue
|
||||
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" -Name "ExcludeWUDriversInQualityUpdate" -ErrorAction SilentlyContinue
|
||||
Write-Host "Defaulting Windows Update automatic restart..."
|
||||
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "NoAutoRebootWithLoggedOnUsers" -ErrorAction SilentlyContinue
|
||||
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "AUPowerManagement" -ErrorAction SilentlyContinue
|
||||
Write-Host "Clearing ANY Windows Update Policy settings..."
|
||||
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" -Name "BranchReadinessLevel" -ErrorAction SilentlyContinue
|
||||
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" -Name "DeferFeatureUpdatesPeriodInDays" -ErrorAction SilentlyContinue
|
||||
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" -Name "DeferQualityUpdatesPeriodInDays" -ErrorAction SilentlyContinue
|
||||
Remove-Item -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies" -Recurse -Force -ErrorAction SilentlyContinue
|
||||
Remove-Item -Path "HKCU:\Software\Microsoft\WindowsSelfHost" -Recurse -Force -ErrorAction SilentlyContinue
|
||||
Remove-Item -Path "HKCU:\Software\Policies" -Recurse -Force -ErrorAction SilentlyContinue
|
||||
Remove-Item -Path "HKLM:\Software\Microsoft\Policies" -Recurse -Force -ErrorAction SilentlyContinue
|
||||
Remove-Item -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies" -Recurse -Force -ErrorAction SilentlyContinue
|
||||
Remove-Item -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\WindowsStore\WindowsUpdate" -Recurse -Force -ErrorAction SilentlyContinue
|
||||
Remove-Item -Path "HKLM:\Software\Microsoft\WindowsSelfHost" -Recurse -Force -ErrorAction SilentlyContinue
|
||||
Remove-Item -Path "HKLM:\Software\Policies" -Recurse -Force -ErrorAction SilentlyContinue
|
||||
Remove-Item -Path "HKLM:\Software\WOW6432Node\Microsoft\Policies" -Recurse -Force -ErrorAction SilentlyContinue
|
||||
Remove-Item -Path "HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Policies" -Recurse -Force -ErrorAction SilentlyContinue
|
||||
Remove-Item -Path "HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\WindowsStore\WindowsUpdate" -Recurse -Force -ErrorAction SilentlyContinue
|
||||
Start-Process -NoNewWindow -FilePath "secedit" -ArgumentList "/configure", "/cfg", "$env:windir\inf\defltbase.inf", "/db", "defltbase.sdb", "/verbose" -Wait
|
||||
Start-Process -NoNewWindow -FilePath "cmd.exe" -ArgumentList "/c RD /S /Q $env:WinDir\System32\GroupPolicyUsers" -Wait
|
||||
Start-Process -NoNewWindow -FilePath "cmd.exe" -ArgumentList "/c RD /S /Q $env:WinDir\System32\GroupPolicy" -Wait
|
||||
Start-Process -NoNewWindow -FilePath "gpupdate" -ArgumentList "/force" -Wait
|
||||
Write-Progress -Id 7 -ParentId 0 -Activity "Removing Group Policy Windows Update settings" -Status "Completed" -PercentComplete 100
|
||||
|
||||
|
||||
# Reset WinSock
|
||||
Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Resetting WinSock..." -PercentComplete 65
|
||||
Write-Progress -Id 7 -ParentId 0 -Activity "Resetting WinSock" -Status "Resetting WinSock..." -PercentComplete 0
|
||||
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "winsock", "reset" -RedirectStandardOutput $true
|
||||
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "winhttp", "reset", "proxy" -RedirectStandardOutput $true
|
||||
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "int", "ip", "reset" -RedirectStandardOutput $true
|
||||
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-Progress -Id 7 -ParentId 0 -Activity "Resetting WinSock" -Status "Completed" -PercentComplete 100
|
||||
|
||||
|
||||
@@ -295,11 +192,18 @@ function Invoke-WPFFixesUpdate {
|
||||
# Force Windows Update to check for updates
|
||||
Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Forcing discovery..." -PercentComplete 95
|
||||
Write-Progress -Id 10 -ParentId 0 -Activity "Forcing discovery" -Status "Forcing discovery..." -PercentComplete 0
|
||||
(New-Object -ComObject Microsoft.Update.AutoUpdate).DetectNow()
|
||||
try {
|
||||
(New-Object -ComObject Microsoft.Update.AutoUpdate).DetectNow()
|
||||
} catch {
|
||||
Set-WinUtilTaskbaritem -state "Error" -overlay "warning"
|
||||
Write-Warning "Failed to create Windows Update COM object: $_"
|
||||
}
|
||||
Start-Process -NoNewWindow -FilePath "wuauclt" -ArgumentList "/resetauthorization", "/detectnow"
|
||||
Write-Progress -Id 10 -ParentId 0 -Activity "Forcing discovery" -Status "Completed" -PercentComplete 100
|
||||
Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Completed" -PercentComplete 100
|
||||
|
||||
Set-WinUtilTaskbaritem -state "None" -overlay "checkmark"
|
||||
|
||||
$ButtonType = [System.Windows.MessageBoxButton]::OK
|
||||
$MessageboxTitle = "Reset Windows Update "
|
||||
$Messageboxbody = ("Stock settings loaded.`n Please reboot your computer")
|
||||
@@ -317,7 +221,7 @@ function Invoke-WPFFixesUpdate {
|
||||
Write-Progress -Id 3 -Activity "Renaming/Removing Files" -Completed
|
||||
Write-Progress -Id 4 -Activity "Resetting the WU Service Security Descriptors" -Completed
|
||||
Write-Progress -Id 5 -Activity "Reregistering DLLs" -Completed
|
||||
Write-Progress -Id 6 -Activity "Removing WSUS client settings" -Completed
|
||||
Write-Progress -Id 6 -Activity "Removing Group Policy Windows Update settings" -Completed
|
||||
Write-Progress -Id 7 -Activity "Resetting WinSock" -Completed
|
||||
Write-Progress -Id 8 -Activity "Deleting BITS jobs" -Completed
|
||||
Write-Progress -Id 9 -Activity "Starting Windows Update Services" -Completed
|
||||
@@ -325,12 +229,3 @@ function Invoke-WPFFixesUpdate {
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
<!-- BEGIN SECOND CUSTOM CONTENT -->
|
||||
|
||||
<!-- END SECOND CUSTOM CONTENT -->
|
||||
|
||||
|
||||
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/feature.json)
|
||||
|
||||
|
||||
@@ -1,36 +1,6 @@
|
||||
# WinGet Reinstall
|
||||
|
||||
Last Updated: 2024-08-07
|
||||
|
||||
|
||||
> [!NOTE]
|
||||
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
|
||||
|
||||
|
||||
<!-- BEGIN CUSTOM CONTENT -->
|
||||
|
||||
<!-- END CUSTOM CONTENT -->
|
||||
|
||||
<details>
|
||||
<summary>Preview Code</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"Content": "WinGet Reinstall",
|
||||
"category": "Fixes",
|
||||
"panel": "1",
|
||||
"Order": "a044_",
|
||||
"Type": "Button",
|
||||
"ButtonWidth": "300",
|
||||
"link": "https://christitustech.github.io/Winutil/dev/features/Fixes/Winget"
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
## Function: Invoke-WPFFixesWinget
|
||||
|
||||
```powershell
|
||||
function Invoke-WPFFixesWinget {
|
||||
|
||||
<#
|
||||
@@ -41,18 +11,17 @@ function Invoke-WPFFixesWinget {
|
||||
BravoNorris for the fantastic idea of a button to reinstall winget
|
||||
#>
|
||||
# Install Choco if not already present
|
||||
Install-WinutilChoco
|
||||
Start-Process -FilePath "choco" -ArgumentList "install winget -y --force" -NoNewWindow -Wait
|
||||
try {
|
||||
Set-WinUtilTaskbaritem -state "Indeterminate" -overlay "logo"
|
||||
Write-Host "==> Starting Winget Repair"
|
||||
Install-WinUtilWinget -Force
|
||||
} catch {
|
||||
Write-Error "Failed to install winget: $_"
|
||||
Set-WinUtilTaskbaritem -state "Error" -overlay "warning"
|
||||
} finally {
|
||||
Write-Host "==> Finished Winget Repair"
|
||||
Set-WinUtilTaskbaritem -state "None" -overlay "checkmark"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
<!-- BEGIN SECOND CUSTOM CONTENT -->
|
||||
|
||||
<!-- END SECOND CUSTOM CONTENT -->
|
||||
|
||||
|
||||
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/feature.json)
|
||||
|
||||
|
||||
@@ -1,14 +1,8 @@
|
||||
---
|
||||
weight: 3
|
||||
---
|
||||
|
||||
## Features
|
||||
|
||||
### Fixes
|
||||
|
||||
- [Remove Adobe Creative Cloud](runadobecccleanertool/)
|
||||
- [Reset Network](network/)
|
||||
- [Reset Windows Update](update/)
|
||||
- [Set Up Autologin](autologin/)
|
||||
- [System Corruption Scan](dism/)
|
||||
- [WinGet Reinstall](winget/)
|
||||
- [Remove Adobe Creative Cloud](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/RunAdobeCCCleanerTool.md)
|
||||
- [Reset Network](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/Network.md)
|
||||
- [Reset Windows Update](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/Update.md)
|
||||
- [Set Up Autologin](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/Autologin.md)
|
||||
- [System Corruption Scan](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/CorruptionScan.md)
|
||||
- [WinGet Reinstall](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/Winget.md)
|
||||
|
||||
Reference in New Issue
Block a user