* xml decouple

* Typos: Documents, Start installs (#18)

Document -> Documents
Start install -> Start installs

Co-authored-by: Chris Titus <dfm.titus@gmail.com>

* Added DISM command and button to tool (#19)

* Added DISM command and button to tool

* Added additional scans and colours to make it clear when each scan type starts

Co-authored-by: Chris Titus <dfm.titus@gmail.com>

* Fix issue in #14 (#20)

* Fix issue in #14

 - It seems that Chris forgot to add a button for the Repair Windows Update Script and accidentally put it under the Default Windows Update Settings button.
   - Fixed by adding the $WPFFixesUpdate.Add_Click function before the Reset Script
   - Fixes #14

* decoupling xaml and ps1 (#7)

Co-authored-by: Chris Titus <dfm.titus@gmail.com>

Co-authored-by: Rahul Somasundaram <rahulstsgr@gmail.com>
Co-authored-by: Chris Titus <dfm.titus@gmail.com>

* Add winget check and installer (#21)

* Add winget check and installer

 - Adds Check if winget is installed
   - If not installed, checks if the computer is running 1809+ and if the computer is running Windows Server or LTSC
    - If running pre-1809, winget install stops as it is not supported
    - If running Windows Server or Windows LTSC, runs alternative installer compatible with those editions of Windows

* decoupling xaml and ps1 (#7)

Co-authored-by: Chris Titus <dfm.titus@gmail.com>

Co-authored-by: Rahul Somasundaram <rahulstsgr@gmail.com>
Co-authored-by: Chris Titus <dfm.titus@gmail.com>

* Small Fixes. (#22)

* Update winutil.ps1

* Use Curl instead of Bits transfer for O&O Shutup.

* Update winutil.ps1

* decoupling xaml and ps1 (#7)

Co-authored-by: Chris Titus <dfm.titus@gmail.com>

Co-authored-by: Rahul Somasundaram <rahulstsgr@gmail.com>
Co-authored-by: Chris Titus <dfm.titus@gmail.com>

* upload example (#12)

Co-authored-by: Chris Titus <dfm.titus@gmail.com>

* code format using powershell VS code extension (#28)

* Working runspaces (#32)

* upload example

* decoupling xaml and ps1 (#7)

Co-authored-by: Chris Titus <dfm.titus@gmail.com>

* Update README.md

* convert to runspaces

* add security updates to invoke-button

* Update README.md

removed extra text about test branch

* initial commit to test restmethod

* formatting

Co-authored-by: Rahul Somasundaram <rahulstsgr@gmail.com>
Co-authored-by: Chris Titus <dfm.titus@gmail.com>

* Fix bug in #39 (#40)

- Closes #39
  - $arch is not set to a value in the script, and it throws an error when the If-Statement is called
    - Fixed by replacing the $arch variable check with a wmic check

* Fix and Tweak #19 (#43)

* Fix Issue in #19

 - Pull Request #19 didn't add an entry for PanelDISM into MainWindow.xaml, causing an error to be thrown when the script if executed and a button to not be created
   - Fixed by adding an entry into MainWIndow.xaml that creates the needed button under the FixesUpdate button
   - Note: To see the fix, you need to comment line 9 and uncomment line 8 to use the local MainWindow.xaml instead of the one in the Main Branch

* Fix Formatting and Tweak Things

 - Fixed the formatting
 - Tweaked Write-Host's
   - Added newlines (`n) to space out the Statuses
   - Added progress indicators
     - Required "s and 's to be swapped so x/4 does not perform an operation

* Slight Tweak

* Added Uncheck all button in the Install tab (#29)

* Revert "Added Uncheck all button in the Install tab (#29)" (#72)

This reverts commit 833837155a.

* Throw warning if no programs are selected for installation (#30)

Co-authored-by: Chris Titus <dfm.titus@gmail.com>

* Fix a few spelling errors (#44)

- Fixed a few spelling errors
   - dependancies -> dependencies
   - Evnronment -> Environment
   - haved -> have
   - Hibernte -> Hibernate
   - histroy -> history
   - extentions -> extensions

* Arguments (#52)

* Implement Arguments

- Using $env:args, the script scans for arguments; then if found, Invokes the Runspace associated with said arg. Or in the case of the old panels, just opens the panel.
  - \b is to prevent mutual words from causing issues (Ex: Install and InstallUpgrade would conflict without \b)

* Actually add \b

Forgot to save before previous commit  : |

* Fix Order Issue

- The arg check occurred too early, causing an error

* Remove Invoke-Runspace

- Replaced Invoke-Runspace with Invoke-Command as there is no need to worry about the gui when running unattended

* Add Program Install Arg Check

 - Added arg check for Install
   - Format is 'Install: company.program,.company.program2'

Co-authored-by: Chris Titus <dfm.titus@gmail.com>

* Replace all instances of "incase" to "in case" (#60)

Co-authored-by: Chris Titus <dfm.titus@gmail.com>

* Added  -NoRestart to WindowsOptionalFeature (#65)

* Handled UAC exit on install and upgrade (#31)

Co-authored-by: ChrisTitusTech <dfm.titus@gmail.com>
Co-authored-by: Ayoub Hebbaj <30575106+M3nti0nL3Ss@users.noreply.github.com>
Co-authored-by: Jards <jordancattwood@hotmail.com>
Co-authored-by: Carter <60557606+Carterpersall@users.noreply.github.com>
Co-authored-by: Rahul Somasundaram <rahulstsgr@gmail.com>
Co-authored-by: Aetopia <41850963+Aetopia@users.noreply.github.com>
Co-authored-by: DeveloperDurp <74198206+DeveloperDurp@users.noreply.github.com>
Co-authored-by: Rahul Somasundaram <ssrahul96@gmail.com>
Co-authored-by: GrahamboJangles <36944031+GrahamboJangles@users.noreply.github.com>
Co-authored-by: PWall <34860495+pwall2222@users.noreply.github.com>
This commit is contained in:
Frank L Kaplan 2022-09-05 11:32:48 -07:00 committed by GitHub
parent bf1d455f80
commit fecc54d71d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 2899 additions and 3000 deletions

View File

@ -197,6 +197,7 @@
<Button Name="FeatureInstall" FontSize="14" Background="AliceBlue" Content="Install Features" Margin="20,5,20,0" Padding="10"/>
<Label Content="Fixes" FontSize="16"/>
<Button Name="FixesUpdate" FontSize="14" Background="AliceBlue" Content="Reset Windows Update" Margin="20,5,20,0" Padding="10"/>
<Button Name="PanelDISM" FontSize="14" Background="AliceBlue" Content="System Corruption Scan" Margin="20,5,20,0" Padding="10"/>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Column="1" Margin="10,5">

229
applications.json Normal file
View File

@ -0,0 +1,229 @@
{
"install": {
"Installadobe": {
"winget": "Adobe.Acrobat.Reader.64-bit"
},
"Installadvancedip": {
"winget": "Famatech.AdvancedIPScanner"
},
"Installanydesk": {
"winget": "AnyDeskSoftwareGmbH.AnyDesk"
},
"Installatom": {
"winget": "GitHub.Atom"
},
"Installaudacity": {
"winget": "Audacity.Audacity"
},
"Installautohotkey": {
"winget": "Lexikos.AutoHotkey"
},
"Installbitwarden": {
"winget": "Bitwarden.Bitwarden"
},
"Installblender": {
"winget": "BlenderFoundation.Blender"
},
"Installbrave": {
"winget": "BraveSoftware.BraveBrowser"
},
"Installchrome": {
"winget": "Google.Chrome"
},
"Installchromium": {
"winget": "eloston.ungoogled-chromium"
},
"Installcpuz": {
"winget": "CPUID.CPU-Z"
},
"Installdiscord": {
"winget": "Discord.Discord"
},
"Installeartrumpet": {
"winget": "File-New-Project.EarTrumpet"
},
"Installepicgames": {
"winget": "EpicGames.EpicGamesLauncher"
},
"Installesearch": {
"winget": "voidtools.Everything --source winget"
},
"Installetcher": {
"winget": "Balena.Etcher"
},
"Installfirefox": {
"winget": "Mozilla.Firefox"
},
"Installflameshot": {
"winget": "Flameshot.Flameshot"
},
"Installfoobar": {
"winget": "PeterPawlowski.foobar2000"
},
"Installgimp": {
"winget": "GIMP.GIMP"
},
"Installgithubdesktop": {
"winget": "Git.Git;GitHub.GitHubDesktop"
},
"Installgog": {
"winget": "GOG.Galaxy"
},
"Installgpuz": {
"winget": "TechPowerUp.GPU-Z"
},
"Installgreenshot": {
"winget": "Greenshot.Greenshot"
},
"Installhandbrake": {
"winget": "HandBrake.HandBrake"
},
"Installhexchat": {
"winget": "HexChat.HexChat"
},
"Installhwinfo": {
"winget": "REALiX.HWiNFO"
},
"Installimageglass": {
"winget": "DuongDieuPhap.ImageGlass"
},
"Installinkscape": {
"winget": "Inkscape.Inkscape"
},
"Installjava16": {
"winget": "AdoptOpenJDK.OpenJDK.16"
},
"Installjava18": {
"winget": "Oracle.JDK.18"
},
"Installjava8": {
"winget": "AdoptOpenJDK.OpenJDK.8"
},
"Installjetbrains": {
"winget": "JetBrains.Toolbox"
},
"Installkeepass": {
"winget": "KeePassXCTeam.KeePassXC"
},
"Installlibrewolf": {
"winget": "LibreWolf.LibreWolf"
},
"Installmalwarebytes": {
"winget": "Malwarebytes.Malwarebytes"
},
"Installmatrix": {
"winget": "Element.Element"
},
"Installmpc": {
"winget": "clsid2.mpc-hc"
},
"Installmremoteng": {
"winget": "mRemoteNG.mRemoteNG"
},
"Installnodejs": {
"winget": "OpenJS.NodeJS"
},
"Installnodejslts": {
"winget": "OpenJS.NodeJS.LTS"
},
"Installnotepadplus": {
"winget": "Notepad++.Notepad++"
},
"Installnvclean": {
"winget": "TechPowerUp.NVCleanstall"
},
"Installobs": {
"winget": "OBSProject.OBSStudio"
},
"Installobsidian": {
"winget": "Obsidian.Obsidian"
},
"Installpowertoys": {
"winget": "Microsoft.PowerToys"
},
"Installputty": {
"winget": "PuTTY.PuTTY"
},
"Installpython3": {
"winget": "Python.Python.3"
},
"Installrevo": {
"winget": "RevoUninstaller.RevoUninstaller"
},
"Installrufus": {
"winget": "Rufus.Rufus"
},
"Installsevenzip": {
"winget": "7zip.7zip"
},
"Installsharex": {
"winget": "ShareX.ShareX"
},
"Installsignal": {
"winget": "OpenWhisperSystems.Signal"
},
"Installskype": {
"winget": "Microsoft.Skype"
},
"Installslack": {
"winget": "SlackTechnologies.Slack"
},
"Installspotify": {
"winget": "Spotify.Spotify"
},
"Installsteam": {
"winget": "Valve.Steam"
},
"Installsublime": {
"winget": "SublimeHQ.SublimeText.4"
},
"Installsumatra": {
"winget": "SumatraPDF.SumatraPDF"
},
"Installteams": {
"winget": "Microsoft.Teams"
},
"Installteamviewer": {
"winget": "TeamViewer.TeamViewer"
},
"Installterminal": {
"winget": "Microsoft.WindowsTerminal"
},
"Installtreesize": {
"winget": "JAMSoftware.TreeSize.Free"
},
"Installttaskbar": {
"winget": "TranslucentTB.TranslucentTB"
},
"Installvisualstudio": {
"winget": "Microsoft.VisualStudio.2022.Community"
},
"Installvivaldi": {
"winget": "VivaldiTechnologies.Vivaldi"
},
"Installvlc": {
"winget": "VideoLAN.VLC"
},
"Installvoicemeeter": {
"winget": "VB-Audio.Voicemeeter"
},
"Installvscode": {
"winget": "Git.Git;Microsoft.VisualStudioCode --source winget"
},
"Installvscodium": {
"winget": "Git.Git;VSCodium.VSCodium"
},
"Installwindirstat": {
"winget": "WinDirStat.WinDirStat"
},
"Installwinscp": {
"winget": "WinSCP.WinSCP"
},
"Installwireshark": {
"winget": "WiresharkFoundation.Wireshark"
},
"Installzoom": {
"winget": "Zoom.Zoom"
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -8,13 +8,13 @@
# $inputXML = Get-Content "MainWindow.xaml" #uncomment for development
$inputXML = (new-object Net.WebClient).DownloadString("https://raw.githubusercontent.com/ChrisTitusTech/winutil/main/MainWindow.xaml") #uncomment for Production
$inputXML = $inputXML -replace 'mc:Ignorable="d"','' -replace "x:N",'N' -replace '^<Win.*', '<Window'
$inputXML = $inputXML -replace 'mc:Ignorable="d"', '' -replace "x:N", 'N' -replace '^<Win.*', '<Window'
[void][System.Reflection.Assembly]::LoadWithPartialName('presentationframework')
[xml]$XAML = $inputXML
#Read XAML
$reader=(New-Object System.Xml.XmlNodeReader $xaml)
try{$Form=[Windows.Markup.XamlReader]::Load( $reader )}
$reader = (New-Object System.Xml.XmlNodeReader $xaml)
try { $Form = [Windows.Markup.XamlReader]::Load( $reader ) }
catch [System.Management.Automation.MethodInvocationException] {
Write-Warning "We ran into a problem with the XAML code. Check the syntax for this control..."
write-host $error[0].Exception.Message -ForegroundColor Red
@ -22,24 +22,31 @@ catch [System.Management.Automation.MethodInvocationException] {
write-warning "Ensure your &lt;button in the `$inputXML does NOT have a Click=ButtonClick property. PS can't handle this`n`n`n`n"
}
}
catch{# If it broke some other way <img draggable="false" role="img" class="emoji" alt="😀" src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/svg/1f600.svg">
catch {
# If it broke some other way <img draggable="false" role="img" class="emoji" alt="😀" src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/svg/1f600.svg">
Write-Host "Unable to load Windows.Markup.XamlReader. Double-check syntax and ensure .net is installed."
}
}
#===========================================================================
# Store Form Objects In PowerShell
#===========================================================================
$xaml.SelectNodes("//*[@Name]") | %{Set-Variable -Name "WPF$($_.Name)" -Value $Form.FindName($_.Name)}
$xaml.SelectNodes("//*[@Name]") | % { Set-Variable -Name "WPF$($_.Name)" -Value $Form.FindName($_.Name) }
Function Get-FormVariables{
If ($global:ReadmeDisplay -ne $true){Write-host "If you need to reference this display again, run Get-FormVariables" -ForegroundColor Yellow;$global:ReadmeDisplay=$true}
write-host "Found the following interactable elements from our form" -ForegroundColor Cyan
get-variable WPF*
Function Get-FormVariables {
If ($global:ReadmeDisplay -ne $true) { Write-host "If you need to reference this display again, run Get-FormVariables" -ForegroundColor Yellow; $global:ReadmeDisplay = $true }
write-host "Found the following interactable elements from our form" -ForegroundColor Cyan
get-variable WPF*
}
Get-FormVariables
#===========================================================================
# Global Variables
#===========================================================================
$AppTitle = "Chris Titus Tech's Windows Utility"
#===========================================================================
# Navigation Controls
#===========================================================================
@ -49,7 +56,7 @@ $WPFTab1BT.Add_Click({
$WPFTabNav.Items[1].IsSelected = $false
$WPFTabNav.Items[2].IsSelected = $false
$WPFTabNav.Items[3].IsSelected = $false
})
})
$WPFTab2BT.Add_Click({
$WPFTabNav.Items[0].IsSelected = $false
$WPFTabNav.Items[1].IsSelected = $true
@ -378,38 +385,112 @@ $WPFinstall.Add_Click({
$WPFInstallzoom.IsChecked = $false
}
# Check if winget is installed
Write-Host "Checking if Winget is Installed..."
if (Test-Path ~\AppData\Local\Microsoft\WindowsApps\winget.exe) {
#Checks if winget executable exists and if the Windows Version is 1809 or higher
Write-Host "Winget Already Installed"
}
else {
if (((((Get-ComputerInfo).OSName.IndexOf("LTSC")) -ne -1) -or ((Get-ComputerInfo).OSName.IndexOf("Server") -ne -1)) -and (((Get-ComputerInfo).WindowsVersion) -ge "1809")) {
#Checks if Windows edition is LTSC/Server 2019+
#Manually Installing Winget
Write-Host "Running Alternative Installer for LTSC/Server Editions"
#Download Needed Files
Write-Host "Downloading Needed Files..."
Start-BitsTransfer -Source "https://aka.ms/Microsoft.VCLibs.x64.14.00.Desktop.appx" -Destination "./Microsoft.VCLibs.x64.14.00.Desktop.appx"
Start-BitsTransfer -Source "https://github.com/microsoft/winget-cli/releases/download/v1.2.10271/Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle" -Destination "./Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle"
Start-BitsTransfer -Source "https://github.com/microsoft/winget-cli/releases/download/v1.2.10271/b0a0692da1034339b76dce1c298a1e42_License1.xml" -Destination "./b0a0692da1034339b76dce1c298a1e42_License1.xml"
#Installing Packages
Write-Host "Installing Packages..."
Add-AppxProvisionedPackage -Online -PackagePath ".\Microsoft.VCLibs.x64.14.00.Desktop.appx" -SkipLicense
Add-AppxProvisionedPackage -Online -PackagePath ".\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle" -LicensePath ".\b0a0692da1034339b76dce1c298a1e42_License1.xml"
Write-Host "winget Installed (Reboot might be required before winget will work)"
#Sleep for 5 seconds to maximize chance that winget will work without reboot
Write-Host "Pausing for 5 seconds to maximize chance that winget will work without reboot"
Start-Sleep -s 5
#Removing no longer needed Files
Write-Host "Removing no longer needed Files..."
Remove-Item -Path ".\Microsoft.VCLibs.x64.14.00.Desktop.appx" -Force
Remove-Item -Path ".\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle" -Force
Remove-Item -Path ".\b0a0692da1034339b76dce1c298a1e42_License1.xml" -Force
Write-Host "Removed Files that are no longer needed"
}
elseif (((Get-ComputerInfo).WindowsVersion) -lt "1809") {
#Checks if Windows Version is too old for winget
Write-Host "Winget is not supported on this version of Windows (Pre-1809)"
}
else {
#Installing Winget from the Microsoft Store
Write-Host "Winget not found, installing it now."
Start-Process "ms-appinstaller:?source=https://aka.ms/getwinget"
$nid = (Get-Process AppInstaller).Id
Wait-Process -Id $nid
Write-Host "Winget Installed"
}
}
if ($wingetinstall.Count -eq 0) {
$WarningMsg = "Please select the program(s) to install"
[System.Windows.MessageBox]::Show($WarningMsg, $AppTitle, [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
return
}
# Install all winget programs in new window
$wingetinstall.ToArray()
# Define Output variable
$wingetResult = New-Object System.Collections.Generic.List[System.Object]
foreach ( $node in $wingetinstall )
{
foreach ( $node in $wingetinstall ) {
try {
Start-Process powershell.exe -Verb RunAs -ArgumentList "-command winget install -e --accept-source-agreements --accept-package-agreements --silent $node | Out-Host" -Wait -WindowStyle Maximized
$wingetResult.Add("$node`n")
}
catch [System.InvalidOperationException] {
Write-Warning "Allow Yes on User Access Control to Install"
}
catch {
Write-Error $_.Exception
}
}
$wingetResult.ToArray()
$wingetResult | % { $_ } | Out-Host
# Popup after finished
$ButtonType = [System.Windows.MessageBoxButton]::OK
$MessageboxTitle = "Installed Programs "
$Messageboxbody = ($wingetResult)
if ($wingetResult -ne "") {
$Messageboxbody = "Installed Programs `n$($wingetResult)"
}
else {
$Messageboxbody = "No Program(s) are installed"
}
$MessageIcon = [System.Windows.MessageBoxImage]::Information
[System.Windows.MessageBox]::Show($Messageboxbody,$MessageboxTitle,$ButtonType,$MessageIcon)
[System.Windows.MessageBox]::Show($Messageboxbody, $AppTitle, $ButtonType, $MessageIcon)
})
})
$WPFInstallUpgrade.Add_Click({
$isUpgradeSuccess = $false
try {
Start-Process powershell.exe -Verb RunAs -ArgumentList "-command winget upgrade --all | Out-Host" -Wait -WindowStyle Maximized
$isUpgradeSuccess = $true
}
catch [System.InvalidOperationException] {
Write-Warning "Allow Yes on User Access Control to Upgrade"
}
catch {
Write-Error $_.Exception
}
$ButtonType = [System.Windows.MessageBoxButton]::OK
$MessageboxTitle = "Upgraded All Programs "
$Messageboxbody = ("Done")
$Messageboxbody = if($isUpgradeSuccess) {"Upgrade Done"} else {"Upgrade was not succesful"}
$MessageIcon = [System.Windows.MessageBoxImage]::Information
[System.Windows.MessageBox]::Show($Messageboxbody,$MessageboxTitle,$ButtonType,$MessageIcon)
})
[System.Windows.MessageBox]::Show($Messageboxbody, $AppTitle, $ButtonType, $MessageIcon)
})
#===========================================================================
# Tab 2 - Tweak Buttons
@ -432,7 +513,7 @@ $WPFdesktop.Add_Click({
$WPFMiscTweaksNum.IsChecked = $true
$WPFMiscTweaksLapPower.IsChecked = $false
$WPFMiscTweaksLapNum.IsChecked = $false
})
})
$WPFlaptop.Add_Click({
@ -452,7 +533,7 @@ $WPFlaptop.Add_Click({
$WPFMiscTweaksLapNum.IsChecked = $true
$WPFMiscTweaksPower.IsChecked = $false
$WPFMiscTweaksNum.IsChecked = $false
})
})
$WPFminimal.Add_Click({
@ -472,7 +553,7 @@ $WPFminimal.Add_Click({
$WPFMiscTweaksNum.IsChecked = $false
$WPFMiscTweaksLapPower.IsChecked = $false
$WPFMiscTweaksLapNum.IsChecked = $false
})
})
$WPFtweaksbutton.Add_Click({
@ -523,14 +604,13 @@ $WPFtweaksbutton.Add_Click({
}
If ( $WPFEssTweaksOO.IsChecked -eq $true ) {
Write-Host "Running O&O Shutup with Recommended Settings"
Import-Module BitsTransfer
Start-BitsTransfer -Source "https://raw.githubusercontent.com/ChrisTitusTech/win10script/master/ooshutup10.cfg" -Destination ooshutup10.cfg
Start-BitsTransfer -Source "https://dl5.oo-software.com/files/ooshutup10/OOSU10.exe" -Destination OOSU10.exe
curl.exe -ss "https://raw.githubusercontent.com/ChrisTitusTech/win10script/master/ooshutup10.cfg" -o ooshutup10.cfg
curl.exe -ss "https://dl5.oo-software.com/files/ooshutup10/OOSU10.exe" -o OOSU10.exe
./OOSU10.exe ooshutup10.cfg /quiet
$WPFEssTweaksOO.IsChecked = $false
}
If ( $WPFEssTweaksRP.IsChecked -eq $true ) {
Write-Host "Creating Restore Point incase something bad happens"
Write-Host "Creating Restore Point in case something bad happens"
Enable-ComputerRestore -Drive "C:\"
Checkpoint-Computer -Description "RestorePoint1" -RestorePointType "MODIFY_SETTINGS"
$WPFEssTweaksRP.IsChecked = $false
@ -715,7 +795,8 @@ $WPFtweaksbutton.Add_Click({
Stop-Process $taskmgr
$preferences.Preferences[28] = 0
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\TaskManager" -Name "Preferences" -Type Binary -Value $preferences.Preferences
} else {Write-Host "Task Manager patch not run in builds 22557+ due to bug"}
}
else { Write-Host "Task Manager patch not run in builds 22557+ due to bug" }
Write-Host "Showing file operations details..."
If (!(Test-Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\OperationStatusManager")) {
@ -741,7 +822,7 @@ $WPFtweaksbutton.Add_Click({
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile" -Name "SystemResponsiveness" -Type DWord -Value 0000000a
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile" -Name "NetworkThrottlingIndex" -Type DWord -Value 0000000a
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control" -Name "WaitToKillServiceTimeout" -Type DWord -Value 2000
Set-ItemProperty -Path "HKLM:\Control Panel\Desktop" -Name "MenuShowDelay" -Type DWord -Value 0
Set-ItemProperty -Path "HKLM:\Control Panel\Desktop" -Name "MenuShowDelay" -Type DWord -Value 1
Set-ItemProperty -Path "HKLM:\Control Panel\Desktop" -Name "WaitToKillAppTimeout" -Type DWord -Value 5000
Set-ItemProperty -Path "HKLM:\Control Panel\Desktop" -Name "HungAppTimeout" -Type DWord -Value 4000
Set-ItemProperty -Path "HKLM:\Control Panel\Desktop" -Name "AutoEndTasks" -Type DWord -Value 1
@ -834,7 +915,7 @@ $WPFtweaksbutton.Add_Click({
Write-Host "Adjusting visual effects for performance..."
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "DragFullWindows" -Type String -Value 0
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "MenuShowDelay" -Type String -Value 200
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "UserPreferencesMask" -Type Binary -Value ([byte[]](144,18,3,128,16,0,0,0))
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "UserPreferencesMask" -Type Binary -Value ([byte[]](144, 18, 3, 128, 16, 0, 0, 0))
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop\WindowMetrics" -Name "MinAnimate" -Type String -Value 0
Set-ItemProperty -Path "HKCU:\Control Panel\Keyboard" -Name "KeyboardDelay" -Type DWord -Value 0
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "ListviewAlphaSelect" -Type DWord -Value 0
@ -941,7 +1022,7 @@ $WPFtweaksbutton.Add_Click({
Write-Host "Removing Bloatware"
foreach ($Bloat in $Bloatware) {
Get-AppxPackage -Name $Bloat| Remove-AppxPackage
Get-AppxPackage -Name $Bloat | Remove-AppxPackage
Get-AppxProvisionedPackage -Online | Where-Object DisplayName -like $Bloat | Remove-AppxProvisionedPackage -Online
Write-Host "Trying to remove $Bloat."
}
@ -954,13 +1035,13 @@ $WPFtweaksbutton.Add_Click({
$Messageboxbody = ("Done")
$MessageIcon = [System.Windows.MessageBoxImage]::Information
[System.Windows.MessageBox]::Show($Messageboxbody,$MessageboxTitle,$ButtonType,$MessageIcon)
})
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
})
#===========================================================================
# Undo All
#===========================================================================
$WPFundoall.Add_Click({
Write-Host "Creating Restore Point incase something bad happens"
Write-Host "Creating Restore Point in case something bad happens"
Enable-ComputerRestore -Drive "C:\"
Checkpoint-Computer -Description "RestorePoint1" -RestorePointType "MODIFY_SETTINGS"
@ -1072,7 +1153,7 @@ $WPFundoall.Add_Click({
Write-Output "Adjusting visual effects for appearance..."
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "DragFullWindows" -Type String -Value 1
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "MenuShowDelay" -Type String -Value 400
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "UserPreferencesMask" -Type Binary -Value ([byte[]](158,30,7,128,18,0,0,0))
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "UserPreferencesMask" -Type Binary -Value ([byte[]](158, 30, 7, 128, 18, 0, 0, 0))
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop\WindowMetrics" -Name "MinAnimate" -Type String -Value 1
Set-ItemProperty -Path "HKCU:\Control Panel\Keyboard" -Name "KeyboardDelay" -Type DWord -Value 1
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "ListviewAlphaSelect" -Type DWord -Value 1
@ -1093,44 +1174,44 @@ $WPFundoall.Add_Click({
$Messageboxbody = ("Done")
$MessageIcon = [System.Windows.MessageBoxImage]::Information
[System.Windows.MessageBox]::Show($Messageboxbody,$MessageboxTitle,$ButtonType,$MessageIcon)
})
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
})
#===========================================================================
# Tab 3 - Config Buttons
#===========================================================================
$WPFFeatureInstall.Add_Click({
If ( $WPFFeaturesdotnet.IsChecked -eq $true ) {
Enable-WindowsOptionalFeature -Online -FeatureName "NetFx4-AdvSrvs" -All
Enable-WindowsOptionalFeature -Online -FeatureName "NetFx3" -All
Enable-WindowsOptionalFeature -Online -FeatureName "NetFx4-AdvSrvs" -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "NetFx3" -All -NoRestart
}
If ( $WPFFeatureshyperv.IsChecked -eq $true ) {
Enable-WindowsOptionalFeature -Online -FeatureName "HypervisorPlatform" -All
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Hyper-V-All" -All
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Hyper-V" -All
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Hyper-V-Tools-All" -All
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Hyper-V-Management-PowerShell" -All
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Hyper-V-Hypervisor" -All
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Hyper-V-Services" -All
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Hyper-V-Management-Clients" -All
Enable-WindowsOptionalFeature -Online -FeatureName "HypervisorPlatform" -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Hyper-V-All" -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Hyper-V" -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Hyper-V-Tools-All" -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Hyper-V-Management-PowerShell" -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Hyper-V-Hypervisor" -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Hyper-V-Services" -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Hyper-V-Management-Clients" -All -NoRestart
cmd /c bcdedit /set hypervisorschedulertype classic
Write-Host "HyperV is now installed and configured. Please Reboot before using."
}
If ( $WPFFeatureslegacymedia.IsChecked -eq $true ) {
Enable-WindowsOptionalFeature -Online -FeatureName "WindowsMediaPlayer" -All
Enable-WindowsOptionalFeature -Online -FeatureName "MediaPlayback" -All
Enable-WindowsOptionalFeature -Online -FeatureName "DirectPlay" -All
Enable-WindowsOptionalFeature -Online -FeatureName "LegacyComponents" -All
Enable-WindowsOptionalFeature -Online -FeatureName "WindowsMediaPlayer" -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "MediaPlayback" -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "DirectPlay" -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "LegacyComponents" -All -NoRestart
}
If ( $WPFFeaturewsl.IsChecked -eq $true ) {
Enable-WindowsOptionalFeature -Online -FeatureName "VirtualMachinePlatform" -All
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Windows-Subsystem-Linux" -All
Enable-WindowsOptionalFeature -Online -FeatureName "VirtualMachinePlatform" -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "Microsoft-Windows-Subsystem-Linux" -All -NoRestart
Write-Host "WSL is now installed and configured. Please Reboot before using."
}
If ( $WPFFeaturenfs.IsChecked -eq $true ) {
Enable-WindowsOptionalFeature -Online -FeatureName "ServicesForNFS-ClientOnly" -All
Enable-WindowsOptionalFeature -Online -FeatureName "ClientForNFS-Infrastructure" -All
Enable-WindowsOptionalFeature -Online -FeatureName "NFS-Administration" -All
Enable-WindowsOptionalFeature -Online -FeatureName "ServicesForNFS-ClientOnly" -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "ClientForNFS-Infrastructure" -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName "NFS-Administration" -All -NoRestart
nfsadmin client stop
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default" -Name "AnonymousUID" -Type DWord -Value 0
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default" -Name "AnonymousGID" -Type DWord -Value 0
@ -1143,52 +1224,60 @@ $WPFFeatureInstall.Add_Click({
$Messageboxbody = ("Done")
$MessageIcon = [System.Windows.MessageBoxImage]::Information
[System.Windows.MessageBox]::Show($Messageboxbody,$MessageboxTitle,$ButtonType,$MessageIcon)
})
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
})
$WPFPanelDISM.Add_Click({
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
})
$WPFPanelcontrol.Add_Click({
cmd /c control
})
})
$WPFPanelnetwork.Add_Click({
cmd /c ncpa.cpl
})
cmd /c ncpa.cpl
})
$WPFPanelpower.Add_Click({
cmd /c powercfg.cpl
})
cmd /c powercfg.cpl
})
$WPFPanelsound.Add_Click({
cmd /c mmsys.cpl
})
cmd /c mmsys.cpl
})
$WPFPanelsystem.Add_Click({
cmd /c sysdm.cpl
})
cmd /c sysdm.cpl
})
$WPFPaneluser.Add_Click({
cmd /c "control userpasswords2"
})
cmd /c "control userpasswords2"
})
#===========================================================================
# Tab 4 - Updates Buttons
#===========================================================================
$WPFUpdatesdefault.Add_Click({
# Source: https://github.com/rgl/windows-vagrant/blob/master/disable-windows-updates.ps1 reversed!
# Source: https://github.com/rgl/windows-vagrant/blob/master/disable-windows-updates.ps1 reversed!
Set-StrictMode -Version Latest
$ProgressPreference = 'SilentlyContinue'
$ErrorActionPreference = 'Stop'
trap {
$ProgressPreference = 'SilentlyContinue'
$ErrorActionPreference = 'Stop'
trap {
Write-Host
Write-Host "ERROR: $_"
Write-Host (($_.ScriptStackTrace -split '\r?\n') -replace '^(.*)$','ERROR: $1')
Write-Host (($_.Exception.ToString() -split '\r?\n') -replace '^(.*)$','ERROR EXCEPTION: $1')
Write-Host (($_.ScriptStackTrace -split '\r?\n') -replace '^(.*)$', 'ERROR: $1')
Write-Host (($_.Exception.ToString() -split '\r?\n') -replace '^(.*)$', 'ERROR EXCEPTION: $1')
Write-Host
Write-Host 'Sleeping for 60m to give you time to look around the virtual machine before self-destruction...'
Start-Sleep -Seconds (60*60)
Start-Sleep -Seconds (60 * 60)
Exit 1
}
}
# disable automatic updates.
# XXX this does not seem to work anymore.
# see How to configure automatic updates by using Group Policy or registry settings
# at https://support.microsoft.com/en-us/help/328010
function New-Directory($path) {
# disable automatic updates.
# XXX this does not seem to work anymore.
# see How to configure automatic updates by using Group Policy or registry settings
# at https://support.microsoft.com/en-us/help/328010
function New-Directory($path) {
$p, $components = $path -split '[\\/]'
$components | ForEach-Object {
$p = "$p\$_"
@ -1197,25 +1286,25 @@ function New-Directory($path) {
}
}
$null
}
$auPath = 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU'
New-Directory $auPath
# set NoAutoUpdate.
# 0: Automatic Updates is enabled (default).
# 1: Automatic Updates is disabled.
New-ItemProperty `
}
$auPath = 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU'
New-Directory $auPath
# set NoAutoUpdate.
# 0: Automatic Updates is enabled (default).
# 1: Automatic Updates is disabled.
New-ItemProperty `
-Path $auPath `
-Name NoAutoUpdate `
-Value 0 `
-PropertyType DWORD `
-Force `
| Out-Null
# set AUOptions.
# 1: Keep my computer up to date has been disabled in Automatic Updates.
# 2: Notify of download and installation.
# 3: Automatically download and notify of installation.
# 4: Automatically download and scheduled installation.
New-ItemProperty `
# set AUOptions.
# 1: Keep my computer up to date has been disabled in Automatic Updates.
# 2: Notify of download and installation.
# 3: Automatically download and notify of installation.
# 4: Automatically download and scheduled installation.
New-ItemProperty `
-Path $auPath `
-Name AUOptions `
-Value 3 `
@ -1223,13 +1312,13 @@ New-ItemProperty `
-Force `
| Out-Null
# disable Windows Update Delivery Optimization.
# NB this applies to Windows 10.
# 0: Disabled
# 1: PCs on my local network
# 3: PCs on my local network, and PCs on the Internet
$deliveryOptimizationPath = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config'
If (Test-Path $deliveryOptimizationPath) {
# disable Windows Update Delivery Optimization.
# NB this applies to Windows 10.
# 0: Disabled
# 1: PCs on my local network
# 3: PCs on my local network, and PCs on the Internet
$deliveryOptimizationPath = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config'
If (Test-Path $deliveryOptimizationPath) {
New-ItemProperty `
-Path $deliveryOptimizationPath `
-Name DODownloadMode `
@ -1237,20 +1326,20 @@ If (Test-Path $deliveryOptimizationPath) {
-PropertyType DWORD `
-Force `
| Out-Null
}
# Service tweaks for Windows Update
}
# Service tweaks for Windows Update
$services = @(
$services = @(
"BITS"
"wuauserv"
)
)
foreach ($service in $services) {
foreach ($service in $services) {
# -ErrorAction SilentlyContinue is so it doesn't write an error to stdout if a service doesn't exist
Write-Host "Setting $service StartupType to Automatic"
Get-Service -Name $service -ErrorAction SilentlyContinue | Set-Service -StartupType Automatic
}
}
Write-Host "Enabling 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
@ -1264,7 +1353,8 @@ foreach ($service in $services) {
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
})
$WPFFixesUpdate.Add_Click({
### Reset Windows Update Script - reregister dlls, services, and remove registry entires.
Write-Host "1. Stopping Windows Update Services..."
Stop-Service -Name BITS
@ -1272,6 +1362,8 @@ foreach ($service in $services) {
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
@ -1339,9 +1431,10 @@ foreach ($service in $services) {
Get-BitsTransfer | Remove-BitsTransfer
Write-Host "10) Attempting to install the Windows Update Agent..."
If ($arch -eq 64) {
If (!((wmic OS get OSArchitecture | Out-String).IndexOf("64") -eq -1)) {
wusa Windows8-RT-KB2937636-x64 /quiet
} else {
}
else {
wusa Windows8-RT-KB2937636-x86 /quiet
}
@ -1361,29 +1454,29 @@ foreach ($service in $services) {
$Messageboxbody = ("Stock settings loaded.`n Please reboot your computer")
$MessageIcon = [System.Windows.MessageBoxImage]::Information
[System.Windows.MessageBox]::Show($Messageboxbody,$MessageboxTitle,$ButtonType,$MessageIcon)
})
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
})
$WPFUpdatesdisable.Add_Click({
# Source: https://github.com/rgl/windows-vagrant/blob/master/disable-windows-updates.ps1
Set-StrictMode -Version Latest
$ProgressPreference = 'SilentlyContinue'
$ErrorActionPreference = 'Stop'
trap {
$ProgressPreference = 'SilentlyContinue'
$ErrorActionPreference = 'Stop'
trap {
Write-Host
Write-Host "ERROR: $_"
Write-Host (($_.ScriptStackTrace -split '\r?\n') -replace '^(.*)$','ERROR: $1')
Write-Host (($_.Exception.ToString() -split '\r?\n') -replace '^(.*)$','ERROR EXCEPTION: $1')
Write-Host (($_.ScriptStackTrace -split '\r?\n') -replace '^(.*)$', 'ERROR: $1')
Write-Host (($_.Exception.ToString() -split '\r?\n') -replace '^(.*)$', 'ERROR EXCEPTION: $1')
Write-Host
Write-Host 'Sleeping for 60m to give you time to look around the virtual machine before self-destruction...'
Start-Sleep -Seconds (60*60)
Start-Sleep -Seconds (60 * 60)
Exit 1
}
}
# disable automatic updates.
# XXX this does not seem to work anymore.
# see How to configure automatic updates by using Group Policy or registry settings
# at https://support.microsoft.com/en-us/help/328010
function New-Directory($path) {
# disable automatic updates.
# XXX this does not seem to work anymore.
# see How to configure automatic updates by using Group Policy or registry settings
# at https://support.microsoft.com/en-us/help/328010
function New-Directory($path) {
$p, $components = $path -split '[\\/]'
$components | ForEach-Object {
$p = "$p\$_"
@ -1392,25 +1485,25 @@ function New-Directory($path) {
}
}
$null
}
$auPath = 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU'
New-Directory $auPath
# set NoAutoUpdate.
# 0: Automatic Updates is enabled (default).
# 1: Automatic Updates is disabled.
New-ItemProperty `
}
$auPath = 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU'
New-Directory $auPath
# set NoAutoUpdate.
# 0: Automatic Updates is enabled (default).
# 1: Automatic Updates is disabled.
New-ItemProperty `
-Path $auPath `
-Name NoAutoUpdate `
-Value 1 `
-PropertyType DWORD `
-Force `
| Out-Null
# set AUOptions.
# 1: Keep my computer up to date has been disabled in Automatic Updates.
# 2: Notify of download and installation.
# 3: Automatically download and notify of installation.
# 4: Automatically download and scheduled installation.
New-ItemProperty `
# set AUOptions.
# 1: Keep my computer up to date has been disabled in Automatic Updates.
# 2: Notify of download and installation.
# 3: Automatically download and notify of installation.
# 4: Automatically download and scheduled installation.
New-ItemProperty `
-Path $auPath `
-Name AUOptions `
-Value 1 `
@ -1418,13 +1511,13 @@ New-ItemProperty `
-Force `
| Out-Null
# disable Windows Update Delivery Optimization.
# NB this applies to Windows 10.
# 0: Disabled
# 1: PCs on my local network
# 3: PCs on my local network, and PCs on the Internet
$deliveryOptimizationPath = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config'
If (Test-Path $deliveryOptimizationPath) {
# disable Windows Update Delivery Optimization.
# NB this applies to Windows 10.
# 0: Disabled
# 1: PCs on my local network
# 3: PCs on my local network, and PCs on the Internet
$deliveryOptimizationPath = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config'
If (Test-Path $deliveryOptimizationPath) {
New-ItemProperty `
-Path $deliveryOptimizationPath `
-Name DODownloadMode `
@ -1432,22 +1525,22 @@ If (Test-Path $deliveryOptimizationPath) {
-PropertyType DWORD `
-Force `
| Out-Null
}
# Service tweaks for Windows Update
}
# Service tweaks for Windows Update
$services = @(
$services = @(
"BITS"
"wuauserv"
)
)
foreach ($service in $services) {
foreach ($service in $services) {
# -ErrorAction SilentlyContinue is so it doesn't write an error to stdout if a service doesn't exist
Write-Host "Setting $service StartupType to Disabled"
Get-Service -Name $service -ErrorAction SilentlyContinue | Set-Service -StartupType Disabled
}
}
})
})
$WPFUpdatessecurity.Add_Click({
Write-Host "Disabling driver offering through Windows Update..."
If (!(Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Device Metadata")) {
@ -1480,8 +1573,8 @@ $WPFUpdatessecurity.Add_Click({
$Messageboxbody = ("Recommended Update settings loaded")
$MessageIcon = [System.Windows.MessageBoxImage]::Information
[System.Windows.MessageBox]::Show($Messageboxbody,$MessageboxTitle,$ButtonType,$MessageIcon)
})
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
})
#===========================================================================
# Shows the form