################################################################################################################
### ###
### WARNING: This file is automatically generated DO NOT modify this file directly as it will be overwritten ###
### ###
################################################################################################################
<#
.NOTES
Author : Chris Titus @christitustech
Runspace Author: @DeveloperDurp
GitHub : https://github.com/ChrisTitusTech
Version : 23.09.13
#>
Start-Transcript $ENV:TEMP\Winutil.log -Append
#Load DLLs
Add-Type -AssemblyName System.Windows.Forms
# variable to sync between runspaces
$sync = [Hashtable]::Synchronized(@{})
$sync.PSScriptRoot = $PSScriptRoot
$sync.version = "23.09.13"
$sync.configs = @{}
$sync.ProcessRunning = $false
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
Write-Output "Winutil needs to be run as Administrator. Attempting to relaunch."
Start-Process -Verb runas -FilePath powershell.exe -ArgumentList "iwr -useb https://christitus.com/win | iex"
break
}
Function Get-WinUtilCheckBoxes {
<#
.DESCRIPTION
Function is meant to find all checkboxes that are checked on the specific tab and input them into a script.
Outputed data will be the names of the checkboxes that were checked
.EXAMPLE
Get-WinUtilCheckBoxes "WPFInstall"
#>
Param(
$Group,
[boolean]$unCheck = $true
)
$Output = New-Object System.Collections.Generic.List[System.Object]
if($Group -eq "WPFInstall"){
$filter = Get-WinUtilVariables -Type Checkbox | Where-Object {$psitem -like "WPFInstall*"}
$CheckBoxes = $sync.GetEnumerator() | Where-Object {$psitem.Key -in $filter}
Foreach ($CheckBox in $CheckBoxes){
if($CheckBox.value.ischecked -eq $true){
$sync.configs.applications.$($CheckBox.Name).winget -split ";" | ForEach-Object {
$Output.Add($psitem)
}
if ($uncheck -eq $true){
$CheckBox.value.ischecked = $false
}
}
}
}
if($Group -eq "WPFTweaks"){
$filter = Get-WinUtilVariables -Type Checkbox | Where-Object {$psitem -like "WPF*Tweaks*"}
$CheckBoxes = $sync.GetEnumerator() | Where-Object {$psitem.Key -in $filter}
Foreach ($CheckBox in $CheckBoxes){
if($CheckBox.value.ischecked -eq $true){
$Output.Add($Checkbox.Name)
if ($uncheck -eq $true){
$CheckBox.value.ischecked = $false
}
}
}
}
if($Group -eq "WPFFeature"){
$filter = Get-WinUtilVariables -Type Checkbox | Where-Object {$psitem -like "WPF*Feature*"}
$CheckBoxes = $sync.GetEnumerator() | Where-Object {$psitem.Key -in $filter}
Foreach ($CheckBox in $CheckBoxes){
if($CheckBox.value.ischecked -eq $true){
$Output.Add($Checkbox.Name)
if ($uncheck -eq $true){
$CheckBox.value.ischecked = $false
}
}
}
}
Write-Output $($Output | Select-Object -Unique)
}
function Get-WinUtilInstallerProcess {
<#
.DESCRIPTION
Meant to check for running processes and will return a boolean response
#>
param($Process)
if ($Null -eq $Process){
return $false
}
if (Get-Process -Id $Process.Id -ErrorAction SilentlyContinue){
return $true
}
return $false
}
function Get-WinUtilRegistry {
<#
.DESCRIPTION
This function will make all modifications to the registry
.EXAMPLE
Set-WinUtilRegistry -Name "PublishUserActivities" -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" -Type "DWord" -Value "0"
#>
param (
$Name,
$Path,
$Type,
$Value
)
Try{
$syscheckvalue = Get-ItemPropertyValue -Path $Path -Value $Value # Return Value
}
Catch [System.Security.SecurityException] {
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
}
Catch [System.Management.Automation.ItemNotFoundException] {
Write-Warning $psitem.Exception.ErrorRecord
}
Catch{
Write-Warning "Unable to set $Name due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}
Function Get-WinUtilToggleStatus {
<#
.DESCRIPTION
Meant to pull the registry keys for a toggle switch and returns true or false
True should mean status is enabled
False should mean status is disabled
#>
Param($ToggleSwitch)
if($ToggleSwitch -eq "WPFToggleDarkMode"){
$app = (Get-ItemProperty -path 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize').AppsUseLightTheme
$system = (Get-ItemProperty -path 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize').SystemUsesLightTheme
if($app -eq 0 -and $system -eq 0){
return $true
}
else{
return $false
}
}
if($ToggleSwitch -eq "WPFToggleBingSearch"){
$bingsearch = (Get-ItemProperty -path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Search').BingSearchEnabled
if($bingsearch -eq 0){
return $false
}
else{
return $true
}
}
}
function Get-WinUtilVariables {
<#
.DESCRIPTION
placeholder
#>
param (
[Parameter()]
[ValidateSet("CheckBox", "Button")]
[string]$Type
)
$keys = $sync.keys | Where-Object {$psitem -like "WPF*"}
if($type){
$output = $keys | ForEach-Object {
Try{
if ($sync["$psitem"].GetType() -like "*$type*"){
Write-Output $psitem
}
}
Catch{<#I am here so errors don't get outputted for a couple variables that don't have the .GetType() attribute#>}
}
return $output
}
return $keys
}
function Install-WinUtilChoco {
<#
.DESCRIPTION
Function is meant to ensure Choco is installed
#>
try{
Write-Host "Checking if Chocolatey is Installed..."
if((Test-WinUtilPackageManager -choco)){
Write-Host "Chocolatey Already Installed"
return
}
Write-Host "Seems Chocolatey is not installed, installing now?"
#Let user decide if he wants to install Chocolatey
$confirmation = Read-Host "Are you Sure You Want To Proceed:(y/n)"
if ($confirmation -eq 'y') {
Set-ExecutionPolicy Bypass -Scope Process -Force; Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) -ErrorAction Stop
powershell choco feature enable -n allowGlobalConfirmation
}
}
Catch{
throw [ChocoFailedInstall]::new('Failed to install')
}
}
Function Install-WinUtilProgramWinget {
<#
.DESCRIPTION
This will install programs via Winget using a new powershell.exe instance to prevent the GUI from locking up.
Note the triple quotes are required any time you need a " in a normal script block.
#>
param(
$ProgramsToInstall,
$manage = "Installing"
)
$x = 0
$count = $($ProgramsToInstall -split ",").Count
Write-Progress -Activity "$manage Applications" -Status "Starting" -PercentComplete 0
Foreach ($Program in $($ProgramsToInstall -split ",")){
Write-Progress -Activity "$manage Applications" -Status "$manage $Program $($x + 1) of $count" -PercentComplete $($x/$count*100)
if($manage -eq "Installing"){
Start-Process -FilePath winget -ArgumentList "install -e --accept-source-agreements --accept-package-agreements --silent $Program" -NoNewWindow -Wait
}
if($manage -eq "Uninstalling"){
Start-Process -FilePath winget -ArgumentList "remove -e --purge --force --silent $Program" -NoNewWindow -Wait
}
$X++
}
Write-Progress -Activity "$manage Applications" -Status "Finished" -Completed
}
function Get-LatestHash {
$shaUrl = ((Invoke-WebRequest $apiLatestUrl -UseBasicParsing | ConvertFrom-Json).assets | Where-Object { $_.name -match '^Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.txt$' }).browser_download_url
$shaFile = Join-Path -Path $tempFolder -ChildPath 'Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.txt'
$WebClient.DownloadFile($shaUrl, $shaFile)
Get-Content $shaFile
}
function Install-WinUtilWinget {
<#
.DESCRIPTION
Function is meant to ensure winget is installed
#>
Try{
Write-Host "Checking if Winget is Installed..."
if (Test-WinUtilPackageManager -winget) {
#Checks if winget executable exists and if the Windows Version is 1809 or higher
Write-Host "Winget Already Installed"
return
}
#Gets the computer's information
if ($null -eq $sync.ComputerInfo){
$ComputerInfo = Get-ComputerInfo -ErrorAction Stop
}
Else {
$ComputerInfo = $sync.ComputerInfo
}
if (($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)"
return
}
Write-Host "Running Alternative Installer and Direct Installing"
Start-Process -Verb runas -FilePath powershell.exe -ArgumentList "irm https://raw.githubusercontent.com/ChrisTitusTech/winutil/main/winget.ps1 | iex"
Write-Host "Winget Installed"
}
Catch{
throw [WingetFailedInstall]::new('Failed to install')
}
}
function Invoke-WinUtilBingSearch {
<#
.DESCRIPTION
Sets Bing Search on or off
#>
Param($Enabled)
Try{
if ($Enabled -eq $false){
Write-Host "Enabling Bing Search"
$value = 1
}
else {
Write-Host "Disabling Bing Search"
$value = 0
}
$Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Search"
Set-ItemProperty -Path $Path -Name BingSearchEnabled -Value $value
}
Catch [System.Security.SecurityException] {
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
}
Catch [System.Management.Automation.ItemNotFoundException] {
Write-Warning $psitem.Exception.ErrorRecord
}
Catch{
Write-Warning "Unable to set $Name due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}
Function Invoke-WinUtilCurrentSystem {
<#
.DESCRIPTION
Function is meant to read existing system registry and check according configuration.
Example: Is telemetry enabled? check the box.
.EXAMPLE
Get-WinUtilCheckBoxes "WPFInstall"
#>
param(
$CheckBox
)
if ($checkbox -eq "winget"){
$originalEncoding = [Console]::OutputEncoding
[Console]::OutputEncoding = [System.Text.UTF8Encoding]::new()
$Sync.InstalledPrograms = winget list -s winget | Select-Object -skip 3 | ConvertFrom-String -PropertyNames "Name", "Id", "Version", "Available" -Delimiter '\s{2,}'
[Console]::OutputEncoding = $originalEncoding
$filter = Get-WinUtilVariables -Type Checkbox | Where-Object {$psitem -like "WPFInstall*"}
$sync.GetEnumerator() | Where-Object {$psitem.Key -in $filter} | ForEach-Object {
$dependencies = $($sync.configs.applications.$($psitem.Key).winget -split ";")
Foreach ($dependency in $dependencies) {
if($dependency -in $sync.InstalledPrograms.Id){
Write-Output $psitem.name
}
}
}
}
if($CheckBox -eq "tweaks"){
if(!(Test-Path 'HKU:\')){New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS}
$ScheduledTasks = Get-ScheduledTask
$sync.configs.tweaks | Get-Member -MemberType NoteProperty | ForEach-Object {
$Config = $psitem.Name
#WPFEssTweaksTele
$registryKeys = $sync.configs.tweaks.$Config.registry
$scheduledtaskKeys = $sync.configs.tweaks.$Config.scheduledtask
$serviceKeys = $sync.configs.tweaks.$Config.service
if($registryKeys -or $scheduledtaskKeys -or $serviceKeys){
$Values = @()
Foreach ($tweaks in $registryKeys){
Foreach($tweak in $tweaks){
if(test-path $tweak.Path){
$actualValue = Get-ItemProperty -Name $tweak.Name -Path $tweak.Path -ErrorAction SilentlyContinue | Select-Object -ExpandProperty $($tweak.Name)
$expectedValue = $tweak.Value
if ($expectedValue -notlike $actualValue){
$values += $False
}
}
}
}
Foreach ($tweaks in $scheduledtaskKeys){
Foreach($tweak in $tweaks){
$task = $ScheduledTasks | Where-Object {$($psitem.TaskPath + $psitem.TaskName) -like "\$($tweak.name)"}
if($task){
$actualValue = $task.State
$expectedValue = $tweak.State
if ($expectedValue -ne $actualValue){
$values += $False
}
}
}
}
Foreach ($tweaks in $serviceKeys){
Foreach($tweak in $tweaks){
$Service = Get-Service -Name $tweak.Name
if($Service){
$actualValue = $Service.StartType
$expectedValue = $tweak.StartupType
if ($expectedValue -ne $actualValue){
$values += $False
}
}
}
}
if($values -notcontains $false){
Write-Output $Config
}
}
}
}
}
Function Invoke-WinUtilDarkMode {
<#
.DESCRIPTION
Sets Dark Mode on or off
#>
Param($DarkMoveEnabled)
Try{
if ($DarkMoveEnabled -eq $false){
Write-Host "Enabling Dark Mode"
$DarkMoveValue = 0
}
else {
Write-Host "Disabling Dark Mode"
$DarkMoveValue = 1
}
$Theme = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize"
Set-ItemProperty -Path $Theme -Name AppsUseLightTheme -Value $DarkMoveValue
Set-ItemProperty -Path $Theme -Name SystemUsesLightTheme -Value $DarkMoveValue
}
Catch [System.Security.SecurityException] {
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
}
Catch [System.Management.Automation.ItemNotFoundException] {
Write-Warning $psitem.Exception.ErrorRecord
}
Catch{
Write-Warning "Unable to set $Name due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}
function Invoke-WinUtilFeatureInstall {
<#
.DESCRIPTION
This function converts all the values from the tweaks.json and routes them to the appropriate function
#>
param(
$CheckBox
)
$CheckBox | ForEach-Object {
if($sync.configs.feature.$psitem.feature){
Foreach( $feature in $sync.configs.feature.$psitem.feature ){
Try{
Write-Host "Installing $feature"
Enable-WindowsOptionalFeature -Online -FeatureName $feature -All -NoRestart
}
Catch{
if ($psitem.Exception.Message -like "*requires elevation*"){
Write-Warning "Unable to Install $feature due to permissions. Are you running as admin?"
}
else{
Write-Warning "Unable to Install $feature due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}
}
}
if($sync.configs.feature.$psitem.InvokeScript){
Foreach( $script in $sync.configs.feature.$psitem.InvokeScript ){
Try{
$Scriptblock = [scriptblock]::Create($script)
Write-Host "Running Script for $psitem"
Invoke-Command $scriptblock -ErrorAction stop
}
Catch{
if ($psitem.Exception.Message -like "*requires elevation*"){
Write-Warning "Unable to Install $feature due to permissions. Are you running as admin?"
}
else{
Write-Warning "Unable to Install $feature due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}
}
}
}
}
function Invoke-WinUtilScript {
<#
.DESCRIPTION
This function will run a separate powershell script. Meant for things that can't be handled with the other functions
.EXAMPLE
$Scriptblock = [scriptblock]::Create({"Write-output 'Hello World'"})
Invoke-WinUtilScript -ScriptBlock $scriptblock -Name "Hello World"
#>
param (
$Name,
[scriptblock]$scriptblock
)
Try {
Write-Host "Running Script for $name"
Invoke-Command $scriptblock -ErrorAction Stop
}
Catch [System.Management.Automation.CommandNotFoundException] {
Write-Warning "The specified command was not found."
Write-Warning $PSItem.Exception.message
}
Catch [System.Management.Automation.RuntimeException] {
Write-Warning "A runtime exception occurred."
Write-Warning $PSItem.Exception.message
}
Catch [System.Security.SecurityException] {
Write-Warning "A security exception occurred."
Write-Warning $PSItem.Exception.message
}
Catch [System.UnauthorizedAccessException] {
Write-Warning "Access denied. You do not have permission to perform this operation."
Write-Warning $PSItem.Exception.message
}
Catch {
# Generic catch block to handle any other type of exception
Write-Warning "Unable to run script for $name due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}
function Invoke-WinUtilTweaks {
<#
.DESCRIPTION
This function converts all the values from the tweaks.json and routes them to the appropriate function
#>
param(
$CheckBox,
$undo = $false
)
if($undo){
$Values = @{
Registry = "OriginalValue"
ScheduledTask = "OriginalState"
Service = "OriginalType"
ScriptType = "UndoScript"
}
}
Else{
$Values = @{
Registry = "Value"
ScheduledTask = "State"
Service = "StartupType"
ScriptType = "InvokeScript"
}
}
if($sync.configs.tweaks.$CheckBox.ScheduledTask){
$sync.configs.tweaks.$CheckBox.ScheduledTask | ForEach-Object {
Set-WinUtilScheduledTask -Name $psitem.Name -State $psitem.$($values.ScheduledTask)
}
}
if($sync.configs.tweaks.$CheckBox.service){
$sync.configs.tweaks.$CheckBox.service | ForEach-Object {
Set-WinUtilService -Name $psitem.Name -StartupType $psitem.$($values.Service)
}
}
if($sync.configs.tweaks.$CheckBox.registry){
$sync.configs.tweaks.$CheckBox.registry | ForEach-Object {
Set-WinUtilRegistry -Name $psitem.Name -Path $psitem.Path -Type $psitem.Type -Value $psitem.$($values.registry)
}
}
if($sync.configs.tweaks.$CheckBox.$($values.ScriptType)){
$sync.configs.tweaks.$CheckBox.$($values.ScriptType) | ForEach-Object {
$Scriptblock = [scriptblock]::Create($psitem)
Invoke-WinUtilScript -ScriptBlock $scriptblock -Name $CheckBox
}
}
if(!$undo){
if($sync.configs.tweaks.$CheckBox.appx){
$sync.configs.tweaks.$CheckBox.appx | ForEach-Object {
Remove-WinUtilAPPX -Name $psitem
}
}
}
}
function Remove-WinUtilAPPX {
<#
.DESCRIPTION
This function will remove any of the provided APPX names
.EXAMPLE
Remove-WinUtilAPPX -Name "Microsoft.Microsoft3DViewer"
#>
param (
$Name
)
Try{
Write-Host "Removing $Name"
Get-AppxPackage "*$Name*" | Remove-AppxPackage -ErrorAction SilentlyContinue
Get-AppxProvisionedPackage -Online | Where-Object DisplayName -like "*$Name*" | Remove-AppxProvisionedPackage -Online -ErrorAction SilentlyContinue
}
Catch [System.Exception] {
if($psitem.Exception.Message -like "*The requested operation requires elevation*"){
Write-Warning "Unable to uninstall $name due to a Security Exception"
}
Else{
Write-Warning "Unable to uninstall $name due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}
Catch{
Write-Warning "Unable to uninstall $name due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}
function Set-WinUtilDNS {
<#
.DESCRIPTION
This function will set the DNS of all interfaces that are in the "Up" state. It will lookup the values from the DNS.Json file
.EXAMPLE
Set-WinUtilDNS -DNSProvider "google"
#>
param($DNSProvider)
if($DNSProvider -eq "Default"){return}
Try{
$Adapters = Get-NetAdapter | Where-Object {$_.Status -eq "Up"}
Write-Host "Ensuring DNS is set to $DNSProvider on the following interfaces"
Write-Host $($Adapters | Out-String)
Foreach ($Adapter in $Adapters){
if($DNSProvider -eq "DHCP"){
Set-DnsClientServerAddress -InterfaceIndex $Adapter.ifIndex -ResetServerAddresses
}
Else{
Set-DnsClientServerAddress -InterfaceIndex $Adapter.ifIndex -ServerAddresses ("$($sync.configs.dns.$DNSProvider.Primary)", "$($sync.configs.dns.$DNSProvider.Secondary)")
}
}
}
Catch{
Write-Warning "Unable to set DNS Provider due to an unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}
function Set-WinUtilRegistry {
<#
.DESCRIPTION
This function will make all modifications to the registry
.EXAMPLE
Set-WinUtilRegistry -Name "PublishUserActivities" -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" -Type "DWord" -Value "0"
#>
param (
$Name,
$Path,
$Type,
$Value
)
Try{
if(!(Test-Path 'HKU:\')){New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS}
If (!(Test-Path $Path)) {
Write-Host "$Path was not found, Creating..."
New-Item -Path $Path -Force -ErrorAction Stop | Out-Null
}
Write-Host "Set $Path\$Name to $Value"
Set-ItemProperty -Path $Path -Name $Name -Type $Type -Value $Value -Force -ErrorAction Stop | Out-Null
}
Catch [System.Security.SecurityException] {
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
}
Catch [System.Management.Automation.ItemNotFoundException] {
Write-Warning $psitem.Exception.ErrorRecord
}
Catch{
Write-Warning "Unable to set $Name due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}
function Set-WinUtilRestorePoint {
<#
.DESCRIPTION
This function will make a Restore Point
#>
# Check if the user has administrative privileges
if (-Not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
Write-Host "Please run this script as an administrator."
return
}
# Check if System Restore is enabled for the main drive
try {
# Try getting restore points to check if System Restore is enabled
Enable-ComputerRestore -Drive "$env:SystemDrive"
} catch {
Write-Host "An error occurred while enabling System Restore: $_"
}
# Get all the restore points for the current day
$existingRestorePoints = Get-ComputerRestorePoint | Where-Object { $_.CreationTime.Date -eq (Get-Date).Date }
# Check if there is already a restore point created today
if ($existingRestorePoints.Count -eq 0) {
$description = "System Restore Point created by WinUtil"
Checkpoint-Computer -Description $description -RestorePointType "MODIFY_SETTINGS"
Write-Host -ForegroundColor Green "System Restore Point Created Successfully"
}
}
function Set-WinUtilScheduledTask {
<#
.DESCRIPTION
This function will enable/disable the provided Scheduled Task
.EXAMPLE
Set-WinUtilScheduledTask -Name "Microsoft\Windows\Application Experience\Microsoft Compatibility Appraiser" -State "Disabled"
#>
param (
$Name,
$State
)
Try{
if($State -eq "Disabled"){
Write-Host "Disabling Scheduled Task $Name"
Disable-ScheduledTask -TaskName $Name -ErrorAction Stop
}
if($State -eq "Enabled"){
Write-Host "Enabling Scheduled Task $Name"
Enable-ScheduledTask -TaskName $Name -ErrorAction Stop
}
}
Catch [System.Exception]{
if($psitem.Exception.Message -like "*The system cannot find the file specified*"){
Write-Warning "Scheduled Task $name was not Found"
}
Else{
Write-Warning "Unable to set $Name due to unhandled exception"
Write-Warning $psitem.Exception.Message
}
}
Catch{
Write-Warning "Unable to run script for $name due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}
Function Set-WinUtilService {
<#
.DESCRIPTION
This function will change the startup type of services and start/stop them as needed
.EXAMPLE
Set-WinUtilService -Name "HomeGroupListener" -StartupType "Manual"
#>
param (
$Name,
$StartupType
)
try {
Write-Host "Setting Service $Name to $StartupType"
# Check if the service exists
$service = Get-Service -Name $Name -ErrorAction Stop
# Service exists, proceed with changing properties
$service | Set-Service -StartupType $StartupType -ErrorAction Stop
}
catch [System.ServiceProcess.ServiceNotFoundException] {
Write-Warning "Service $Name was not found"
}
catch {
Write-Warning "Unable to set $Name due to unhandled exception"
Write-Warning $_.Exception.Message
}
}
function Set-WinUtilUITheme {
<#
.DESCRIPTION
This function will set theme to the XAML file
.EXAMPLE
Set-WinUtilUITheme -inputXAML $inputXAML
#>
param
(
[Parameter(Mandatory=$true, Position=0)]
[string] $inputXML,
[Parameter(Mandatory=$false, Position=1)]
[string] $themeName = 'matrix'
)
try {
# Convert the JSON to a PowerShell object
$themes = $sync.configs.themes
# Select the specified theme
$selectedTheme = $themes.$themeName
if ($selectedTheme) {
# Loop through all key-value pairs in the selected theme
foreach ($property in $selectedTheme.PSObject.Properties) {
$key = $property.Name
$value = $property.Value
# Add curly braces around the key
$formattedKey = "{$key}"
# Replace the key with the value in the input XML
$inputXML = $inputXML.Replace($formattedKey, $value)
}
}
else {
Write-Host "Theme '$themeName' not found."
}
}
catch {
Write-Warning "Unable to apply theme"
Write-Warning $psitem.Exception.StackTrace
}
return $inputXML;
}
function Test-WinUtilPackageManager {
<#
.DESCRIPTION
Checks for Winget or Choco depending on the parameter
#>
Param(
[System.Management.Automation.SwitchParameter]$winget,
[System.Management.Automation.SwitchParameter]$choco
)
if($winget){
if (Test-Path ~\AppData\Local\Microsoft\WindowsApps\winget.exe) {
return $true
}
}
if($choco){
if ((Get-Command -Name choco -ErrorAction Ignore) -and ($chocoVersion = (Get-Item "$env:ChocolateyInstall\choco.exe" -ErrorAction Ignore).VersionInfo.ProductVersion)){
return $true
}
}
return $false
}
Function Update-WinUtilProgramWinget {
<#
.DESCRIPTION
This will update programs via Winget using a new powershell.exe instance to prevent the GUI from locking up.
#>
[ScriptBlock]$wingetinstall = {
$host.ui.RawUI.WindowTitle = """Winget Install"""
Start-Transcript $ENV:TEMP\winget-update.log -Append
winget upgrade --all
Pause
}
$global:WinGetInstall = Start-Process -Verb runas powershell -ArgumentList "-command invoke-command -scriptblock {$wingetinstall} -argumentlist '$($ProgramsToInstall -join ",")'" -PassThru
}
function Invoke-WPFButton {
<#
.DESCRIPTION
Meant to make creating buttons easier. There is a section below in the gui that will assign this function to every button.
This way you can dictate what each button does from this function.
Input will be the name of the button that is clicked.
#>
Param ([string]$Button)
#Use this to get the name of the button
#[System.Windows.MessageBox]::Show("$Button","Chris Titus Tech's Windows Utility","OK","Info")
Switch -Wildcard ($Button){
"WPFTab?BT" {Invoke-WPFTab $Button}
"WPFinstall" {Invoke-WPFInstall}
"WPFuninstall" {Invoke-WPFUnInstall}
"WPFInstallUpgrade" {Invoke-WPFInstallUpgrade}
"WPFdesktop" {Invoke-WPFPresets "Desktop"}
"WPFlaptop" {Invoke-WPFPresets "laptop"}
"WPFminimal" {Invoke-WPFPresets "minimal"}
"WPFexport" {Invoke-WPFImpex -type "export" -CheckBox "WPFTweaks"}
"WPFimport" {Invoke-WPFImpex -type "import" -CheckBox "WPFTweaks"}
"WPFexportWinget" {Invoke-WPFImpex -type "export" -CheckBox "WPFInstall"}
"WPFimportWinget" {Invoke-WPFImpex -type "import" -CheckBox "WPFInstall"}
"WPFclear" {Invoke-WPFPresets -preset $null -imported $true}
"WPFclearWinget" {Invoke-WPFPresets -preset $null -imported $true -CheckBox "WPFInstall"}
"WPFtweaksbutton" {Invoke-WPFtweaksbutton}
"WPFAddUltPerf" {Invoke-WPFUltimatePerformance -State "Enabled"}
"WPFRemoveUltPerf" {Invoke-WPFUltimatePerformance -State "Disabled"}
"WPFToggleDarkMode" {Invoke-WPFDarkMode -DarkMoveEnabled $(Get-WinUtilDarkMode)}
"WPFundoall" {Invoke-WPFundoall}
"WPFFeatureInstall" {Invoke-WPFFeatureInstall}
"WPFPanelDISM" {Invoke-WPFPanelDISM}
"WPFPanelAutologin" {Invoke-WPFPanelAutologin}
"WPFPanelcontrol" {Invoke-WPFControlPanel -Panel $button}
"WPFPanelnetwork" {Invoke-WPFControlPanel -Panel $button}
"WPFPanelpower" {Invoke-WPFControlPanel -Panel $button}
"WPFPanelregion" {Invoke-WPFControlPanel -Panel $button}
"WPFPanelsound" {Invoke-WPFControlPanel -Panel $button}
"WPFPanelsystem" {Invoke-WPFControlPanel -Panel $button}
"WPFPaneluser" {Invoke-WPFControlPanel -Panel $button}
"WPFUpdatesdefault" {Invoke-WPFUpdatesdefault}
"WPFFixesUpdate" {Invoke-WPFFixesUpdate}
"WPFFixesNetwork" {Invoke-WPFFixesNetwork}
"WPFUpdatesdisable" {Invoke-WPFUpdatesdisable}
"WPFUpdatessecurity" {Invoke-WPFUpdatessecurity}
"WPFWinUtilShortcut" {Invoke-WPFShortcut -ShortcutToAdd "WinUtil"}
"WPFGetInstalled" {Invoke-WPFGetInstalled -CheckBox "winget"}
"WPFGetInstalledTweaks" {Invoke-WPFGetInstalled -CheckBox "tweaks"}
}
}
function Invoke-WPFControlPanel {
<#
.DESCRIPTION
Simple Switch for legacy windows
#>
param($Panel)
switch ($Panel){
"WPFPanelcontrol" {cmd /c control}
"WPFPanelnetwork" {cmd /c ncpa.cpl}
"WPFPanelpower" {cmd /c powercfg.cpl}
"WPFPanelregion" {cmd /c intl.cpl}
"WPFPanelsound" {cmd /c mmsys.cpl}
"WPFPanelsystem" {cmd /c sysdm.cpl}
"WPFPaneluser" {cmd /c "control userpasswords2"}
}
}
function Invoke-WPFFeatureInstall {
<#
.DESCRIPTION
GUI Function to install Windows Features
#>
if($sync.ProcessRunning){
$msg = "Install process is currently running."
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
return
}
$Features = Get-WinUtilCheckBoxes -Group "WPFFeature"
Invoke-WPFRunspace -ArgumentList $Features -ScriptBlock {
param($Features)
$sync.ProcessRunning = $true
Invoke-WinUtilFeatureInstall $Features
$sync.ProcessRunning = $false
Write-Host "==================================="
Write-Host "--- Features are Installed ---"
Write-Host "--- A Reboot may be required ---"
Write-Host "==================================="
$ButtonType = [System.Windows.MessageBoxButton]::OK
$MessageboxTitle = "All features are now installed "
$Messageboxbody = ("Done")
$MessageIcon = [System.Windows.MessageBoxImage]::Information
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
}
}
function Invoke-WPFFixesNetwork {
<#
.DESCRIPTION
PlaceHolder
#>
Write-Host "Resetting Network with netsh"
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 "Process complete. Please reboot your computer."
$ButtonType = [System.Windows.MessageBoxButton]::OK
$MessageboxTitle = "Network Reset "
$Messageboxbody = ("Stock settings loaded.`n Please reboot your computer")
$MessageIcon = [System.Windows.MessageBoxImage]::Information
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
Write-Host "================================="
Write-Host "-- Reset Network Configuration --"
Write-Host "================================="
}
function Invoke-WPFFixesUpdate {
<#
.DESCRIPTION
PlaceHolder
#>
### Reset Windows Update Script - reregister dlls, services, and remove registry entries.
Write-Host "1. Stopping Windows Update Services..."
Stop-Service -Name BITS
Stop-Service -Name wuauserv
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
Write-Host "3. Renaming the Software Distribution and CatRoot Folder..."
Rename-Item $env:systemroot\SoftwareDistribution SoftwareDistribution.bak -ErrorAction SilentlyContinue
Rename-Item $env:systemroot\System32\Catroot2 catroot2.bak -ErrorAction SilentlyContinue
Write-Host "4. Removing old Windows Update log..."
Remove-Item $env:systemroot\WindowsUpdate.log -ErrorAction SilentlyContinue
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)"
Set-Location $env:systemroot\system32
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..."
Get-BitsTransfer | Remove-BitsTransfer
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"
}
Write-Host "11) Starting Windows Update Services..."
Start-Service -Name BITS
Start-Service -Name wuauserv
Start-Service -Name appidsvc
Start-Service -Name cryptsvc
Write-Host "12) Forcing discovery..."
Start-Process -NoNewWindow -FilePath "wuauclt" -ArgumentList "/resetauthorization", "/detectnow"
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)
Write-Host "================================="
Write-Host "-- Reset ALL Updates to Factory -"
Write-Host "================================="
}
Function Invoke-WPFFormVariables {
<#
.DESCRIPTION
PlaceHolder
#>
#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 ""
Write-Host " CCCCCCCCCCCCCTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT "
Write-Host " CCC::::::::::::CT:::::::::::::::::::::TT:::::::::::::::::::::T "
Write-Host "CC:::::::::::::::CT:::::::::::::::::::::TT:::::::::::::::::::::T "
Write-Host "C:::::CCCCCCCC::::CT:::::TT:::::::TT:::::TT:::::TT:::::::TT:::::T "
Write-Host "C:::::C CCCCCCTTTTTT T:::::T TTTTTTTTTTTT T:::::T TTTTTT"
Write-Host "C:::::C T:::::T T:::::T "
Write-Host "C:::::C T:::::T T:::::T "
Write-Host "C:::::C T:::::T T:::::T "
Write-Host "C:::::C T:::::T T:::::T "
Write-Host "C:::::C T:::::T T:::::T "
Write-Host "C:::::C T:::::T T:::::T "
Write-Host "C:::::C CCCCCC T:::::T T:::::T "
Write-Host "C:::::CCCCCCCC::::C TT:::::::TT TT:::::::TT "
Write-Host "CC:::::::::::::::C T:::::::::T T:::::::::T "
Write-Host "CCC::::::::::::C T:::::::::T T:::::::::T "
Write-Host " CCCCCCCCCCCCC TTTTTTTTTTT TTTTTTTTTTT "
Write-Host ""
Write-Host "====Chris Titus Tech====="
Write-Host "=====Windows Toolbox====="
#====DEBUG GUI Elements====
#Write-Host "Found the following interactable elements from our form" -ForegroundColor Cyan
#get-variable WPF*
}
function Invoke-WPFGetInstalled {
<#
.DESCRIPTION
placeholder
#>
param($checkbox)
if($sync.ProcessRunning){
$msg = "Install process is currently running."
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
return
}
if(!(Test-WinUtilPackageManager -winget) -and $checkbox -eq "winget"){
Write-Host "==========================================="
Write-Host "-- Winget is not installed ---"
Write-Host "==========================================="
return
}
Invoke-WPFRunspace -ArgumentList $checkbox -ScriptBlock {
param($checkbox)
$sync.ProcessRunning = $true
if($checkbox -eq "winget"){
Write-Host "Getting Installed Programs..."
}
if($checkbox -eq "tweaks"){
Write-Host "Getting Installed Tweaks..."
}
$Checkboxes = Invoke-WinUtilCurrentSystem -CheckBox $checkbox
$sync.form.Dispatcher.invoke({
foreach($checkbox in $Checkboxes){
$sync.$checkbox.ischecked = $True
}
})
Write-Host "Done..."
$sync.ProcessRunning = $false
}
}
function Invoke-WPFImpex {
<#
.DESCRIPTION
This function handles importing and exporting of the checkboxes checked for the tweaks section
.EXAMPLE
Invoke-WPFImpex -type "export"
#>
param(
$type,
$checkbox
)
if ($type -eq "export"){
$FileBrowser = New-Object System.Windows.Forms.SaveFileDialog
}
if ($type -eq "import"){
$FileBrowser = New-Object System.Windows.Forms.OpenFileDialog
}
$FileBrowser.InitialDirectory = [Environment]::GetFolderPath('Desktop')
$FileBrowser.Filter = "JSON Files (*.json)|*.json"
$FileBrowser.ShowDialog() | Out-Null
if($FileBrowser.FileName -eq ""){
return
}
if ($type -eq "export"){
$jsonFile = Get-WinUtilCheckBoxes $checkbox -unCheck $false
$jsonFile | ConvertTo-Json | Out-File $FileBrowser.FileName -Force
}
if ($type -eq "import"){
$jsonFile = Get-Content $FileBrowser.FileName | ConvertFrom-Json
Invoke-WPFPresets -preset $jsonFile -imported $true -CheckBox $checkbox
}
}
function Invoke-WPFInstall {
<#
.DESCRIPTION
PlaceHolder
#>
if($sync.ProcessRunning){
$msg = "Install process is currently running."
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
return
}
$WingetInstall = Get-WinUtilCheckBoxes -Group "WPFInstall"
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
}
Invoke-WPFRunspace -ArgumentList $WingetInstall -scriptblock {
param($WingetInstall)
try{
$sync.ProcessRunning = $true
# Ensure winget is installed
Install-WinUtilWinget
# Install all winget programs in new window
Install-WinUtilProgramWinget -ProgramsToInstall $WingetInstall
$ButtonType = [System.Windows.MessageBoxButton]::OK
$MessageboxTitle = "Installs are Finished "
$Messageboxbody = ("Done")
$MessageIcon = [System.Windows.MessageBoxImage]::Information
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
Write-Host "==========================================="
Write-Host "-- Installs have finished ---"
Write-Host "==========================================="
}
Catch {
Write-Host "==========================================="
Write-Host "-- Winget failed to install ---"
Write-Host "==========================================="
}
$sync.ProcessRunning = $False
}
}
function Invoke-WPFInstallUpgrade {
<#
.DESCRIPTION
PlaceHolder
#>
if(!(Test-WinUtilPackageManager -winget)){
Write-Host "==========================================="
Write-Host "-- Winget is not installed ---"
Write-Host "==========================================="
return
}
if(Get-WinUtilInstallerProcess -Process $global:WinGetInstall){
$msg = "Install process is currently running. Please check for a powershell window labeled 'Winget Install'"
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
return
}
Update-WinUtilProgramWinget
Write-Host "==========================================="
Write-Host "-- Updates started ---"
Write-Host "-- You can close this window if desired ---"
Write-Host "==========================================="
}
function Invoke-WPFPanelAutologin {
<#
.DESCRIPTION
PlaceHolder
#>
curl.exe -ss "https://live.sysinternals.com/Autologon.exe" -o $env:temp\autologin.exe # Official Microsoft recommendation https://learn.microsoft.com/en-us/sysinternals/downloads/autologon
cmd /c $env:temp\autologin.exe /accepteula
}
function Invoke-WPFPanelDISM {
<#
.DESCRIPTION
PlaceHolder
#>
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
}
function Invoke-WPFPresets {
<#
.DESCRIPTION
Meant to make settings presets easier in the tweaks tab. Will pull the data from config/preset.json
#>
param(
$preset,
[bool]$imported = $false,
$checkbox = "WPFTweaks"
)
if($imported -eq $true){
$CheckBoxesToCheck = $preset
}
Else{
$CheckBoxesToCheck = $sync.configs.preset.$preset
}
if($checkbox -eq "WPFTweaks"){
$filter = Get-WinUtilVariables -Type Checkbox | Where-Object {$psitem -like "*tweaks*"}
$sync.GetEnumerator() | Where-Object {$psitem.Key -in $filter} | ForEach-Object {
if ($CheckBoxesToCheck -contains $PSItem.name){
$sync.$($PSItem.name).ischecked = $true
}
else{$sync.$($PSItem.name).ischecked = $false}
}
}
if($checkbox -eq "WPFInstall"){
$filter = Get-WinUtilVariables -Type Checkbox | Where-Object {$psitem -like "WPFInstall*"}
$sync.GetEnumerator() | Where-Object {$psitem.Key -in $filter} | ForEach-Object {
if($($sync.configs.applications.$($psitem.name).winget) -in $CheckBoxesToCheck){
$sync.$($PSItem.name).ischecked = $true
}
else{$sync.$($PSItem.name).ischecked = $false}
}
}
}
function Invoke-WPFRunspace {
<#
.DESCRIPTION
Simple function to make it easier to invoke a runspace from inside the script.
.EXAMPLE
$params = @{
ScriptBlock = $sync.ScriptsInstallPrograms
ArgumentList = "Installadvancedip,Installbitwarden"
Verbose = $true
}
Invoke-WPFRunspace @params
#>
[CmdletBinding()]
Param (
$ScriptBlock,
$ArgumentList
)
#Crate a PowerShell instance.
$script:powershell = [powershell]::Create()
#Add Scriptblock and Arguments to runspace
$script:powershell.AddScript($ScriptBlock)
$script:powershell.AddArgument($ArgumentList)
$script:powershell.RunspacePool = $sync.runspace
#Run our RunspacePool.
$script:handle = $script:powershell.BeginInvoke()
#Cleanup our RunspacePool threads when they are complete ie. GC.
if ($script:handle.IsCompleted)
{
$script:powershell.EndInvoke($script:handle)
$script:powershell.Dispose()
$sync.runspace.Dispose()
$sync.runspace.Close()
[System.GC]::Collect()
}
}
function Invoke-WPFShortcut {
<#
.DESCRIPTION
Creates a shortcut
#>
param($ShortcutToAdd)
Switch ($ShortcutToAdd) {
"WinUtil" {
$SourceExe = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
$IRM = 'irm https://christitus.com/win | iex'
$Powershell = '-ExecutionPolicy Bypass -Command "Start-Process powershell.exe -verb runas -ArgumentList'
$ArgumentsToSourceExe = "$powershell '$IRM'"
$DestinationName = "WinUtil.lnk"
}
}
$FileBrowser = New-Object System.Windows.Forms.SaveFileDialog
$FileBrowser.InitialDirectory = [Environment]::GetFolderPath('Desktop')
$FileBrowser.Filter = "Shortcut Files (*.lnk)|*.lnk"
$FileBrowser.FileName = $DestinationName
$FileBrowser.ShowDialog() | Out-Null
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut($FileBrowser.FileName)
$Shortcut.TargetPath = $SourceExe
$Shortcut.Arguments = $ArgumentsToSourceExe
$Shortcut.Save()
Write-Host "Shortcut for $ShortcutToAdd has been saved to $($FileBrowser.FileName)"
}
function Invoke-WPFTab {
<#
.DESCRIPTION
Sole purpose of this function is to reduce duplicated code for switching between tabs.
#>
Param ($ClickedTab)
$Tabs = Get-WinUtilVariables | Where-Object {$psitem -like "WPFTab?BT"}
$TabNav = Get-WinUtilVariables | Where-Object {$psitem -like "WPFTabNav"}
$x = [int]($ClickedTab -replace "WPFTab","" -replace "BT","") - 1
0..($Tabs.Count -1 ) | ForEach-Object {
if ($x -eq $psitem){
$sync.$TabNav.Items[$psitem].IsSelected = $true
}
else{
$sync.$TabNav.Items[$psitem].IsSelected = $false
}
}
}
function Invoke-WPFToggle {
<#
.DESCRIPTION
Meant to make creating toggle switches easier. There is a section below in the gui that will assign this function to every switch.
This way you can dictate what each button does from this function.
Input will be the name of the toggle that is checked.
#>
Param ([string]$Button)
#Use this to get the name of the button
#[System.Windows.MessageBox]::Show("$Button","Chris Titus Tech's Windows Utility","OK","Info")
Switch -Wildcard ($Button){
"WPFToggleDarkMode" {Invoke-WinUtilDarkMode -DarkMoveEnabled $(Get-WinUtilToggleStatus WPFToggleDarkMode)}
"WPFToggleBingSearch" {Invoke-WinUtilBingSearch $(Get-WinUtilToggleStatus WPFToggleBingSearch)}
}
}
function Invoke-WPFtweaksbutton {
<#
.DESCRIPTION
PlaceHolder
#>
if($sync.ProcessRunning){
$msg = "Install process is currently running."
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
return
}
$Tweaks = Get-WinUtilCheckBoxes -Group "WPFTweaks"
Set-WinUtilDNS -DNSProvider $sync["WPFchangedns"].text
if ($tweaks.count -eq 0 -and $sync["WPFchangedns"].text -eq "Default"){
$msg = "Please check the tweaks you wish to perform."
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
return
}
Set-WinUtilRestorePoint
Invoke-WPFRunspace -ArgumentList $Tweaks -ScriptBlock {
param($Tweaks)
$sync.ProcessRunning = $true
Foreach ($tweak in $tweaks){
Invoke-WinUtilTweaks $tweak
}
$sync.ProcessRunning = $false
Write-Host "================================="
Write-Host "-- Tweaks are Finished ---"
Write-Host "================================="
$ButtonType = [System.Windows.MessageBoxButton]::OK
$MessageboxTitle = "Tweaks are Finished "
$Messageboxbody = ("Done")
$MessageIcon = [System.Windows.MessageBoxImage]::Information
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
}
}
Function Invoke-WPFUltimatePerformance {
<#
.DESCRIPTION
PlaceHolder
#>
param($State)
Try{
if($state -eq "Enabled"){
# Define the name and GUID of the power scheme you want to add
$powerSchemeName = "Ultimate Performance"
$powerSchemeGuid = "e9a42b02-d5df-448d-aa00-03f14749eb61"
# Get all power schemes
$schemes = powercfg /list | Out-String -Stream
# Find the scheme you want to add
$ultimateScheme = $schemes | Where-Object { $_ -match $powerSchemeName }
# If the scheme does not exist, add it
if ($null -eq $ultimateScheme) {
Write-Host "Power scheme '$powerSchemeName' not found. Adding..."
# Add the power scheme
powercfg /duplicatescheme $powerSchemeGuid
powercfg -attributes SUB_SLEEP 7bc4a2f9-d8fc-4469-b07b-33eb785aaca0 -ATTRIB_HIDE
Write-Host "Power scheme added successfully."
}
else {
Write-Host "Power scheme '$powerSchemeName' already exists."
}
}
elseif($state -eq "Disabled"){
# Define the name of the power scheme you want to remove
$powerSchemeName = "Ultimate Performance"
# Get all power schemes
$schemes = powercfg /list | Out-String -Stream
# Find the scheme you want to remove
$ultimateScheme = $schemes | Where-Object { $_ -match $powerSchemeName }
# If the scheme exists, remove it
if ($null -ne $ultimateScheme) {
# Extract the GUID of the power scheme
$guid = ($ultimateScheme -split '\s+')[3]
if($null -ne $guid){
Write-Host "Found power scheme '$powerSchemeName' with GUID $guid. Removing..."
# Remove the power scheme
powercfg /delete $guid
Write-Host "Power scheme removed successfully."
}
else {
Write-Host "Could not find GUID for power scheme '$powerSchemeName'."
}
}
else {
Write-Host "Power scheme '$powerSchemeName' not found."
}
}
}
Catch{
Write-Warning $psitem.Exception.Message
}
}
function Invoke-WPFundoall {
<#
.DESCRIPTION
PlaceHolder
#>
if($sync.ProcessRunning){
$msg = "Install process is currently running."
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
return
}
$Tweaks = Get-WinUtilCheckBoxes -Group "WPFTweaks"
if ($tweaks.count -eq 0){
$msg = "Please check the tweaks you wish to undo."
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
return
}
Invoke-WPFRunspace -ArgumentList $Tweaks -ScriptBlock {
param($Tweaks)
$sync.ProcessRunning = $true
Foreach ($tweak in $tweaks){
Invoke-WinUtilTweaks $tweak -undo $true
}
$sync.ProcessRunning = $false
Write-Host "=================================="
Write-Host "--- Undo Tweaks are Finished ---"
Write-Host "=================================="
$ButtonType = [System.Windows.MessageBoxButton]::OK
$MessageboxTitle = "Tweaks are Finished "
$Messageboxbody = ("Done")
$MessageIcon = [System.Windows.MessageBoxImage]::Information
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
}
<#
Write-Host "Creating Restore Point in case something bad happens"
Enable-ComputerRestore -Drive "$env:SystemDrive"
Checkpoint-Computer -Description "RestorePoint1" -RestorePointType "MODIFY_SETTINGS"
Write-Host "Enabling Telemetry..."
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\DataCollection" -Name "AllowTelemetry" -Type DWord -Value 1
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection" -Name "AllowTelemetry" -Type DWord -Value 1
Write-Host "Enabling Wi-Fi Sense"
Set-ItemProperty -Path "HKLM:\Software\Microsoft\PolicyManager\default\WiFi\AllowWiFiHotSpotReporting" -Name "Value" -Type DWord -Value 1
Set-ItemProperty -Path "HKLM:\Software\Microsoft\PolicyManager\default\WiFi\AllowAutoConnectToWiFiSenseHotspots" -Name "Value" -Type DWord -Value 1
Write-Host "Enabling Application suggestions..."
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "ContentDeliveryAllowed" -Type DWord -Value 1
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "OemPreInstalledAppsEnabled" -Type DWord -Value 1
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "PreInstalledAppsEnabled" -Type DWord -Value 1
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "PreInstalledAppsEverEnabled" -Type DWord -Value 1
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "SilentInstalledAppsEnabled" -Type DWord -Value 1
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "SubscribedContent-338387Enabled" -Type DWord -Value 1
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "SubscribedContent-338388Enabled" -Type DWord -Value 1
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "SubscribedContent-338389Enabled" -Type DWord -Value 1
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "SubscribedContent-353698Enabled" -Type DWord -Value 1
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "SystemPaneSuggestionsEnabled" -Type DWord -Value 1
If (Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent") {
Remove-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent" -Recurse -ErrorAction SilentlyContinue
}
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent" -Name "DisableWindowsConsumerFeatures" -Type DWord -Value 0
Write-Host "Enabling Activity History..."
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" -Name "EnableActivityFeed" -Type DWord -Value 1
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" -Name "PublishUserActivities" -Type DWord -Value 1
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" -Name "UploadUserActivities" -Type DWord -Value 1
Write-Host "Enable Location Tracking..."
If (Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\location") {
Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\location" -Recurse -ErrorAction SilentlyContinue
}
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\location" -Name "Value" -Type String -Value "Allow"
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Sensor\Overrides\{BFA794E4-F964-4FDB-90F6-51056BFE4B44}" -Name "SensorPermissionState" -Type DWord -Value 1
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\lfsvc\Service\Configuration" -Name "Status" -Type DWord -Value 1
Write-Host "Enabling automatic Maps updates..."
Set-ItemProperty -Path "HKLM:\SYSTEM\Maps" -Name "AutoUpdateEnabled" -Type DWord -Value 1
Write-Host "Enabling Feedback..."
If (Test-Path "HKCU:\SOFTWARE\Microsoft\Siuf\Rules") {
Remove-Item -Path "HKCU:\SOFTWARE\Microsoft\Siuf\Rules" -Recurse -ErrorAction SilentlyContinue
}
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Siuf\Rules" -Name "NumberOfSIUFInPeriod" -Type DWord -Value 0
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection" -Name "DoNotShowFeedbackNotifications" -Type DWord -Value 0
Write-Host "Enabling Tailored Experiences..."
If (Test-Path "HKCU:\SOFTWARE\Policies\Microsoft\Windows\CloudContent") {
Remove-Item -Path "HKCU:\SOFTWARE\Policies\Microsoft\Windows\CloudContent" -Recurse -ErrorAction SilentlyContinue
}
Set-ItemProperty -Path "HKCU:\SOFTWARE\Policies\Microsoft\Windows\CloudContent" -Name "DisableTailoredExperiencesWithDiagnosticData" -Type DWord -Value 0
Write-Host "Disabling Advertising ID..."
If (Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\AdvertisingInfo") {
Remove-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\AdvertisingInfo" -Recurse -ErrorAction SilentlyContinue
}
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\AdvertisingInfo" -Name "DisabledByGroupPolicy" -Type DWord -Value 0
Write-Host "Allow Error reporting..."
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting" -Name "Disabled" -Type DWord -Value 0
Write-Host "Allowing Diagnostics Tracking Service..."
Stop-Service "DiagTrack" -WarningAction SilentlyContinue
Set-Service "DiagTrack" -StartupType Manual
Write-Host "Allowing WAP Push Service..."
Stop-Service "dmwappushservice" -WarningAction SilentlyContinue
Set-Service "dmwappushservice" -StartupType Manual
Write-Host "Allowing Home Groups services..."
Stop-Service "HomeGroupListener" -WarningAction SilentlyContinue
Set-Service "HomeGroupListener" -StartupType Manual
Stop-Service "HomeGroupProvider" -WarningAction SilentlyContinue
Set-Service "HomeGroupProvider" -StartupType Manual
Write-Host "Enabling Storage Sense..."
New-Item -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\StorageSense\Parameters\StoragePolicy" | Out-Null
Write-Host "Allowing Superfetch service..."
Stop-Service "SysMain" -WarningAction SilentlyContinue
Set-Service "SysMain" -StartupType Manual
Write-Host "Setting BIOS time to Local Time instead of UTC..."
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\TimeZoneInformation" -Name "RealTimeIsUniversal" -Type DWord -Value 0
Write-Host "Enabling Hibernation..."
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Session Manager\Power" -Name "HibernteEnabled" -Type Dword -Value 1
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FlyoutMenuSettings" -Name "ShowHibernateOption" -Type Dword -Value 1
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Personalization" -Name "NoLockScreen" -ErrorAction SilentlyContinue
Write-Host "Hiding file operations details..."
If (Test-Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\OperationStatusManager") {
Remove-Item -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\OperationStatusManager" -Recurse -ErrorAction SilentlyContinue
}
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\OperationStatusManager" -Name "EnthusiastMode" -Type DWord -Value 0
Write-Host "Showing Task View button..."
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "ShowTaskViewButton" -Type DWord -Value 1
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\People" -Name "PeopleBand" -Type DWord -Value 1
Write-Host "Changing default Explorer view to Quick Access..."
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "LaunchTo" -Type DWord -Value 0
Write-Host "Unrestricting AutoLogger directory"
$autoLoggerDir = "$env:PROGRAMDATA\Microsoft\Diagnosis\ETLLogs\AutoLogger"
icacls $autoLoggerDir /grant:r SYSTEM:`(OI`)`(CI`)F | Out-Null
Write-Host "Enabling and starting Diagnostics Tracking Service"
Set-Service "DiagTrack" -StartupType Automatic
Start-Service "DiagTrack"
Write-Host "Hiding known file extensions"
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "HideFileExt" -Type DWord -Value 1
Write-Host "Reset Local Group Policies to Stock Defaults"
# cmd /c secedit /configure /cfg %windir%\inf\defltbase.inf /db defltbase.sdb /verbose
cmd /c RD /S /Q "%WinDir%\System32\GroupPolicyUsers"
cmd /c RD /S /Q "%WinDir%\System32\GroupPolicy"
cmd /c gpupdate /force
# Considered using Invoke-GPUpdate but requires module most people won't have installed
Write-Host "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\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
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "ListviewShadow" -Type DWord -Value 1
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "TaskbarAnimations" -Type DWord -Value 1
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects" -Name "VisualFXSetting" -Type DWord -Value 3
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\DWM" -Name "EnableAeroPeek" -Type DWord -Value 1
Remove-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "HungAppTimeout" -ErrorAction SilentlyContinue
Write-Host "Restoring Clipboard History..."
Remove-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Clipboard" -Name "EnableClipboardHistory" -ErrorAction SilentlyContinue
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" -Name "AllowClipboardHistory" -ErrorAction SilentlyContinue
Write-Host "Enabling Notifications and Action Center"
Remove-Item -Path HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Force
Remove-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\PushNotifications" -Name "ToastEnabled"
Write-Host "Restoring Default Right Click Menu Layout"
Remove-Item -Path "HKCU:\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}" -Recurse -Confirm:$false -Force
Write-Host "Reset News and Interests"
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Feeds" -Name "EnableFeeds" -Type DWord -Value 1
# Remove "News and Interest" from taskbar
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Feeds" -Name "ShellFeedsTaskbarViewMode" -Type DWord -Value 0
Write-Host "Done - Reverted to Stock Settings"
Write-Host "Essential Undo Completed"
$ButtonType = [System.Windows.MessageBoxButton]::OK
$MessageboxTitle = "Undo All"
$Messageboxbody = ("Done")
$MessageIcon = [System.Windows.MessageBoxImage]::Information
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
Write-Host "================================="
Write-Host "--- Undo All is Finished ---"
Write-Host "================================="
#>
}
function Invoke-WPFUnInstall {
<#
.DESCRIPTION
PlaceHolder
#>
if($sync.ProcessRunning){
$msg = "Install process is currently running."
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
return
}
$WingetInstall = Get-WinUtilCheckBoxes -Group "WPFInstall"
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
}
$ButtonType = [System.Windows.MessageBoxButton]::YesNo
$MessageboxTitle = "Are you sure?"
$Messageboxbody = ("This will uninstall the following applications `n $WingetInstall")
$MessageIcon = [System.Windows.MessageBoxImage]::Information
$confirm = [System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
if($confirm -eq "No"){return}
Invoke-WPFRunspace -ArgumentList $WingetInstall -scriptblock {
param($WingetInstall)
try{
$sync.ProcessRunning = $true
# Install all winget programs in new window
Install-WinUtilProgramWinget -ProgramsToInstall $WingetInstall -Manage "Uninstalling"
$ButtonType = [System.Windows.MessageBoxButton]::OK
$MessageboxTitle = "Uninstalls are Finished "
$Messageboxbody = ("Done")
$MessageIcon = [System.Windows.MessageBoxImage]::Information
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
Write-Host "==========================================="
Write-Host "-- Uninstalls have finished ---"
Write-Host "==========================================="
}
Catch {
Write-Host "==========================================="
Write-Host "-- Winget failed to install ---"
Write-Host "==========================================="
}
$sync.ProcessRunning = $False
}
}
function Invoke-WPFUpdatesdefault {
<#
.DESCRIPTION
PlaceHolder
#>
If (!(Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU")) {
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Force | Out-Null
}
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "NoAutoUpdate" -Type DWord -Value 0
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "AUOptions" -Type DWord -Value 3
If (!(Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config")) {
New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config" -Force | Out-Null
}
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config" -Name "DODownloadMode" -Type DWord -Value 1
$services = @(
"BITS"
"wuauserv"
)
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
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 "Enabling 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 "Enabled driver offering through Windows Update"
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
Write-Host "================================="
Write-Host "--- Updates Set to Default ---"
Write-Host "================================="
}
function Invoke-WPFUpdatesdisable {
<#
.DESCRIPTION
PlaceHolder
#>
If (!(Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU")) {
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Force | Out-Null
}
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
If (!(Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config")) {
New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config" -Force | Out-Null
}
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config" -Name "DODownloadMode" -Type DWord -Value 0
$services = @(
"BITS"
"wuauserv"
)
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
}
Write-Host "================================="
Write-Host "--- Updates ARE DISABLED ---"
Write-Host "================================="
}
function Invoke-WPFUpdatessecurity {
<#
.DESCRIPTION
PlaceHolder
#>
Write-Host "Disabling driver offering through Windows Update..."
If (!(Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Device Metadata")) {
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Device Metadata" -Force | Out-Null
}
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Device Metadata" -Name "PreventDeviceMetadataFromNetwork" -Type DWord -Value 1
If (!(Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DriverSearching")) {
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DriverSearching" -Force | Out-Null
}
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DriverSearching" -Name "DontPromptForWindowsUpdate" -Type DWord -Value 1
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DriverSearching" -Name "DontSearchWindowsUpdate" -Type DWord -Value 1
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DriverSearching" -Name "DriverUpdateWizardWuSearchEnabled" -Type DWord -Value 0
If (!(Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate")) {
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" | Out-Null
}
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" -Name "ExcludeWUDriversInQualityUpdate" -Type DWord -Value 1
Write-Host "Disabling Windows Update automatic restart..."
If (!(Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU")) {
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Force | Out-Null
}
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "NoAutoRebootWithLoggedOnUsers" -Type DWord -Value 1
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "AUPowerManagement" -Type DWord -Value 0
Write-Host "Disabled driver offering through Windows Update"
If (!(Test-Path "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings")) {
New-Item -Path "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" -Force | Out-Null
}
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" -Name "BranchReadinessLevel" -Type DWord -Value 20
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" -Name "DeferFeatureUpdatesPeriodInDays" -Type DWord -Value 365
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" -Name "DeferQualityUpdatesPeriodInDays " -Type DWord -Value 4
$ButtonType = [System.Windows.MessageBoxButton]::OK
$MessageboxTitle = "Set Security Updates"
$Messageboxbody = ("Recommended Update settings loaded")
$MessageIcon = [System.Windows.MessageBoxImage]::Information
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
Write-Host "================================="
Write-Host "-- Updates Set to Recommended ---"
Write-Host "================================="
}
$inputXML = '
Note: Hover over items to get a better description. Please be careful as many of these tweaks will heavily modify your system.
Recommended selections are for normal users and if you are unsure do NOT check anything else!
This is the default settings that come with Windows. No modifications are made and will remove any custom windows update settings.Note: If you still encounter update errors, reset all updates in the config tab. That will restore ALL Microsoft Update Services from their servers and reinstall them to default settings.
This is my recommended setting I use on all computers. It will delay feature updates by 2 years and will install security updates 4 days after release.Feature Updates: Adds features and often bugs to systems when they are released. You want to delay these as long as possible.Security Updates: Typically these are pressing security flaws that need to be patched quickly. You only want to delay these a couple of days just to see if they are safe and don''t break other systems. You don''t want to go without these for ANY extended periods of time.
This completely disables ALL Windows Updates and is NOT RECOMMENDED. However, it can be suitable if you use your system for a select purpose and do not actively browse the internet. Note: Your system will be easier to hack and infect without security updates.
'
$sync.configs.applications = '{
"WPFInstalladobe": {
"winget": "Adobe.Acrobat.Reader.64-bit",
"choco": "adobereader"
},
"WPFInstalladvancedip": {
"winget": "Famatech.AdvancedIPScanner",
"choco": "advanced-ip-scanner"
},
"WPFInstallanydesk": {
"winget": "AnyDeskSoftwareGmbH.AnyDesk",
"choco": "anydesk"
},
"WPFInstallaudacity": {
"winget": "Audacity.Audacity",
"choco": "audacity"
},
"WPFInstallautohotkey": {
"winget": "Lexikos.AutoHotkey",
"choco": "autohotkey"
},
"WPFInstallbitwarden": {
"winget": "Bitwarden.Bitwarden",
"choco": "bitwarden"
},
"WPFInstallblender": {
"winget": "BlenderFoundation.Blender",
"choco": "blender"
},
"WPFInstallbrave": {
"winget": "Brave.Brave",
"choco": "brave"
},
"WPFInstallchrome": {
"winget": "Google.Chrome",
"choco": "googlechrome"
},
"WPFInstallchromium": {
"winget": "eloston.ungoogled-chromium",
"choco": "chromium"
},
"WPFInstallcpuz": {
"winget": "CPUID.CPU-Z",
"choco": "cpu-z"
},
"WPFInstalldeluge": {
"winget": "DelugeTeam.Deluge",
"choco": "deluge"
},
"WPFInstalldiscord": {
"winget": "Discord.Discord",
"choco": "discord"
},
"WPFInstalleartrumpet": {
"winget": "File-New-Project.EarTrumpet",
"choco": "eartrumpet"
},
"WPFInstallepicgames": {
"winget": "EpicGames.EpicGamesLauncher",
"choco": "epicgameslauncher"
},
"WPFInstallesearch": {
"winget": "voidtools.Everything",
"choco": "everything"
},
"WPFInstalletcher": {
"winget": "Balena.Etcher",
"choco": "etcher"
},
"WPFInstallfirefox": {
"winget": "Mozilla.Firefox",
"choco": "firefox"
},
"WPFInstallflameshot": {
"winget": "Flameshot.Flameshot",
"choco": "na"
},
"WPFInstallfoobar": {
"winget": "PeterPawlowski.foobar2000",
"choco": "foobar2000"
},
"WPFInstallgeforcenow": {
"winget": "Nvidia.GeForceNow",
"choco": "nvidia-geforce-now"
},
"WPFInstallgimp": {
"winget": "GIMP.GIMP",
"choco": "gimp"
},
"WPFInstallgithubdesktop": {
"winget": "Git.Git;GitHub.GitHubDesktop",
"choco": "git;github-desktop"
},
"WPFInstalldockerdesktop": {
"winget": "Docker.DockerDesktop",
"choco": "docker-desktop"
},
"WPFInstallgog": {
"winget": "GOG.Galaxy",
"choco": "goggalaxy"
},
"WPFInstallheroiclauncher": {
"winget": "HeroicGamesLauncher.HeroicGamesLauncher",
"choco": "na"
},
"WPFInstallgpuz": {
"winget": "TechPowerUp.GPU-Z",
"choco": "gpu-z"
},
"WPFInstallgreenshot": {
"winget": "Greenshot.Greenshot",
"choco": "greenshot"
},
"WPFInstallhandbrake": {
"winget": "HandBrake.HandBrake",
"choco": "handbrake"
},
"WPFInstallhexchat": {
"winget": "HexChat.HexChat",
"choco": "hexchat"
},
"WPFInstallhwinfo": {
"winget": "REALiX.HWiNFO",
"choco": "hwinfo"
},
"WPFInstallnomacs": {
"winget": "nomacs.nomacs",
"choco": "nomacs"
},
"WPFInstallimageglass": {
"winget": "DuongDieuPhap.ImageGlass",
"choco": "imageglass"
},
"WPFInstallinkscape": {
"winget": "Inkscape.Inkscape",
"choco": "inkscape"
},
"WPFInstalljava16": {
"winget": "AdoptOpenJDK.OpenJDK.16",
"choco": "temurin16jre"
},
"WPFInstalljava18": {
"winget": "EclipseAdoptium.Temurin.18.JRE",
"choco": "temurin18jre"
},
"WPFInstalljava8": {
"winget": "EclipseAdoptium.Temurin.8.JRE",
"choco": "temurin8jre"
},
"WPFInstalljava19": {
"winget": "EclipseAdoptium.Temurin.19.JRE",
"choco": "temurin19jre"
},
"WPFInstalljava17": {
"winget": "EclipseAdoptium.Temurin.17.JRE",
"choco": "temurin17jre"
},
"WPFInstalljava11": {
"winget": "EclipseAdoptium.Temurin.11.JRE",
"choco": "javaruntime"
},
"WPFInstalljava20": {
"winget": "Azul.Zulu.20.JDK",
"choco": "na"
},
"WPFInstalljetbrains": {
"winget": "JetBrains.Toolbox",
"choco": "jetbrainstoolbox"
},
"WPFInstallkeepass": {
"winget": "KeePassXCTeam.KeePassXC",
"choco": "keepassxc"
},
"WPFInstalllibrewolf": {
"winget": "LibreWolf.LibreWolf",
"choco": "librewolf"
},
"WPFInstallmalwarebytes": {
"winget": "Malwarebytes.Malwarebytes",
"choco": "malwarebytes"
},
"WPFInstallmatrix": {
"winget": "Element.Element",
"choco": "element-desktop"
},
"WPFInstallmonitorian": {
"winget": "emoacht.Monitorian",
"choco": "monitorian"
},
"WPFInstallmpc": {
"winget": "clsid2.mpc-hc",
"choco": "mpc-hc"
},
"WPFInstallmremoteng": {
"winget": "mRemoteNG.mRemoteNG",
"choco": "mremoteng"
},
"WPFInstallmusicbee": {
"winget": "MusicBee.MusicBee",
"choco": "musicbee"
},
"WPFInstallnodejs": {
"winget": "OpenJS.NodeJS",
"choco": "nodejs"
},
"WPFInstallnodejslts": {
"winget": "OpenJS.NodeJS.LTS",
"choco": "nodejs-lts"
},
"WPFInstallnotepadplus": {
"winget": "Notepad++.Notepad++",
"choco": "notepadplusplus"
},
"WPFInstallnvclean": {
"winget": "TechPowerUp.NVCleanstall",
"choco": "na"
},
"WPFInstallobs": {
"winget": "OBSProject.OBSStudio",
"choco": "obs-studio"
},
"WPFInstallobsidian": {
"winget": "Obsidian.Obsidian",
"choco": "obsidian"
},
"WPFInstallpowertoys": {
"winget": "Microsoft.PowerToys",
"choco": "powertoys"
},
"WPFInstallputty": {
"winget": "PuTTY.PuTTY",
"choco": "putty"
},
"WPFInstallpython3": {
"winget": "Python.Python.3.11",
"choco": "python"
},
"WPFInstallrevo": {
"winget": "RevoUninstaller.RevoUninstaller",
"choco": "revo-uninstaller"
},
"WPFInstallrufus": {
"winget": "Rufus.Rufus",
"choco": "rufus"
},
"WPFInstallsevenzip": {
"winget": "7zip.7zip",
"choco": "7zip"
},
"WPFInstallsharex": {
"winget": "ShareX.ShareX",
"choco": "sharex"
},
"WPFInstallsignal": {
"winget": "OpenWhisperSystems.Signal",
"choco": "signal"
},
"WPFInstallskype": {
"winget": "Microsoft.Skype",
"choco": "skype"
},
"WPFInstallslack": {
"winget": "SlackTechnologies.Slack",
"choco": "slack"
},
"WPFInstallsteam": {
"winget": "Valve.Steam",
"choco": "steam-client"
},
"WPFInstallsublime": {
"winget": "SublimeHQ.SublimeText.4",
"choco": "sublimetext4"
},
"WPFInstallsumatra": {
"winget": "SumatraPDF.SumatraPDF",
"choco": "sumatrapdf"
},
"WPFInstallteams": {
"winget": "Microsoft.Teams",
"choco": "microsoft-teams"
},
"WPFInstallteamviewer": {
"winget": "TeamViewer.TeamViewer",
"choco": "teamviewer9"
},
"WPFInstallterminal": {
"winget": "Microsoft.WindowsTerminal",
"choco": "microsoft-windows-terminal"
},
"WPFInstalltreesize": {
"winget": "JAMSoftware.TreeSize.Free",
"choco": "treesizefree"
},
"WPFInstallttaskbar": {
"winget": "TranslucentTB.TranslucentTB",
"choco": "translucenttb"
},
"WPFInstallvisualstudio": {
"winget": "Microsoft.VisualStudio.2022.Community",
"choco": "visualstudio2022community"
},
"WPFInstallvivaldi": {
"winget": "VivaldiTechnologies.Vivaldi",
"choco": "vivaldi"
},
"WPFInstallvlc": {
"winget": "VideoLAN.VLC",
"choco": "vlc"
},
"WPFInstallvoicemeeter": {
"winget": "VB-Audio.Voicemeeter",
"choco": "voicemeeter"
},
"WPFInstallvscode": {
"winget": "Git.Git;Microsoft.VisualStudioCode",
"choco": "vscode"
},
"WPFInstallvscodium": {
"winget": "Git.Git;VSCodium.VSCodium",
"choco": "vscodium"
},
"WPFInstallwindirstat": {
"winget": "WinDirStat.WinDirStat",
"choco": "windirstat"
},
"WPFInstallscp": {
"winget": "WinSCP.WinSCP",
"choco": "winscp"
},
"WPFInstallwireshark": {
"winget": "WiresharkFoundation.Wireshark",
"choco": "wireshark"
},
"WPFInstallzoom": {
"winget": "Zoom.Zoom",
"choco": "zoom"
},
"WPFInstalllibreoffice": {
"winget": "TheDocumentFoundation.LibreOffice",
"choco": "libreoffice-fresh"
},
"WPFInstallshell": {
"winget": "Nilesoft.Shell",
"choco": "na"
},
"WPFInstallsdio": {
"winget": "GlennDelahoy.SnappyDriverInstallerOrigin",
"choco": "na"
},
"WPFInstallklite": {
"winget": "CodecGuide.K-LiteCodecPack.Standard",
"choco": "k-litecodecpack-standard"
},
"WPFInstallsandboxie": {
"winget": "Sandboxie.Plus",
"choco": "sandboxie"
},
"WPFInstallprocesslasso": {
"winget": "BitSum.ProcessLasso",
"choco": "plasso"
},
"WPFInstallwinmerge": {
"winget": "WinMerge.WinMerge",
"choco": "winmerge"
},
"WPFInstalldotnet3": {
"winget": "Microsoft.DotNet.DesktopRuntime.3_1",
"choco": "dotnetcore3-desktop-runtime"
},
"WPFInstalldotnet5": {
"winget": "Microsoft.DotNet.DesktopRuntime.5",
"choco": "dotnet-5.0-runtime"
},
"WPFInstalldotnet6": {
"winget": "Microsoft.DotNet.DesktopRuntime.6",
"choco": "dotnet-6.0-runtime"
},
"WPFInstallvc2015_64": {
"winget": "Microsoft.VCRedist.2015+.x64",
"choco": "na"
},
"WPFInstallvc2015_32": {
"winget": "Microsoft.VCRedist.2015+.x86",
"choco": "na"
},
"WPFInstallfoxpdf": {
"winget": "Foxit.PhantomPDF",
"choco": "na"
},
"WPFInstallonlyoffice": {
"winget": "ONLYOFFICE.DesktopEditors",
"choco": "onlyoffice"
},
"WPFInstallflux": {
"winget": "flux.flux",
"choco": "flux"
},
"WPFInstallitunes": {
"winget": "Apple.iTunes",
"choco": "itunes"
},
"WPFInstallcider": {
"winget": "CiderCollective.Cider",
"choco": "cider"
},
"WPFInstalljoplin": {
"winget": "Joplin.Joplin",
"choco": "joplin"
},
"WPFInstallopenoffice": {
"winget": "Apache.OpenOffice",
"choco": "openoffice"
},
"WPFInstallrustdesk": {
"winget": "RustDesk.RustDesk",
"choco": "rustdesk.portable"
},
"WPFInstalljami": {
"winget": "SFLinux.Jami",
"choco": "jami"
},
"WPFInstalljdownloader": {
"winget": "AppWork.JDownloader",
"choco": "jdownloader"
},
"WPFInstallsimplewall": {
"Winget": "Henry++.simplewall",
"choco": "simplewall"
},
"WPFInstallrustlang": {
"Winget": "Rustlang.Rust.MSVC",
"choco": "rust"
},
"WPFInstallgolang": {
"Winget": "GoLang.Go.1.19",
"choco": "golang"
},
"WPFInstallalacritty": {
"Winget": "Alacritty.Alacritty",
"choco": "alacritty"
},
"WPFInstallkdenlive": {
"Winget": "KDE.Kdenlive",
"choco": "kdenlive"
},
"WPFInstallglaryutilities": {
"Winget": "Glarysoft.GlaryUtilities",
"choco": "glaryutilities-free"
},
"WPFInstalltwinkletray": {
"Winget": "xanderfrangos.twinkletray",
"choco": "na"
},
"WPFInstallidm": {
"Winget": "Tonec.InternetDownloadManager",
"choco": "internet-download-manager"
},
"WPFInstallviber": {
"Winget": "Viber.Viber",
"choco": "viber"
},
"WPFInstallgit": {
"Winget": "Git.Git",
"choco": "git"
},
"WPFInstallwiztree": {
"Winget": "AntibodySoftware.WizTree",
"choco": "wiztree\\"
},
"WPFInstalltor": {
"Winget": "TorProject.TorBrowser",
"choco": "tor-browser"
},
"WPFInstallkrita": {
"winget": "KDE.Krita",
"choco": "krita"
},
"WPFInstallnglide": {
"winget": "ZeusSoftware.nGlide",
"choco": "na"
},
"WPFInstallkodi": {
"winget": "XBMCFoundation.Kodi",
"choco": "kodi"
},
"WPFInstalltelegram": {
"winget": "Telegram.TelegramDesktop",
"choco": "telegram"
},
"WPFInstallunity": {
"winget": "Unity.UnityHub",
"choco": "unityhub"
},
"WPFInstallqbittorrent": {
"winget": "qBittorrent.qBittorrent",
"choco": "qbittorrent"
},
"WPFInstalleaapp": {
"winget": "ElectronicArts.EADesktop",
"choco": "ea-app"
},
"WPFInstallopenshell": {
"winget": "Open-Shell.Open-Shell-Menu",
"choco": "open-shell"
},
"WPFInstallbluestacks": {
"winget": "BlueStack.BlueStacks",
"choco": "na"
},
"WPFInstallstrawberry": {
"winget": "StrawberryMusicPlayer.Strawberry",
"choco": "strawberrymusicplayer"
},
"WPFInstallsqlstudio": {
"winget": "Microsoft.SQLServerManagementStudio",
"choco": "sql-server-management-studio"
},
"WPFInstallwaterfox": {
"winget": "Waterfox.Waterfox",
"choco": "waterfox"
},
"WPFInstallpowershell": {
"winget": "Microsoft.PowerShell",
"choco": "powershell-core"
},
"WPFInstallprocessmonitor": {
"winget": "Microsoft.Sysinternals.ProcessMonitor",
"choco": "procexp"
},
"WPFInstallonedrive": {
"winget": "Microsoft.OneDrive",
"choco": "onedrive"
},
"WPFInstalledge": {
"winget": "Microsoft.Edge",
"choco": "microsoft-edge"
},
"WPFInstallubisoft": {
"winget": "Ubisoft.Connect",
"choco": "ubisoft-connect"
},
"WPFInstallnuget": {
"winget": "Microsoft.NuGet",
"choco": "nuget.commandline"
},
"WPFInstallwinrar": {
"winget": "RARLab.WinRAR",
"choco": "winrar"
},
"WPFInstallnano": {
"winget": "GNU.Nano",
"choco": "nano"
},
"WPFInstallneovim": {
"winget": "Neovim.Neovim",
"choco": "neovim"
},
"WPFInstallnvm": {
"winget": "CoreyButler.NVMforWindows",
"choco": "nvm"
},
"WPFInstallpostman": {
"winget": "Postman.Postman",
"choco": "postman"
},
"WPFInstallgsudo": {
"winget": "gerardog.gsudo",
"choco": "gsudo"
},
"WPFInstallwingetui": {
"winget": "SomePythonThings.WingetUIStore",
"choco": "na"
},
"WPFInstallprismlauncher": {
"winget": "PrismLauncher.PrismLauncher",
"choco": "na"
}
}' | convertfrom-json
$sync.configs.dns = '{
"Google":{
"Primary": "8.8.8.8",
"Secondary": "8.8.4.4"
},
"Cloudflare":{
"Primary": "1.1.1.1",
"Secondary": "1.0.0.1"
},
"Cloudflare_Malware":{
"Primary": "1.1.1.2",
"Secondary": "1.0.0.2"
},
"Cloudflare_Malware_Adult":{
"Primary": "1.1.1.3",
"Secondary": "1.0.0.3"
},
"Level3":{
"Primary": "4.2.2.2",
"Secondary": "4.2.2.1"
},
"Open_DNS":{
"Primary": "208.67.222.222",
"Secondary": "208.67.220.220"
},
"Quad9":{
"Primary": "9.9.9.9",
"Secondary": "149.112.112.112"
}
}' | convertfrom-json
$sync.configs.feature = '{
"WPFFeaturesdotnet": {
"feature": [
"NetFx4-AdvSrvs",
"NetFx3"
],
"InvokeScript": [
]
},
"WPFFeatureshyperv": {
"feature": [
"HypervisorPlatform",
"Microsoft-Hyper-V-All",
"Microsoft-Hyper-V",
"Microsoft-Hyper-V-Tools-All",
"Microsoft-Hyper-V-Management-PowerShell",
"Microsoft-Hyper-V-Hypervisor",
"Microsoft-Hyper-V-Services",
"Microsoft-Hyper-V-Management-Clients"
],
"InvokeScript": [
"Start-Process -FilePath cmd.exe -ArgumentList ''/c bcdedit /set hypervisorschedulertype classic'' -Wait"
]
},
"WPFFeatureslegacymedia": {
"feature": [
"WindowsMediaPlayer",
"MediaPlayback",
"DirectPlay",
"LegacyComponents"
],
"InvokeScript": [
]
},
"WPFFeaturewsl": {
"feature": [
"VirtualMachinePlatform",
"Microsoft-Windows-Subsystem-Linux"
],
"InvokeScript": [
]
},
"WPFFeaturenfs": {
"feature": [
"ServicesForNFS-ClientOnly",
"ClientForNFS-Infrastructure",
"NFS-Administration"
],
"InvokeScript": [
"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
nfsadmin client start
nfsadmin client localhost config fileaccess=755 SecFlavors=+sys -krb5 -krb5i
"
]
}
}' | convertfrom-json
$sync.configs.preset = '{
"desktop": [
"WPFEssTweaksAH",
"WPFEssTweaksDVR",
"WPFEssTweaksHiber",
"WPFEssTweaksHome",
"WPFEssTweaksLoc",
"WPFEssTweaksOO",
"WPFEssTweaksServices",
"WPFEssTweaksStorage",
"WPFEssTweaksTele",
"WPFEssTweaksWifi",
"WPFMiscTweaksPower",
"WPFMiscTweaksNum"
],
"laptop": [
"WPFEssTweaksAH",
"WPFEssTweaksDVR",
"WPFEssTweaksHome",
"WPFEssTweaksLoc",
"WPFEssTweaksOO",
"WPFEssTweaksServices",
"WPFEssTweaksStorage",
"WPFEssTweaksTele",
"WPFEssTweaksWifi",
"WPFMiscTweaksLapPower",
"WPFMiscTweaksLapNum"
],
"minimal": [
"WPFEssTweaksHome",
"WPFEssTweaksOO",
"WPFEssTweaksServices",
"WPFEssTweaksTele"
]
}' | convertfrom-json
$sync.configs.themes = '{
"Classic": {
"ComboBoxBackgroundColor": "#777777",
"LabelboxForegroundColor": "#000000",
"MainForegroundColor": "#000000",
"MainBackgroundColor": "#777777",
"LabelBackgroundColor": "#777777",
"ComboBoxForegroundColor": "#000000",
"ButtonInstallBackgroundColor": "#222222",
"ButtonTweaksBackgroundColor": "#333333",
"ButtonConfigBackgroundColor": "#444444",
"ButtonUpdatesBackgroundColor": "#555555",
"ButtonInstallForegroundColor": "#FFFFFF",
"ButtonBackgroundColor": "#CACACA",
"ButtonBackgroundPressedColor": "#FFFFFF",
"ButtonBackgroundMouseoverColor": "AliceBlue",
"ButtonForegroundColor": "#000000",
"ButtonBorderThickness": "0",
"ButtonMargin": "0,3,0,3",
"ButtonCornerRadius": "0"
},
"Matrix": {
"ComboBoxBackgroundColor": "#000000",
"LabelboxForegroundColor": "#FFEE58",
"MainForegroundColor": "#9CCC65",
"MainBackgroundColor": "#000000",
"LabelBackgroundColor": "#000000",
"ComboBoxForegroundColor": "#FFEE58",
"ButtonInstallBackgroundColor": "#222222",
"ButtonTweaksBackgroundColor": "#333333",
"ButtonConfigBackgroundColor": "#444444",
"ButtonUpdatesBackgroundColor": "#555555",
"ButtonInstallForegroundColor": "#FFFFFF",
"ButtonBackgroundColor": "#000000",
"ButtonBackgroundPressedColor": "#FFFFFF",
"ButtonBackgroundMouseoverColor": "#A55A64",
"ButtonForegroundColor": "#9CCC65",
"ButtonBorderThickness": "3",
"ButtonMargin": "2",
"ButtonCornerRadius": "4"
}
}' | convertfrom-json
$sync.configs.tweaks = '{
"WPFEssTweaksAH": {
"registry": [
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\System",
"Name": "EnableActivityFeed",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\System",
"Name": "PublishUserActivities",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\System",
"Name": "UploadUserActivities",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
}
]
},
"WPFEssTweaksHiber": {
"registry": [
{
"Path": "HKLM:\\System\\CurrentControlSet\\Control\\Session Manager\\Power",
"Name": "HibernateEnabled",
"Type": "Dword",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FlyoutMenuSettings",
"Name": "ShowHibernateOption",
"Type": "Dword",
"Value": "0",
"OriginalValue": "1"
}
],
"InvokeScript": [
"powercfg.exe /hibernate off"
]
},
"WPFEssTweaksHome": {
"service": [
{
"Name": "HomeGroupListener",
"StartupType": "Manual",
"OriginalType": "Automatic"
},
{
"Name": "HomeGroupProvider",
"StartupType": "Manual",
"OriginalType": "Automatic"
}
]
},
"WPFEssTweaksLoc": {
"registry": [
{
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\CapabilityAccessManager\\ConsentStore\\location",
"Name": "Value",
"Type": "String",
"Value": "Deny",
"OriginalValue": "Allow"
},
{
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Sensor\\Overrides\\{BFA794E4-F964-4FDB-90F6-51056BFE4B44}",
"Name": "SensorPermissionState",
"Type": "Dword",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Services\\lfsvc\\Service\\Configuration",
"Name": "Status",
"Type": "Dword",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SYSTEM\\Maps",
"Name": "AutoUpdateEnabled",
"Type": "Dword",
"Value": "0",
"OriginalValue": "1"
}
]
},
"WPFEssTweaksServices": {
"service": [
{
"Name": "AJRouter",
"StartupType": "Disabled",
"OriginalType": "Manual"
},
{
"Name": "ALG",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "AppIDSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "AppMgmt",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "AppReadiness",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "AppVClient",
"StartupType": "Disabled",
"OriginalType": "Disabled"
},
{
"Name": "AppXSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "Appinfo",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "AssignedAccessManagerSvc",
"StartupType": "Disabled",
"OriginalType": "Manual"
},
{
"Name": "AudioEndpointBuilder",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "AudioSrv",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "Audiosrv",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "AxInstSV",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "BDESVC",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "BFE",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "BITS",
"StartupType": "AutomaticDelayedStart",
"OriginalType": "Automatic"
},
{
"Name": "BTAGService",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "BcastDVRUserService_dc2a4",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "BluetoothUserService_dc2a4",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "BrokerInfrastructure",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "Browser",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "BthAvctpSvc",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "BthHFSrv",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "CDPSvc",
"StartupType": "Manual",
"OriginalType": "Automatic"
},
{
"Name": "CDPUserSvc_dc2a4",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "COMSysApp",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "CaptureService_dc2a4",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "CertPropSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "ClipSVC",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "ConsentUxUserSvc_dc2a4",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "CoreMessagingRegistrar",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "CredentialEnrollmentManagerUserSvc_dc2a4",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "CryptSvc",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "CscService",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "DPS",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "DcomLaunch",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "DcpSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "DevQueryBroker",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "DeviceAssociationBrokerSvc_dc2a4",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "DeviceAssociationService",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "DeviceInstall",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "DevicePickerUserSvc_dc2a4",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "DevicesFlowUserSvc_dc2a4",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "Dhcp",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "DiagTrack",
"StartupType": "Disabled",
"OriginalType": "Automatic"
},
{
"Name": "DialogBlockingService",
"StartupType": "Disabled",
"OriginalType": "Disabled"
},
{
"Name": "DispBrokerDesktopSvc",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "DisplayEnhancementService",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "DmEnrollmentSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "Dnscache",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "DoSvc",
"StartupType": "AutomaticDelayedStart",
"OriginalType": "Automatic"
},
{
"Name": "DsSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "DsmSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "DusmSvc",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "EFS",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "EapHost",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "EntAppSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "EventLog",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "EventSystem",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "FDResPub",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "Fax",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "FontCache",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "FrameServer",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "FrameServerMonitor",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "GraphicsPerfSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "HomeGroupListener",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "HomeGroupProvider",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "HvHost",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "IEEtwCollectorService",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "IKEEXT",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "InstallService",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "InventorySvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "IpxlatCfgSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "KeyIso",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "KtmRm",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "LSM",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "LanmanServer",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "LanmanWorkstation",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "LicenseManager",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "LxpSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "MSDTC",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "MSiSCSI",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "MapsBroker",
"StartupType": "AutomaticDelayedStart",
"OriginalType": "Automatic"
},
{
"Name": "McpManagementService",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "MessagingService_dc2a4",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "MicrosoftEdgeElevationService",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "MixedRealityOpenXRSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "MpsSvc",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "MsKeyboardFilter",
"StartupType": "Manual",
"OriginalType": "Disabled"
},
{
"Name": "NPSMSvc_dc2a4",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "NaturalAuthentication",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "NcaSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "NcbService",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "NcdAutoSetup",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "NetSetupSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "NetTcpPortSharing",
"StartupType": "Disabled",
"OriginalType": "Disabled"
},
{
"Name": "Netlogon",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "Netman",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "NgcCtnrSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "NgcSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "NlaSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "OneSyncSvc_dc2a4",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "P9RdrService_dc2a4",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "PNRPAutoReg",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "PNRPsvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "PcaSvc",
"StartupType": "Manual",
"OriginalType": "Automatic"
},
{
"Name": "PeerDistSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "PenService_dc2a4",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "PerfHost",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "PhoneSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "PimIndexMaintenanceSvc_dc2a4",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "PlugPlay",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "PolicyAgent",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "Power",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "PrintNotify",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "PrintWorkflowUserSvc_dc2a4",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "ProfSvc",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "PushToInstall",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "QWAVE",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "RasAuto",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "RasMan",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "RemoteAccess",
"StartupType": "Disabled",
"OriginalType": "Disabled"
},
{
"Name": "RemoteRegistry",
"StartupType": "Disabled",
"OriginalType": "Disabled"
},
{
"Name": "RetailDemo",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "RmSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "RpcEptMapper",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "RpcLocator",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "RpcSs",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "SCPolicySvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "SCardSvr",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "SDRSVC",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "SEMgrSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "SENS",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "SNMPTRAP",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "SNMPTrap",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "SSDPSRV",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "SamSs",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "ScDeviceEnum",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "Schedule",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "SecurityHealthService",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "Sense",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "SensorDataService",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "SensorService",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "SensrSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "SessionEnv",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "SgrmBroker",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "SharedAccess",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "SharedRealitySvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "ShellHWDetection",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "SmsRouter",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "Spooler",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "SstpSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "StateRepository",
"StartupType": "Manual",
"OriginalType": "Automatic"
},
{
"Name": "StiSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "StorSvc",
"StartupType": "Manual",
"OriginalType": "Automatic"
},
{
"Name": "SysMain",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "SystemEventsBroker",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "TabletInputService",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "TapiSrv",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "TermService",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "TextInputManagementService",
"StartupType": "Manual",
"OriginalType": "Automatic"
},
{
"Name": "Themes",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "TieringEngineService",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "TimeBroker",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "TimeBrokerSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "TokenBroker",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "TrkWks",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "TroubleshootingSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "TrustedInstaller",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "UI0Detect",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "UdkUserSvc_dc2a4",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "UevAgentService",
"StartupType": "Disabled",
"OriginalType": "Disabled"
},
{
"Name": "UmRdpService",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "UnistoreSvc_dc2a4",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "UserDataSvc_dc2a4",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "UserManager",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "UsoSvc",
"StartupType": "Manual",
"OriginalType": "Automatic"
},
{
"Name": "VGAuthService",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "VMTools",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "VSS",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "VacSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "VaultSvc",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "W32Time",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "WEPHOSTSVC",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "WFDSConMgrSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "WMPNetworkSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "WManSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "WPDBusEnum",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "WSService",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "WSearch",
"StartupType": "AutomaticDelayedStart",
"OriginalType": "Automatic"
},
{
"Name": "WaaSMedicSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "WalletService",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "WarpJITSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "WbioSrvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "Wcmsvc",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "WcsPlugInService",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "WdNisSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "WdiServiceHost",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "WdiSystemHost",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "WebClient",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "Wecsvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "WerSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "WiaRpc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "WinDefend",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "WinHttpAutoProxySvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "WinRM",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "Winmgmt",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "WlanSvc",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "WpcMonSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "WpnService",
"StartupType": "Manual",
"OriginalType": "Automatic"
},
{
"Name": "WpnUserService_dc2a4",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "WwanSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "XblAuthManager",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "XblGameSave",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "XboxGipSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "XboxNetApiSvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "autotimesvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "bthserv",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "camsvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "cbdhsvc_dc2a4",
"StartupType": "Manual",
"OriginalType": "Automatic"
},
{
"Name": "cloudidsvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "dcsvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "defragsvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "diagnosticshub.standardcollector.service",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "diagsvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "dmwappushservice",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "dot3svc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "edgeupdate",
"StartupType": "Manual",
"OriginalType": "Automatic"
},
{
"Name": "edgeupdatem",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "embeddedmode",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "fdPHost",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "fhsvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "gpsvc",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "hidserv",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "icssvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "iphlpsvc",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "lfsvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "lltdsvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "lmhosts",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "mpssvc",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "msiserver",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "netprofm",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "nsi",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "p2pimsvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "p2psvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "perceptionsimulation",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "pla",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "seclogon",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "shpamsvc",
"StartupType": "Disabled",
"OriginalType": "Disabled"
},
{
"Name": "smphost",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "spectrum",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "sppsvc",
"StartupType": "AutomaticDelayedStart",
"OriginalType": "Automatic"
},
{
"Name": "ssh-agent",
"StartupType": "Disabled",
"OriginalType": "Disabled"
},
{
"Name": "svsvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "swprv",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "tiledatamodelsvc",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "tzautoupdate",
"StartupType": "Disabled",
"OriginalType": "Disabled"
},
{
"Name": "uhssvc",
"StartupType": "Disabled",
"OriginalType": "Disabled"
},
{
"Name": "upnphost",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "vds",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "vm3dservice",
"StartupType": "Manual",
"OriginalType": "Automatic"
},
{
"Name": "vmicguestinterface",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "vmicheartbeat",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "vmickvpexchange",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "vmicrdv",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "vmicshutdown",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "vmictimesync",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "vmicvmsession",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "vmicvss",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "vmvss",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "wbengine",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "wcncsvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "webthreatdefsvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "webthreatdefusersvc_dc2a4",
"StartupType": "Automatic",
"OriginalType": "Automatic"
},
{
"Name": "wercplsupport",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "wisvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "wlidsvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "wlpasvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "wmiApSrv",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "workfolderssvc",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "wscsvc",
"StartupType": "AutomaticDelayedStart",
"OriginalType": "Automatic"
},
{
"Name": "wuauserv",
"StartupType": "Manual",
"OriginalType": "Manual"
},
{
"Name": "wudfsvc",
"StartupType": "Manual",
"OriginalType": "Manual"
}
]
},
"WPFEssTweaksTele": {
"ScheduledTask": [
{
"Name": "Microsoft\\Windows\\Application Experience\\Microsoft Compatibility Appraiser",
"State": "Disabled",
"OriginalState": "Enabled"
},
{
"Name": "Microsoft\\Windows\\Application Experience\\ProgramDataUpdater",
"State": "Disabled",
"OriginalState": "Enabled"
},
{
"Name": "Microsoft\\Windows\\Autochk\\Proxy",
"State": "Disabled",
"OriginalState": "Enabled"
},
{
"Name": "Microsoft\\Windows\\Customer Experience Improvement Program\\Consolidator",
"State": "Disabled",
"OriginalState": "Enabled"
},
{
"Name": "Microsoft\\Windows\\Customer Experience Improvement Program\\UsbCeip",
"State": "Disabled",
"OriginalState": "Enabled"
},
{
"Name": "Microsoft\\Windows\\DiskDiagnostic\\Microsoft-Windows-DiskDiagnosticDataCollector",
"State": "Disabled",
"OriginalState": "Enabled"
},
{
"Name": "Microsoft\\Windows\\Feedback\\Siuf\\DmClient",
"State": "Disabled",
"OriginalState": "Enabled"
},
{
"Name": "Microsoft\\Windows\\Feedback\\Siuf\\DmClientOnScenarioDownload",
"State": "Disabled",
"OriginalState": "Enabled"
},
{
"Name": "Microsoft\\Windows\\Windows Error Reporting\\QueueReporting",
"State": "Disabled",
"OriginalState": "Enabled"
}
],
"registry": [
{
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\DataCollection",
"type": "Dword",
"value": 0,
"name": "AllowTelemetry",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\DataCollection",
"OriginalValue": "1",
"name": "AllowTelemetry",
"value": 0,
"type": "Dword"
},
{
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
"OriginalValue": "1",
"name": "ContentDeliveryAllowed",
"value": 0,
"type": "Dword"
},
{
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
"OriginalValue": "1",
"name": "OemPreInstalledAppsEnabled",
"value": 0,
"type": "Dword"
},
{
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
"OriginalValue": "1",
"name": "PreInstalledAppsEnabled",
"value": 0,
"type": "Dword"
},
{
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
"OriginalValue": "1",
"name": "PreInstalledAppsEverEnabled",
"value": 0,
"type": "Dword"
},
{
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
"OriginalValue": "1",
"name": "SilentInstalledAppsEnabled",
"value": 0,
"type": "Dword"
},
{
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
"OriginalValue": "1",
"name": "SubscribedContent-338387Enabled",
"value": 0,
"type": "Dword"
},
{
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
"OriginalValue": "1",
"name": "SubscribedContent-338388Enabled",
"value": 0,
"type": "Dword"
},
{
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
"OriginalValue": "1",
"name": "SubscribedContent-338389Enabled",
"value": 0,
"type": "Dword"
},
{
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
"OriginalValue": "1",
"name": "SubscribedContent-353698Enabled",
"value": 0,
"type": "Dword"
},
{
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
"OriginalValue": "1",
"name": "SystemPaneSuggestionsEnabled",
"value": 0,
"type": "Dword"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\CloudContent",
"OriginalValue": "0",
"name": "DisableWindowsConsumerFeatures",
"value": 1,
"type": "Dword"
},
{
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Siuf\\Rules",
"OriginalValue": "0",
"name": "NumberOfSIUFInPeriod",
"value": 0,
"type": "Dword"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\DataCollection",
"OriginalValue": "0",
"name": "DoNotShowFeedbackNotifications",
"value": 1,
"type": "Dword"
},
{
"Path": "HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\CloudContent",
"OriginalValue": "0",
"name": "DisableTailoredExperiencesWithDiagnosticData",
"value": 1,
"type": "Dword"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\AdvertisingInfo",
"OriginalValue": "0",
"name": "DisabledByGroupPolicy",
"value": 1,
"type": "Dword"
},
{
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\Windows Error Reporting",
"OriginalValue": "0",
"name": "Disabled",
"value": 1,
"type": "Dword"
},
{
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\DeliveryOptimization\\Config",
"OriginalValue": "1",
"name": "DODownloadMode",
"value": 1,
"type": "Dword"
},
{
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Remote Assistance",
"OriginalValue": "1",
"name": "fAllowToGetHelp",
"value": 0,
"type": "Dword"
},
{
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\OperationStatusManager",
"OriginalValue": "0",
"name": "EnthusiastMode",
"value": 1,
"type": "Dword"
},
{
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
"OriginalValue": "1",
"name": "ShowTaskViewButton",
"value": 0,
"type": "Dword"
},
{
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\People",
"OriginalValue": "1",
"name": "PeopleBand",
"value": 0,
"type": "Dword"
},
{
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
"OriginalValue": "1",
"name": "LaunchTo",
"value": 1,
"type": "Dword"
},
{
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\FileSystem",
"OriginalValue": "0",
"name": "LongPathsEnabled",
"value": 1,
"type": "Dword"
},
{
"_Comment" : "Driver searching is a function that should be left in",
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\DriverSearching",
"OriginalValue": "1",
"name": "SearchOrderConfig",
"value": "1",
"type": "Dword"
},
{
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Multimedia\\SystemProfile",
"OriginalValue": "1",
"name": "SystemResponsiveness",
"value": "0",
"type": "Dword"
},
{
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Multimedia\\SystemProfile",
"OriginalValue": "1",
"name": "NetworkThrottlingIndex",
"value": "4294967295",
"type": "Dword"
},
{
"Path": "HKCU:\\Control Panel\\Desktop",
"OriginalValue": "1",
"name": "MenuShowDelay",
"value": "1",
"type": "Dword"
},
{
"Path": "HKCU:\\Control Panel\\Desktop",
"OriginalValue": "1",
"name": "AutoEndTasks",
"value": "1",
"type": "Dword"
},
{
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Memory Management",
"OriginalValue": "0",
"name": "ClearPageFileAtShutdown",
"value": "0",
"type": "Dword"
},
{
"Path": "HKLM:\\SYSTEM\\ControlSet001\\Services\\Ndu",
"OriginalValue": "1",
"name": "Start",
"value": "2",
"type": "Dword"
},
{
"Path": "HKCU:\\Control Panel\\Mouse",
"OriginalValue": "400",
"name": "MouseHoverTime",
"value": "400",
"type": "String"
},
{
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Services\\LanmanServer\\Parameters",
"OriginalValue": "20",
"name": "IRPStackSize",
"value": "30",
"type": "Dword"
},
{
"Path": "HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Windows Feeds",
"OriginalValue": "1",
"name": "EnableFeeds",
"value": "0",
"type": "Dword"
},
{
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Feeds",
"OriginalValue": "1",
"name": "ShellFeedsTaskbarViewMode",
"value": "2",
"type": "Dword"
},
{
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer",
"OriginalValue": "1",
"name": "HideSCAMeetNow",
"value": "1",
"type": "Dword"
},
{
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Multimedia\\SystemProfile\\Tasks\\Games",
"OriginalValue": "1",
"name": "GPU Priority",
"value": "8",
"type": "Dword"
},
{
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Multimedia\\SystemProfile\\Tasks\\Games",
"OriginalValue": "1",
"name": "Priority",
"value": "6",
"type": "Dword"
},
{
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Multimedia\\SystemProfile\\Tasks\\Games",
"OriginalValue": "High",
"name": "Scheduling Category",
"value": "High",
"type": "String"
}
],
"InvokeScript": [
"bcdedit /set `{current`} bootmenupolicy Legacy | Out-Null
If ((get-ItemProperty -Path \"HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\" -Name CurrentBuild).CurrentBuild -lt 22557) {
$taskmgr = Start-Process -WindowStyle Hidden -FilePath taskmgr.exe -PassThru
Do {
Start-Sleep -Milliseconds 100
$preferences = Get-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\TaskManager\" -Name \"Preferences\" -ErrorAction SilentlyContinue
} Until ($preferences)
Stop-Process $taskmgr
$preferences.Preferences[28] = 0
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\TaskManager\" -Name \"Preferences\" -Type Binary -Value $preferences.Preferences
}
Remove-Item -Path \"HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{0DB7E03F-FC29-4DC6-9020-FF41B59E513A}\" -Recurse -ErrorAction SilentlyContinue
# Group svchost.exe processes
$ram = (Get-CimInstance -ClassName Win32_PhysicalMemory | Measure-Object -Property Capacity -Sum).Sum / 1kb
Set-ItemProperty -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\" -Name \"SvcHostSplitThresholdInKB\" -Type DWord -Value $ram -Force
$autoLoggerDir = \"$env:PROGRAMDATA\\Microsoft\\Diagnosis\\ETLLogs\\AutoLogger\"
If (Test-Path \"$autoLoggerDir\\AutoLogger-Diagtrack-Listener.etl\") {
Remove-Item \"$autoLoggerDir\\AutoLogger-Diagtrack-Listener.etl\"
}
icacls $autoLoggerDir /deny SYSTEM:`(OI`)`(CI`)F | Out-Null
"
]
},
"WPFEssTweaksWifi": {
"registry": [
{
"Path": "HKLM:\\Software\\Microsoft\\PolicyManager\\default\\WiFi\\AllowWiFiHotSpotReporting",
"Name": "Value",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\Software\\Microsoft\\PolicyManager\\default\\WiFi\\AllowAutoConnectToWiFiSenseHotspots",
"Name": "Value",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
}
]
},
"WPFMiscTweaksLapPower": {
"registry": [
{
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Power\\PowerThrottling",
"Name": "PowerThrottlingOff",
"Type": "DWord",
"Value": "00000000",
"OriginalValue": "00000001"
},
{
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Power",
"Name": "HiberbootEnabled",
"Type": "DWord",
"Value": "0000001",
"OriginalValue": "0000000"
}
]
},
"WPFMiscTweaksPower": {
"registry": [
{
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Power\\PowerThrottling",
"Name": "PowerThrottlingOff",
"Type": "DWord",
"Value": "00000001",
"OriginalValue": "00000000"
},
{
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Power",
"Name": "HiberbootEnabled",
"Type": "DWord",
"Value": "0000000",
"OriginalValue": "00000001"
}
]
},
"WPFMiscTweaksExt": {
"registry": [
{
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
"Name": "HideFileExt",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
}
]
},
"WPFMiscTweaksUTC": {
"registry": [
{
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\TimeZoneInformation",
"Name": "RealTimeIsUniversal",
"Type": "DWord",
"Value": "1",
"OriginalValue": "0"
}
]
},
"WPFMiscTweaksDisplay": {
"registry": [
{
"path": "HKCU:\\Control Panel\\Desktop",
"OriginalValue": "1",
"name": "DragFullWindows",
"value": "0",
"type": "String"
},
{
"path": "HKCU:\\Control Panel\\Desktop",
"OriginalValue": "1",
"name": "MenuShowDelay",
"value": "200",
"type": "String"
},
{
"path": "HKCU:\\Control Panel\\Desktop\\WindowMetrics",
"OriginalValue": "1",
"name": "MinAnimate",
"value": "0",
"type": "String"
},
{
"path": "HKCU:\\Control Panel\\Keyboard",
"OriginalValue": "1",
"name": "KeyboardDelay",
"value": "0",
"type": "DWord"
},
{
"path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
"OriginalValue": "1",
"name": "ListviewAlphaSelect",
"value": "0",
"type": "DWord"
},
{
"path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
"OriginalValue": "1",
"name": "ListviewShadow",
"value": "0",
"type": "DWord"
},
{
"path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
"OriginalValue": "1",
"name": "TaskbarAnimations",
"value": "0",
"type": "DWord"
},
{
"path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\VisualEffects",
"OriginalValue": "1",
"name": "VisualFXSetting",
"value": "3",
"type": "DWord"
},
{
"path": "HKCU:\\Software\\Microsoft\\Windows\\DWM",
"OriginalValue": "1",
"name": "EnableAeroPeek",
"value": "0",
"type": "DWord"
}
],
"InvokeScript": [
"Set-ItemProperty -Path \"HKCU:\\Control Panel\\Desktop\" -Name \"UserPreferencesMask\" -Type Binary -Value ([byte[]](144,18,3,128,16,0,0,0))"
],
"UndoScript": [
"Remove-ItemProperty -Path \"HKCU:\\Control Panel\\Desktop\" -Name \"UserPreferencesMask\""
]
},
"WPFEssTweaksDeBloat": {
"appx": [
"Microsoft.Microsoft3DViewer",
"Microsoft.AppConnector",
"Microsoft.BingFinance",
"Microsoft.BingNews",
"Microsoft.BingSports",
"Microsoft.BingTranslator",
"Microsoft.BingWeather",
"Microsoft.BingFoodAndDrink",
"Microsoft.BingHealthAndFitness",
"Microsoft.BingTravel",
"Microsoft.MinecraftUWP",
"Microsoft.GamingServices",
"Microsoft.GetHelp",
"Microsoft.Getstarted",
"Microsoft.Messaging",
"Microsoft.Microsoft3DViewer",
"Microsoft.MicrosoftSolitaireCollection",
"Microsoft.NetworkSpeedTest",
"Microsoft.News",
"Microsoft.Office.Lens",
"Microsoft.Office.Sway",
"Microsoft.Office.OneNote",
"Microsoft.OneConnect",
"Microsoft.People",
"Microsoft.Print3D",
"Microsoft.SkypeApp",
"Microsoft.Wallet",
"Microsoft.Whiteboard",
"Microsoft.WindowsAlarms",
"microsoft.windowscommunicationsapps",
"Microsoft.WindowsFeedbackHub",
"Microsoft.WindowsMaps",
"Microsoft.WindowsPhone",
"Microsoft.WindowsSoundRecorder",
"Microsoft.XboxApp",
"Microsoft.ConnectivityStore",
"Microsoft.CommsPhone",
"Microsoft.ScreenSketch",
"Microsoft.Xbox.TCUI",
"Microsoft.XboxGameOverlay",
"Microsoft.XboxGameCallableUI",
"Microsoft.XboxSpeechToTextOverlay",
"Microsoft.MixedReality.Portal",
"Microsoft.XboxIdentityProvider",
"Microsoft.ZuneMusic",
"Microsoft.ZuneVideo",
"Microsoft.Getstarted",
"Microsoft.MicrosoftOfficeHub",
"*EclipseManager*",
"*ActiproSoftwareLLC*",
"*AdobeSystemsIncorporated.AdobePhotoshopExpress*",
"*Duolingo-LearnLanguagesforFree*",
"*PandoraMediaInc*",
"*CandyCrush*",
"*BubbleWitch3Saga*",
"*Wunderlist*",
"*Flipboard*",
"*Twitter*",
"*Facebook*",
"*Royal Revolt*",
"*Sway*",
"*Speed Test*",
"*Dolby*",
"*Viber*",
"*ACGMediaPlayer*",
"*Netflix*",
"*OneCalendar*",
"*LinkedInforWindows*",
"*HiddenCityMysteryofShadows*",
"*Hulu*",
"*HiddenCity*",
"*AdobePhotoshopExpress*",
"*HotspotShieldFreeVPN*",
"*Microsoft.Advertising.Xaml*"
],
"InvokeScript": [
"
$TeamsPath = [System.IO.Path]::Combine($env:LOCALAPPDATA, ''Microsoft'', ''Teams'')
$TeamsUpdateExePath = [System.IO.Path]::Combine($TeamsPath, ''Update.exe'')
Write-Host \"Stopping Teams process...\"
Stop-Process -Name \"*teams*\" -Force -ErrorAction SilentlyContinue
Write-Host \"Uninstalling Teams from AppData\\Microsoft\\Teams\"
if ([System.IO.File]::Exists($TeamsUpdateExePath)) {
# Uninstall app
$proc = Start-Process $TeamsUpdateExePath \"-uninstall -s\" -PassThru
$proc.WaitForExit()
}
Write-Host \"Removing Teams AppxPackage...\"
Get-AppxPackage \"*Teams*\" | Remove-AppxPackage -ErrorAction SilentlyContinue
Get-AppxPackage \"*Teams*\" -AllUsers | Remove-AppxPackage -AllUsers -ErrorAction SilentlyContinue
Write-Host \"Deleting Teams directory\"
if ([System.IO.Directory]::Exists($TeamsPath)) {
Remove-Item $TeamsPath -Force -Recurse -ErrorAction SilentlyContinue
}
Write-Host \"Deleting Teams uninstall registry key\"
# Uninstall from Uninstall registry key UninstallString
$us = (Get-ChildItem -Path HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall, HKLM:\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall | Get-ItemProperty | Where-Object { $_.DisplayName -like ''*Teams*''}).UninstallString
if ($us.Length -gt 0) {
$us = ($us.Replace(''/I'', ''/uninstall '') + '' /quiet'').Replace('' '', '' '')
$FilePath = ($us.Substring(0, $us.IndexOf(''.exe'') + 4).Trim())
$ProcessArgs = ($us.Substring($us.IndexOf(''.exe'') + 5).Trim().replace('' '', '' ''))
$proc = Start-Process -FilePath $FilePath -Args $ProcessArgs -PassThru
$proc.WaitForExit()
}
"
]
},
"WPFEssTweaksOO": {
"InvokeScript": [
"curl.exe -s \"https://raw.githubusercontent.com/ChrisTitusTech/winutil/main/ooshutup10_winutil_settings.cfg\" -o $ENV:temp\\ooshutup10.cfg
curl.exe -s \"https://dl5.oo-software.com/files/ooshutup10/OOSU10.exe\" -o $ENV:temp\\OOSU10.exe
Start-Process $ENV:temp\\OOSU10.exe -ArgumentList \"\"\"$ENV:temp\\ooshutup10.cfg\"\" /quiet\"
"
]
},
"WPFEssTweaksStorage": {
"InvokeScript": [
"Remove-Item -Path \"HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\StorageSense\\Parameters\\StoragePolicy\" -Recurse -ErrorAction SilentlyContinue"
],
"UndoScript": [
"New-Item -Path \"HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\StorageSense\\Parameters\\StoragePolicy\" | Out-Null
"
]
},
"WPFMiscTweaksLapNum": {
"Registry": [
{
"path": "HKU:\\.DEFAULT\\Control Panel\\Keyboard",
"OriginalValue": "1",
"name": "InitialKeyboardIndicators",
"value": "0",
"type": "DWord"
}
]
},
"WPFMiscTweaksNum": {
"Registry": [
{
"path": "HKU:\\.DEFAULT\\Control Panel\\Keyboard",
"OriginalValue": "1",
"name": "InitialKeyboardIndicators",
"value": "80000002",
"type": "DWord"
}
]
},
"WPFEssTweaksRemoveEdge": {
"InvokeScript": [
"
#:: Standalone script by AveYo Source: https://raw.githubusercontent.com/AveYo/fox/main/Edge_Removal.bat
curl.exe -s \"https://raw.githubusercontent.com/ChrisTitusTech/winutil/main/edgeremoval.bat\" -o $ENV:temp\\edgeremoval.bat
Start-Process $ENV:temp\\edgeremoval.bat
"
],
"UndoScript": [
"winget install Microsoft.Edge"
]
},
"WPFMiscTweaksDisableNotifications": {
"registry": [
{
"Path": "HKCU:\\Software\\Policies\\Microsoft\\Windows\\Explorer",
"Name": "DisableNotificationCenter",
"Type": "DWord",
"Value": "1",
"OriginalValue": "0"
},
{
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\PushNotifications",
"Name": "ToastEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
}
]
},
"WPFMiscTweaksRightClickMenu": {
"InvokeScript": [
"New-Item -Path \"HKCU:\\Software\\Classes\\CLSID\\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\" -Name \"InprocServer32\" -force -value \"\" "
],
"UndoScript": [
"
Remove-Item -Path \"HKCU:\\Software\\Classes\\CLSID\\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\" -Recurse -Confirm:$false -Force
Write-Host Restart Needed for change
"
]
},
"WPFEssTweaksDiskCleanup": {
"InvokeScript": [
"
cleanmgr.exe /d C: /VERYLOWDISK
Dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase
"
]
},
"WPFMiscTweaksDisableTPMCheck": {
"registry": [
{
"Path": "HKLM:\\SYSTEM\\Setup\\MoSetup",
"Name": "AllowUpgradesWithUnsupportedTPM",
"Type": "DWord",
"Value": "1",
"OriginalValue": "0"
}
]
},
"WPFMiscTweaksDisableUAC": {
"registry": [
{
"path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System",
"OriginalValue": "5",
"name": "ConsentPromptBehaviorAdmin",
"value": "0",
"type": "DWord"
}
]
},
"WPFMiscTweaksDisableMouseAcceleration": {
"registry": [
{
"path": "HKCU:\\Control Panel\\Mouse",
"OriginalValue": "1",
"name": "MouseSpeed",
"value": "0",
"type": "String"
},
{
"path": "HKCU:\\Control Panel\\Mouse",
"OriginalValue": "6",
"name": "MouseThreshold1",
"value": "0",
"type": "String"
},
{
"path": "HKCU:\\Control Panel\\Mouse",
"OriginalValue": "10",
"name": "MouseThreshold2",
"value": "0",
"type": "String"
}
]
},
"WPFMiscTweaksEnableMouseAcceleration": {
"registry": [
{
"path": "HKCU:\\Control Panel\\Mouse",
"OriginalValue": "1",
"name": "MouseSpeed",
"value": "1",
"type": "String"
},
{
"path": "HKCU:\\Control Panel\\Mouse",
"OriginalValue": "6",
"name": "MouseThreshold1",
"value": "6",
"type": "String"
},
{
"path": "HKCU:\\Control Panel\\Mouse",
"OriginalValue": "10",
"name": "MouseThreshold2",
"value": "10",
"type": "String"
}
]
},
"WPFMiscTweaksEnableVerboselogon": {
"registry": [
{
"path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\policies\\system",
"OriginalValue": "0",
"name": "VerboseStatus",
"value": "1",
"type": "DWord"
}
]
},
"WPFEssTweaksDeleteTempFiles": {
"InvokeScript": [
"Get-ChildItem -Path \"C:\\Windows\\Temp\" *.* -Recurse | Remove-Item -Force -Recurse
Get-ChildItem -Path $env:TEMP *.* -Recurse | Remove-Item -Force -Recurse"
]
},
"WPFEssTweaksRemoveCortana": {
"InvokeScript": [
"Get-AppxPackage -allusers Microsoft.549981C3F5F10 | Remove-AppxPackage"
],
"UndoScript": [
"Get-AppxPackage -allusers | where Name -like \"Microsoft.549981C3F5F10\" | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register \"$($_.InstallLocation)\\AppXManifest.xml\"}
"
]
},
"WPFEssTweaksDVR": {
"registry": [
{
"Path": "HKCU:\\System\\GameConfigStore",
"Name": "GameDVR_FSEBehavior",
"Value": "2",
"OriginalValue": "1",
"Type": "DWord"
},
{
"Path": "HKCU:\\System\\GameConfigStore",
"Name": "GameDVR_Enabled",
"Value": "0",
"OriginalValue": "1",
"Type": "DWord"
},
{
"Path": "HKCU:\\System\\GameConfigStore",
"Name": "GameDVR_DXGIHonorFSEWindowsCompatible",
"Value": "1",
"OriginalValue": "0",
"Type": "DWord"
},
{
"Path": "HKCU:\\System\\GameConfigStore",
"Name": "GameDVR_HonorUserFSEBehaviorMode",
"Value": "1",
"OriginalValue": "0",
"Type": "DWord"
},
{
"Path": "HKCU:\\System\\GameConfigStore",
"Name": "GameDVR_EFSEFeatureFlags",
"Value": "0",
"OriginalValue": "1",
"Type": "DWord"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\GameDVR",
"Name": "AllowGameDVR",
"Value": "0",
"OriginalValue": "1",
"Type": "DWord"
}
]
},
"WPFBingSearch": {
"registry": [
{
"OriginalValue": "1",
"Name": "BingSearchEnabled",
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Search",
"Type": "DWORD",
"Value": "0"
}
]
}
}' | convertfrom-json
# SPDX-License-Identifier: MIT
#Configure max thread count for RunspacePool.
$maxthreads = [int]$env:NUMBER_OF_PROCESSORS
#Create a new session state for parsing variables ie hashtable into our runspace.
$hashVars = New-object System.Management.Automation.Runspaces.SessionStateVariableEntry -ArgumentList 'sync',$sync,$Null
$InitialSessionState = [System.Management.Automation.Runspaces.InitialSessionState]::CreateDefault()
#Add the variable to the RunspacePool sessionstate
$InitialSessionState.Variables.Add($hashVars)
#Add functions
$functions = Get-ChildItem function:\ | Where-Object {$_.name -like "*winutil*" -or $_.name -like "*WPF*"}
foreach ($function in $functions){
$functionDefinition = Get-Content function:\$($function.name)
$functionEntry = New-Object System.Management.Automation.Runspaces.SessionStateFunctionEntry -ArgumentList $($function.name), $functionDefinition
# And add it to the iss object
$initialSessionState.Commands.Add($functionEntry)
}
#Create our runspace pool. We are entering three parameters here min thread count, max thread count and host machine of where these runspaces should be made.
$sync.runspace = [runspacefactory]::CreateRunspacePool(1,$maxthreads,$InitialSessionState, $Host)
#Open a RunspacePool instance.
$sync.runspace.Open()
#region exception classes
class WingetFailedInstall : Exception {
[string] $additionalData
WingetFailedInstall($Message) : base($Message) {}
}
class ChocoFailedInstall : Exception {
[string] $additionalData
ChocoFailedInstall($Message) : base($Message) {}
}
class GenericException : Exception {
[string] $additionalData
GenericException($Message) : base($Message) {}
}
#endregion exception classes
$inputXML = $inputXML -replace 'mc:Ignorable="d"', '' -replace "x:N", 'N' -replace '^
Write-Host "Unable to load Windows.Markup.XamlReader. Double-check syntax and ensure .net is installed."
}
#===========================================================================
# Store Form Objects In PowerShell
#===========================================================================
$xaml.SelectNodes("//*[@Name]") | ForEach-Object {$sync["$("$($psitem.Name)")"] = $sync["Form"].FindName($psitem.Name)}
$sync.keys | ForEach-Object {
if($sync.$psitem){
if($($sync["$psitem"].GetType() | Select-Object -ExpandProperty Name) -eq "Button"){
$sync["$psitem"].Add_Click({
[System.Object]$Sender = $args[0]
Invoke-WPFButton $Sender.name
})
}
}
}
$sync.keys | ForEach-Object {
if($sync.$psitem){
if(
$($sync["$psitem"].GetType() | Select-Object -ExpandProperty Name) -eq "CheckBox" `
-and $sync["$psitem"].Name -like "WPFToggle*"
){
$sync["$psitem"].IsChecked = Get-WinUtilToggleStatus $sync["$psitem"].Name
$sync["$psitem"].Add_Click({
[System.Object]$Sender = $args[0]
Invoke-WPFToggle $Sender.name
})
}
}
}
#===========================================================================
# Setup background config
#===========================================================================
#Load information in the background
Invoke-WPFRunspace -ScriptBlock {
$sync.ConfigLoaded = $False
$sync.ComputerInfo = Get-ComputerInfo
$sync.ConfigLoaded = $True
} | Out-Null
#===========================================================================
# Shows the form
#===========================================================================
Invoke-WPFFormVariables
try{
Install-WinUtilChoco
}
Catch [ChocoFailedInstall]{
Write-Host "==========================================="
Write-Host "-- Chocolatey failed to install ---"
Write-Host "==========================================="
}
$sync["Form"].title = $sync["Form"].title + " " + $sync.version
$sync["Form"].Add_Closing({
$sync.runspace.Dispose()
$sync.runspace.Close()
[System.GC]::Collect()
})
$sync["Form"].ShowDialog() | out-null
Stop-Transcript