05 16 23 testing (#881)

* Fix power profile (#766) (#767)

* Fix power profile query

* fix syntax

* fix

* Update Invoke-WPFUltimatePerformance.ps1

* Update winutil.ps1

* power profile fix

* add reset network with netsh (#768)

* add verbose logon (#773)

* add verbose logon

Enable or disable verbose sign in status messages. Verbose status messages may be helpful when you are troubleshooting slow startup, shutdown, logon, or logoff behavior.

* compress-into-one-checkbox

* compile winutil.ps1

* Update README.md (#774)

* Update README.md

* Update README.md

* Adding 3 programs to the install tab (#789)

* Prism Launcher - Custom FOSS minecraft launcher

* Gsudo - Command line program that allows you to elevate a program as admin.

* WingetUI - Graphical front end for winget, chochlatey and scoop

Co-authored-by: Chris Titus <contact@christitus.com>

* add undoscript feature + implement it on every tweaks (#776)

* add undoscript feature + implement it on right click menu

- add undoscript feature
- add undo for right click menu to go back to windows 11 default right click menu by implementing undoscript feature

* undoscript for WPFMiscTweaksDisplay

* undoscript for WPFEssTweaksRemoveEdge

* undoscript for WPFEssTweaksRemoveCortana

* undoscript for WPFEssTweaksStorage

* Update Invoke-WinUtilTweaks.ps1

thanks to @DeveloperDurp

* compile

* Fix packages name (#815)

* fix-winrar_package_name

* fix-vc++_package_name

* fix #687

* implement check for admin (#818)

check if script is running as admin or not and if not then it attempt to relaunch with admin privilege.

* add "NetFx4Extended-ASPNET45" under dotnet features (#831)

* add-docker-desktop (#834)

Co-authored-by: Chris Titus <contact@christitus.com>

* Fix 'Get Installed' for multiple-dependency apps (#835)

* Update winutil.ps1 (#858)

fix typos

* Fixing AcceptEULA on Autologin

* Program Update: Replace Origin with EA App #544 (#875)

* New Theme support, initial functions.  (#878)

* Fix power profile (#766)

* Fix power profile query

* fix syntax

* fix

* Update Invoke-WPFUltimatePerformance.ps1

* Update winutil.ps1

* power profile fix

* Adding Nomacs Opensource free and fast Image viewer

* Adding theme support

Later when this is tested well, we can do one of 2 things.
1. Pass theme on a command line so people with bad vision will have an option to have a better (more visible theme)
2. Create a drop down with themes and a save button which would save it ti some local config file

* Fix for the compile script

---------

Co-authored-by: Chris Titus <contact@christitus.com>

* Dark Mode Enable

* auto detect theme

---------

Co-authored-by: Padsala Tushal <57517785+padsalatushal@users.noreply.github.com>
Co-authored-by: Taken <taken@mairimashita.org>
Co-authored-by: Yurin Doctrine <bayramyurgidenn@gmail.com>
Co-authored-by: Aaron <54756786+AaronVickers@users.noreply.github.com>
Co-authored-by: Sahil Jassal <56100355+shljsl75891@users.noreply.github.com>
Co-authored-by: supplefrog <78985073+supplefrog@users.noreply.github.com>
Co-authored-by: KonTy <9524513+KonTy@users.noreply.github.com>
This commit is contained in:
Chris Titus 2023-07-13 15:46:00 -05:00 committed by GitHub
parent 2c6b459870
commit 68927444b6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 808 additions and 144 deletions

View File

@ -2,7 +2,10 @@ $OFS = "`r`n"
$scriptname = "winutil.ps1"
Remove-Item .\$scriptname
if (Test-Path -Path "$($scriptname)")
{
Remove-Item -Force "$($scriptname)"
}
Write-output '
################################################################################################################

View File

@ -1,12 +1,13 @@
# Chris Titus Tech's Windows Utility
This Utility is a compilation of windows tasks I perform on each Windows system I use. It is meant to streamline *installs*, debloat with *tweaks*, troubleshoot with *config*, and fix Windows *updates*. I am extremely picky on any contributions to keep this project clean and efficient.
This Utility is a compilation of Windows tasks I perform on each Windows system I use. It is meant to streamline *installs*, debloat with *tweaks*, troubleshoot with *config*, and fix Windows *updates*. I am extremely picky about any contributions to keep this project clean and efficient.
![screen-install](screen-install.png)
Requires you to launch PowerShell or Windows Terminal As ADMINISTRATOR!
## Usage:
The recommended way is to right click on the start menu and select (PowerShell As Admin *Windows 10* - Windows Terminal As Admin *Windows 11*)
Requires you to launch PowerShell or Windows Terminal As **ADMINISTRATOR!**
The recommended way is to right-click on the start menu and select (PowerShell As Admin *Windows 10* - Windows Terminal As Admin *Windows 11*)
Launch Command:
@ -21,6 +22,7 @@ If you are having TLS 1.2 Issues or You cannot find or resolve `christitus.com/w
```
[Net.ServicePointManager]::SecurityProtocol=[Net.SecurityProtocolType]::Tls12;iex(New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/ChrisTitusTech/winutil/main/winutil.ps1')
```
If you are still having issues try changing your DNS provider to 1.1.1.1 or 8.8.8.8
EXE Wrapper for $10 @ https://www.cttstore.com/windows-toolbox
@ -28,27 +30,60 @@ EXE Wrapper for $10 @ https://www.cttstore.com/windows-toolbox
## Overview
- Install
- Installs all selected programs
- Has Upgrade ALL existing programs button
- Install Selection: Organize programs by category and facilitate installation by enabling users to select programs and initiate the installation process with a single click.
- Upgrade All: Upgrade all existing programs to their latest versions, ensuring users have the most up-to-date and feature-rich software.
- Uninstall Selection: Effortlessly uninstall selected programs, providing users with a streamlined way to remove unwanted software from their system.
- Get Installed: Retrieve a comprehensive list of installed programs on the system, offering users visibility into the software currently installed on their computer.
- Import / Export: Enable users to import or export the selection list of programs, allowing them to save their preferred program configurations or share them with others. This feature promotes convenience and flexibility in managing program selections across different systems.
- Tweaks
- Optimizes windows and reduces running processes
- Has recommended settings for each type of system
- Recommended Selection: Provides pre-defined templates tailored for desktop, laptop, and minimal configurations, allowing users to select recommended settings and optimizations specific to their system type.
- Essential Tweaks: Offers a collection of essential tweaks aimed at improving system performance, privacy, and resource utilization. These tweaks include creating a system restore point, disabling telemetry, Wi-Fi Sense, setting services to manual, disabling location tracking, and HomeGroup, among others.
- Misc. Tweaks: Encompasses a range of various tweaks to further optimize the system. These tweaks include enabling/disabling power throttling, enabling num lock on startup, removing Cortana and Edge, disabling User Account Control (UAC), notification panel, and configuring TPM during updates, among others.
- Additional Tweaks: Introduces various other tweaks such as enabling dark mode, changing DNS settings, adding an Ultimate Performance mode, and creating shortcuts for WinUtil tools. These tweaks provide users with additional customization options to tailor their system to their preferences.
- Config
- Quick configurations for Windows Installs
- Has old legacy panels from Windows 7
- Reset Windows Update to factory settings
- System Corruption Scan
- Updates
- Fixes the default windows update scheme
- Features: Allows users to easily install various essential components and features to enhance their Windows experience. These features include installing .NET Frameworks, enabling Hyper-V virtualization, enabling legacy media support for Windows Media Player and DirectPlay, enabling NFS (Network File System) for network file sharing, and enabling Windows Subsystem for Linux (WSL) for running Linux applications on Windows.
- Fixes: Provides a range of helpful fixes to address common issues and improve system stability. This includes setting up autologon for seamless login experiences, resetting Windows updates to resolve update-related problems, performing a system corruption scan to detect and repair corrupted files, and resetting network settings to troubleshoot network connectivity issues.
- Legacy Windows Panels: Includes access to legacy Windows panels from Windows 7, allowing users to access familiar and powerful tools. These panels include Control Panel for managing system settings, Network Connections for configuring network adapters and connections, Power Panel for adjusting power and sleep settings, Sound Settings for managing audio devices and settings, System Properties for viewing and modifying system information, and User Accounts for managing user profiles and account settings.
- Updates:
- Default (Out of Box) Settings: Provides the default settings that come with Windows for updates.
- Security (Recommended) Settings: Offers recommended settings, including a slight delay of feature updates by 2 days and installation of security updates 4 days after release.
- Disable All Updates (Not Recommended!): Allows users to disable all Windows updates, but it's not recommended due to potential security risks.
Video and Written Article walkthrough @ <https://christitus.com/windows-tool/>
## Issues
If you have any issues with the script please submit them to Issues tab here on GitHub and fill out the template so I can fix any bugs or make feature requests.
If you encounter any challenges or problems with the script, I kindly request that you submit them via the "Issues" tab on the GitHub repository. By filling out the provided template, you can provide specific details about the issue, allowing me to promptly address any bugs or consider feature requests.
## Contribute Code
**Any new code must be submitted to TEST BRANCH! - No merges will be performed on MAIN branch**
To contribute a new code, please ensure that it is submitted to the **TEST BRANCH**. Please note that merges will not be performed directly on the MAIN branch.
For pull requests, be sure and document ALL changes. If you add something to the tweaks section the undo MUST also be applied to remove the new tweaks. Any tweak not following this format will be denied. Any code not well documented will be denied.
When creating pull requests, it is essential to thoroughly document all changes made. This includes documenting any additions made to the tweaks section and ensuring that corresponding undo measures are in place to remove the newly added tweaks if necessary. Failure to adhere to this format may result in denial of the pull request. Additionally, comprehensive documentation is required for all code changes. Any code lacking sufficient documentation may also be denied.
By following these guidelines, we can maintain a high standard of quality and ensure that the codebase remains organized and well-documented.
## Thanks to all Contributors
Thanks a lot for spending your time helping Winutil grow. Thanks a lot! Keep rocking 🍻.
[![Contributors](https://contrib.rocks/image?repo=ChrisTitusTech/winutil)](https://github.com/ChrisTitusTech/winutil/graphs/contributors)
## Support
- This project needs a ⭐️ from you. Don't forget to leave a star ⭐️.
- EXE Wrapper for $10 @ https://www.cttstore.com/windows-toolbox

View File

@ -91,6 +91,10 @@
"winget": "Git.Git;GitHub.GitHubDesktop",
"choco": "git;github-desktop"
},
"WPFInstalldockerdesktop": {
"winget": "Docker.DockerDesktop",
"choco": "docker-desktop"
},
"WPFInstallgog": {
"winget": "GOG.Galaxy",
"choco": "goggalaxy"
@ -115,6 +119,10 @@
"winget": "REALiX.HWiNFO",
"choco": "hwinfo"
},
"WPFInstallnomacs": {
"winget": "nomacs.nomacs",
"choco": "nomacs"
},
"WPFInstallimageglass": {
"winget": "DuongDieuPhap.ImageGlass",
"choco": "imageglass"
@ -348,11 +356,11 @@
"choco": "dotnet-6.0-runtime"
},
"WPFInstallvc2015_64": {
"winget": "Microsoft.VC++2015-2022Redist-x64",
"winget": "Microsoft.VCRedist.2015+.x64",
"choco": "na"
},
"WPFInstallvc2015_32": {
"winget": "Microsoft.VC++2015-2022Redist-x86",
"winget": "Microsoft.VCRedist.2015+.x86",
"choco": "na"
},
"WPFInstallfoxpdf": {
@ -460,16 +468,16 @@
"choco": "telegram"
},
"WPFInstallunity": {
"winget": "UnityTechnologies.UnityHub",
"winget": "Unity.UnityHub",
"choco": "unityhub"
},
"WPFInstallqbittorrent": {
"winget": "qBittorrent.qBittorrent",
"choco": "qbittorrent"
},
"WPFInstallorigin": {
"WPFInstalleaapp": {
"winget": "ElectronicArts.EADesktop",
"choco": "origin"
"choco": "ea-app"
},
"WPFInstallopenshell": {
"winget": "Open-Shell.Open-Shell-Menu",
@ -516,7 +524,7 @@
"choco": "nuget.commandline"
},
"WPFInstallwinrar": {
"winget": "RARLab.WinRar",
"winget": "RARLab.WinRAR",
"choco": "winrar"
},
"WPFInstallneovim": {
@ -530,5 +538,17 @@
"WPFInstallpostman": {
"winget": "Postman.Postman",
"choco": "postman"
},
"WPFInstallgsudo": {
"winget": "gerardog.gsudo",
"choco": "gsudo"
},
"WPFInstallwingetui": {
"winget": "SomePythonThings.WingetUIStore",
"choco": "na"
},
"WPFInstallprismlauncher": {
"winget": "PrismLauncher.PrismLauncher",
"choco": "na"
}
}

42
config/themes.json Normal file
View File

@ -0,0 +1,42 @@
{
"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"
}
}

View File

@ -1922,6 +1922,9 @@
],
"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": {
@ -2055,6 +2058,10 @@
"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": {
@ -2136,6 +2143,9 @@
}
}
"
],
"UndoScript": [
"winget install Microsoft.Edge"
]
},
"WPFMiscTweaksDisableNotifications": {
@ -2159,6 +2169,12 @@
"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": {
@ -2238,6 +2254,17 @@
}
]
},
"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
@ -2247,6 +2274,10 @@
"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": {

View File

@ -26,8 +26,12 @@ Function Invoke-WinUtilCurrentSystem {
$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.Key).winget -in $sync.InstalledPrograms.Id){
Write-Output $psitem.name
$dependencies = $($sync.configs.applications.$($psitem.Key).winget -split ";")
Foreach ($dependency in $dependencies) {
if($dependency -in $sync.InstalledPrograms.Id){
Write-Output $psitem.name
}
}
}
}

View File

@ -15,19 +15,16 @@ function Invoke-WinUtilTweaks {
Registry = "OriginalValue"
ScheduledTask = "OriginalState"
Service = "OriginalType"
ScriptType = "UndoScript"
}
}
Else{
$Values = @{
Registry = "Value"
ScheduledTask = "State"
Service = "StartupType"
}
}
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)
ScriptType = "InvokeScript"
}
}
if($sync.configs.tweaks.$CheckBox.ScheduledTask){
@ -40,6 +37,17 @@ function Invoke-WinUtilTweaks {
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){
@ -47,11 +55,6 @@ function Invoke-WinUtilTweaks {
Remove-WinUtilAPPX -Name $psitem
}
}
if($sync.configs.tweaks.$CheckBox.InvokeScript){
$sync.configs.tweaks.$CheckBox.InvokeScript | ForEach-Object {
$Scriptblock = [scriptblock]::Create($psitem)
Invoke-WinUtilScript -ScriptBlock $scriptblock -Name $CheckBox
}
}
}
}
}

View File

@ -0,0 +1,48 @@
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;
}

View File

@ -45,6 +45,7 @@ function Invoke-WPFButton {
"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"}

View File

@ -0,0 +1,11 @@
function Invoke-WPFFixesNetwork {
<#
.DESCRIPTION
PlaceHolder
#>
Write-Host "Reseting Network with netsh"
netsh int ip reset
netsh winsock reset
}

View File

@ -6,5 +6,5 @@ function Invoke-WPFPanelAutologin {
#>
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
cmd /c $env:temp\autologin.exe /accepteula
}

View File

@ -47,6 +47,16 @@ $sync.runspace.Open()
#endregion exception classes
$inputXML = $inputXML -replace 'mc:Ignorable="d"', '' -replace "x:N", 'N' -replace '^<Win.*', '<Window'
$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){
$ctttheme = 'Matrix'
}
else{
$ctttheme = 'Classic'
}
$inputXML = Set-WinUtilUITheme -inputXML $inputXML -themeName $ctttheme
[void][System.Reflection.Assembly]::LoadWithPartialName('presentationframework')
[xml]$XAML = $inputXML
#Read XAML

View File

@ -17,3 +17,10 @@ $sync.PSScriptRoot = $PSScriptRoot
$sync.version = "#{replaceme}"
$sync.configs = @{}
$sync.ProcessRunning = $false
if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
Write-Output "Winutil needs to be ran as Administrator. Attempting to relaunch."
Start-Process -Verb runas -FilePath powershell.exe -ArgumentList "iwr -useb https://christitus.com/win | iex"
break
}

View File

@ -10,7 +10,7 @@
Author : Chris Titus @christitustech
Runspace Author: @DeveloperDurp
GitHub : https://github.com/ChrisTitusTech
Version : 23.05.16
Version : 23.07.13
#>
Start-Transcript $ENV:TEMP\Winutil.log -Append
@ -21,9 +21,16 @@ Add-Type -AssemblyName System.Windows.Forms
# variable to sync between runspaces
$sync = [Hashtable]::Synchronized(@{})
$sync.PSScriptRoot = $PSScriptRoot
$sync.version = "23.05.16"
$sync.version = "23.07.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 ran as Administrator. Attempting to relaunch."
Start-Process -Verb runas -FilePath powershell.exe -ArgumentList "iwr -useb https://christitus.com/win | iex"
break
}
Function Get-WinUtilCheckBoxes {
<#
@ -360,8 +367,12 @@ Function Invoke-WinUtilCurrentSystem {
$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.Key).winget -in $sync.InstalledPrograms.Id){
Write-Output $psitem.name
$dependencies = $($sync.configs.applications.$($psitem.Key).winget -split ";")
Foreach ($dependency in $dependencies) {
if($dependency -in $sync.InstalledPrograms.Id){
Write-Output $psitem.name
}
}
}
}
@ -546,19 +557,16 @@ function Invoke-WinUtilTweaks {
Registry = "OriginalValue"
ScheduledTask = "OriginalState"
Service = "OriginalType"
ScriptType = "UndoScript"
}
}
Else{
$Values = @{
Registry = "Value"
ScheduledTask = "State"
Service = "StartupType"
}
}
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)
ScriptType = "InvokeScript"
}
}
if($sync.configs.tweaks.$CheckBox.ScheduledTask){
@ -571,6 +579,17 @@ function Invoke-WinUtilTweaks {
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){
@ -578,12 +597,7 @@ function Invoke-WinUtilTweaks {
Remove-WinUtilAPPX -Name $psitem
}
}
if($sync.configs.tweaks.$CheckBox.InvokeScript){
$sync.configs.tweaks.$CheckBox.InvokeScript | ForEach-Object {
$Scriptblock = [scriptblock]::Create($psitem)
Invoke-WinUtilScript -ScriptBlock $scriptblock -Name $CheckBox
}
}
}
}
function Remove-WinUtilAPPX {
@ -775,6 +789,54 @@ Function Set-WinUtilService {
Write-Warning $psitem.Exception.StackTrace
}
}
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 {
<#
@ -871,6 +933,7 @@ function Invoke-WPFButton {
"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"}
@ -966,6 +1029,17 @@ function Invoke-WPFFeatureInstall {
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
}
}
function Invoke-WPFFixesNetwork {
<#
.DESCRIPTION
PlaceHolder
#>
Write-Host "Reseting Network with netsh"
netsh int ip reset
netsh winsock reset
}
function Invoke-WPFFixesUpdate {
<#
@ -1287,7 +1361,7 @@ function Invoke-WPFPanelAutologin {
#>
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
cmd /c $env:temp\autologin.exe /accepteula
}
function Invoke-WPFPanelDISM {
<#
@ -1945,10 +2019,134 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WinUtility"
mc:Ignorable="d"
Background="#777777"
Background="{MainBackgroundColor}"
WindowStartupLocation="CenterScreen"
Title="Chris Titus Tech''s Windows Utility" Height="800" Width="1200">
<Window.Resources>
<Style TargetType="ComboBox">
<Setter Property="Foreground" Value="{ComboBoxForegroundColor}" />
<Setter Property="Background" Value="{ComboBoxBackgroundColor}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ComboBox">
<Grid>
<ToggleButton x:Name="ToggleButton"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding Background}"
BorderThickness="0"
IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
ClickMode="Press">
<TextBlock Text="{TemplateBinding SelectionBoxItem}"
Foreground="{TemplateBinding Foreground}"
Background="{TemplateBinding Background}"
/>
</ToggleButton>
<Popup x:Name="Popup"
IsOpen="{TemplateBinding IsDropDownOpen}"
Placement="Bottom"
Focusable="False"
AllowsTransparency="True"
PopupAnimation="Slide">
<Border x:Name="DropDownBorder"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding Foreground}"
BorderThickness="1"
CornerRadius="4">
<ScrollViewer>
<ItemsPresenter />
</ScrollViewer>
</Border>
</Popup>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="Label">
<Setter Property="Foreground" Value="{LabelboxForegroundColor}"/>
<Setter Property="Background" Value="{LabelBackgroundColor}"/>
</Style>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="{LabelboxForegroundColor}"/>
<Setter Property="Background" Value="{LabelBackgroundColor}"/>
</Style>
<Style TargetType="Button">
<Setter Property="Foreground" Value="{ButtonForegroundColor}"/>
<Setter Property="Background" Value="{ButtonBackgroundColor}"/>
<Setter Property="Margin" Value="{ButtonMargin}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid>
<Border x:Name="BackgroundBorder"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{ButtonBorderThickness}"
CornerRadius="{ButtonCornerRadius}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="BackgroundBorder" Property="Background" Value="{ButtonBackgroundPressedColor}"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="BackgroundBorder" Property="Background" Value="{ButtonBackgroundMouseoverColor}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="BackgroundBorder" Property="Background" Value="Gray"/>
<Setter Property="Foreground" Value="DimGray"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="CheckBox">
<Setter Property="Foreground" Value="{MainForegroundColor}"/>
<Setter Property="Background" Value="{MainBackgroundColor}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="CheckBox">
<Grid Background="{TemplateBinding Background}">
<BulletDecorator Background="Transparent">
<BulletDecorator.Bullet>
<Grid Width="16" Height="16">
<Border x:Name="Border"
BorderBrush="{TemplateBinding BorderBrush}"
Background="{ButtonBackgroundColor}"
BorderThickness="1"
Width="14"
Height="14"
Margin="1"
SnapsToDevicePixels="True"/>
<Path x:Name="CheckMark"
Stroke="{TemplateBinding Foreground}"
StrokeThickness="2"
Data="M 0 5 L 5 10 L 12 0"
Visibility="Collapsed"/>
</Grid>
</BulletDecorator.Bullet>
<ContentPresenter Margin="4,0,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
RecognizesAccessKey="True"/>
</BulletDecorator>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="CheckMark" Property="Visibility" Value="Visible"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<!--Setter TargetName="Border" Property="Background" Value="{ButtonBackgroundPressedColor}"/-->
<Setter Property="Foreground" Value="{ButtonBackgroundPressedColor}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="ToggleSwitchStyle" TargetType="CheckBox">
<Setter Property="Template">
<Setter.Value>
@ -2020,9 +2218,9 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
</Setter>
</Style>
</Window.Resources>
<Border Name="WPFdummy" Grid.Column="0" Grid.Row="0">
<Border Name="WPFdummy" Grid.Column="0" Grid.Row="1">
<Viewbox Stretch="Uniform" VerticalAlignment="Top">
<Grid Background="#777777" ShowGridLines="False" Name="WPFMainGrid">
<Grid Background="{MainBackgroundColor}" ShowGridLines="False" Name="WPFMainGrid">
<Grid.RowDefinitions>
<RowDefinition Height=".1*"/>
<RowDefinition Height=".9*"/>
@ -2030,12 +2228,16 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<DockPanel Background="#777777" SnapsToDevicePixels="True" Grid.Row="0" Width="1100">
<DockPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Row="0" Width="1100">
<Image Height="50" Width="100" Name="WPFIcon" SnapsToDevicePixels="True" Source="https://christitus.com/images/logo-full.png" Margin="0,10,0,10"/>
<Button Content="Install" HorizontalAlignment="Left" Height="40" Width="100" Background="#222222" BorderThickness="0,0,0,0" FontWeight="Bold" Foreground="#ffffff" Name="WPFTab1BT"/>
<Button Content="Tweaks" HorizontalAlignment="Left" Height="40" Width="100" Background="#333333" BorderThickness="0,0,0,0" FontWeight="Bold" Foreground="#ffffff" Name="WPFTab2BT"/>
<Button Content="Config" HorizontalAlignment="Left" Height="40" Width="100" Background="#444444" BorderThickness="0,0,0,0" FontWeight="Bold" Foreground="#ffffff" Name="WPFTab3BT"/>
<Button Content="Updates" HorizontalAlignment="Left" Height="40" Width="100" Background="#555555" BorderThickness="0,0,0,0" FontWeight="Bold" Foreground="#ffffff" Name="WPFTab4BT"/>
<Button Content="Install" HorizontalAlignment="Left" Height="40" Width="100"
Background="{ButtonInstallBackgroundColor}" Foreground="{ButtonInstallForegroundColor}" FontWeight="Bold" Name="WPFTab1BT"/>
<Button Content="Tweaks" HorizontalAlignment="Left" Height="40" Width="100"
Background="{ButtonTweaksBackgroundColor}" Foreground="{ButtonInstallForegroundColor}" FontWeight="Bold" Name="WPFTab2BT"/>
<Button Content="Config" HorizontalAlignment="Left" Height="40" Width="100"
Background="{ButtonConfigBackgroundColor}" Foreground="{ButtonInstallForegroundColor}" FontWeight="Bold" Name="WPFTab3BT"/>
<Button Content="Updates" HorizontalAlignment="Left" Height="40" Width="100"
Background="{ButtonUpdatesBackgroundColor}" Foreground="{ButtonInstallForegroundColor}" FontWeight="Bold" Name="WPFTab4BT"/>
</DockPanel>
<TabControl Grid.Row="1" Padding="-1" Name="WPFTabNav" Background="#222222">
<TabItem Header="Install" Visibility="Collapsed" Name="WPFTab1">
@ -2052,7 +2254,7 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
<RowDefinition Height=".90*"/>
</Grid.RowDefinitions>
<StackPanel Background="#777777" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Center" Grid.Column="0" Grid.ColumnSpan="3" Margin="10">
<StackPanel Background="{MainBackgroundColor}" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Center" Grid.Column="0" Grid.ColumnSpan="3" Margin="10">
<Label Content="Winget:" FontSize="17" VerticalAlignment="Center"/>
<Button Name="WPFinstall" Content=" Install Selection " Margin="7"/>
<Button Name="WPFInstallUpgrade" Content=" Upgrade All " Margin="7"/>
@ -2060,12 +2262,12 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
<Button Name="WPFGetInstalled" Content=" Get Installed " Margin="7"/>
<Button Name="WPFclearWinget" Content=" Clear Selection " Margin="7"/>
</StackPanel>
<StackPanel Background="#777777" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Center" Grid.Column="3" Grid.ColumnSpan="2" Margin="10">
<StackPanel Background="{MainBackgroundColor}" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Center" Grid.Column="3" Grid.ColumnSpan="2" Margin="10">
<Label Content="Configuration File:" FontSize="17" VerticalAlignment="Center"/>
<Button Name="WPFimportWinget" Content=" Import " Margin="7"/>
<Button Name="WPFexportWinget" Content=" Export " Margin="7"/>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="0" Margin="10">
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="0" Margin="10">
<Label Content="Browsers" FontSize="16" Margin="5,0"/>
<CheckBox Name="WPFInstallbrave" Content="Brave" Margin="5,0"/>
<CheckBox Name="WPFInstallchrome" Content="Chrome" Margin="5,0"/>
@ -2090,10 +2292,11 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
<CheckBox Name="WPFInstallviber" Content="Viber" Margin="5,0"/>
<CheckBox Name="WPFInstallzoom" Content="Zoom" Margin="5,0"/>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="1" Margin="10">
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="1" Margin="10">
<Label Content="Development" FontSize="16" Margin="5,0"/>
<CheckBox Name="WPFInstallgit" Content="Git" Margin="5,0"/>
<CheckBox Name="WPFInstallgithubdesktop" Content="GitHub Desktop" Margin="5,0"/>
<CheckBox Name="WPFInstalldockerdesktop" Content="Docker Desktop" Margin="5,0"/>
<CheckBox Name="WPFInstalljava8" Content="OpenJDK Java 8" Margin="5,0"/>
<CheckBox Name="WPFInstalljava16" Content="OpenJDK Java 16" Margin="5,0"/>
<CheckBox Name="WPFInstalljava18" Content="Oracle Java 18" Margin="5,0"/>
@ -2124,13 +2327,14 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
<CheckBox Name="WPFInstallwinmerge" Content="WinMerge" Margin="5,0"/>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="2" Margin="10">
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="2" Margin="10">
<Label Content="Games" FontSize="16" Margin="5,0"/>
<CheckBox Name="WPFInstallbluestacks" Content="Bluestacks" Margin="5,0"/>
<CheckBox Name="WPFInstallepicgames" Content="Epic Games Launcher" Margin="5,0"/>
<CheckBox Name="WPFInstallgog" Content="GOG Galaxy" Margin="5,0"/>
<CheckBox Name="WPFInstallorigin" Content="Origin" Margin="5,0"/>
<CheckBox Name="WPFInstalleaapp" Content="EA App" Margin="5,0"/>
<CheckBox Name="WPFInstallprismlauncher" Content="Prism Launcher" Margin="5,0"/>
<CheckBox Name="WPFInstallsteam" Content="Steam" Margin="5,0"/>
<CheckBox Name="WPFInstallubisoft" Content="Ubisoft Connect" Margin="5,0"/>
<CheckBox Name="WPFInstallgeforcenow" Content="GeForce NOW" Margin="5,0"/>
@ -2158,7 +2362,7 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
<CheckBox Name="WPFInstallterminal" Content="Windows Terminal" Margin="5,0"/>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="3" Margin="10">
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="3" Margin="10">
<Label Content="Multimedia Tools" FontSize="16" Margin="5,0"/>
<CheckBox Name="WPFInstallaudacity" Content="Audacity" Margin="5,0"/>
<CheckBox Name="WPFInstallblender" Content="Blender (3D Graphics)" Margin="5,0"/>
@ -2169,6 +2373,7 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
<CheckBox Name="WPFInstallgimp" Content="GIMP (Image Editor)" Margin="5,0"/>
<CheckBox Name="WPFInstallgreenshot" Content="Greenshot (Screenshots)" Margin="5,0"/>
<CheckBox Name="WPFInstallhandbrake" Content="HandBrake" Margin="5,0"/>
<CheckBox Name="WPFInstallnomacs" Content="Nomacs (Image viewer)" Margin="5,0"/>
<CheckBox Name="WPFInstallimageglass" Content="ImageGlass (Image Viewer)" Margin="5,0"/>
<CheckBox Name="WPFInstallinkscape" Content="Inkscape" Margin="5,0"/>
<CheckBox Name="WPFInstallitunes" Content="iTunes" Margin="5,0"/>
@ -2184,7 +2389,7 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
<CheckBox Name="WPFInstallvlc" Content="VLC (Video Player)" Margin="5,0"/>
<CheckBox Name="WPFInstallvoicemeeter" Content="Voicemeeter (Audio)" Margin="5,0"/>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="4" Margin="10">
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="4" Margin="10">
<Label Content="Utilities" FontSize="16" Margin="5,0"/>
<CheckBox Name="WPFInstallsevenzip" Content="7-Zip" Margin="5,0"/>
<CheckBox Name="WPFInstallalacritty" Content="Alacritty Terminal" Margin="5,0"/>
@ -2197,6 +2402,7 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
<CheckBox Name="WPFInstallesearch" Content="Everything Search" Margin="5,0"/>
<CheckBox Name="WPFInstallflux" Content="f.lux Redshift" Margin="5,0"/>
<CheckBox Name="WPFInstallgpuz" Content="GPU-Z" Margin="5,0"/>
<CheckBox Name="WPFInstallgsudo" Content="Gsudo" Margin="5,0"/>
<CheckBox Name="WPFInstallglaryutilities" Content="Glary Utilities" Margin="5,0"/>
<CheckBox Name="WPFInstallhwinfo" Content="HWInfo" Margin="5,0"/>
<CheckBox Name="WPFInstallidm" Content="Internet Download Manager" Margin="5,0"/>
@ -2216,6 +2422,7 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
<CheckBox Name="WPFInstalltreesize" Content="TreeSize Free" Margin="5,0"/>
<CheckBox Name="WPFInstalltwinkletray" Content="Twinkle Tray" Margin="5,0"/>
<CheckBox Name="WPFInstallwindirstat" Content="WinDirStat" Margin="5,0"/>
<CheckBox Name="WPFInstallwingetui" Content="WingetUI" Margin="5,0"/>
<CheckBox Name="WPFInstallwiztree" Content="WizTree" Margin="5,0"/>
<CheckBox Name="WPFInstallwinrar" Content="WinRAR" Margin="5,0"/>
@ -2233,7 +2440,7 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
<RowDefinition Height=".70*"/>
<RowDefinition Height=".10*"/>
</Grid.RowDefinitions>
<StackPanel Background="#777777" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Center" Grid.Column="0" Margin="10">
<StackPanel Background="{MainBackgroundColor}" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Center" Grid.Column="0" Margin="10">
<Label Content="Recommended Selections:" FontSize="17" VerticalAlignment="Center"/>
<Button Name="WPFdesktop" Content=" Desktop " Margin="7"/>
<Button Name="WPFlaptop" Content=" Laptop " Margin="7"/>
@ -2241,18 +2448,18 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
<Button Name="WPFclear" Content=" Clear " Margin="7"/>
<Button Name="WPFGetInstalledTweaks" Content=" Get Installed " Margin="7"/>
</StackPanel>
<StackPanel Background="#777777" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Center" Grid.Column="1" Margin="10">
<StackPanel Background="{MainBackgroundColor}" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Center" Grid.Column="1" Margin="10">
<Label Content="Configuration File:" FontSize="17" VerticalAlignment="Center"/>
<Button Name="WPFimport" Content=" Import " Margin="7"/>
<Button Name="WPFexport" Content=" Export " Margin="7"/>
</StackPanel>
<StackPanel Background="#777777" Orientation="Horizontal" Grid.Row="2" HorizontalAlignment="Center" Grid.ColumnSpan="2" Margin="10">
<StackPanel Background="{MainBackgroundColor}" Orientation="Horizontal" Grid.Row="2" HorizontalAlignment="Center" Grid.ColumnSpan="2" Margin="10">
<TextBlock Padding="10">
Note: Hover over items to get a better description. Please be careful as many of these tweaks will heavily modify your system.
<LineBreak/>Recommended selections are for normal users and if you are unsure do NOT check anything else!
</TextBlock>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="0" Margin="10,5">
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="0" Margin="10,5">
<Label FontSize="16" Content="Essential Tweaks"/>
<CheckBox Name="WPFEssTweaksRP" Content="Create Restore Point" Margin="5,0" ToolTip="Creates a Windows Restore point before modifying system. Can use Windows System Restore to rollback to before tweaks were applied"/>
<CheckBox Name="WPFEssTweaksOO" Content="Run OO Shutup" Margin="5,0" ToolTip="Runs OO Shutup from https://www.oo-software.com/en/shutup10"/>
@ -2274,13 +2481,13 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
<Label Content="On" />
</StackPanel>
<Label Content="Performance Plans" />
<Button Name="WPFAddUltPerf" Background="AliceBlue" Content="Add Ultimate Performance Profile" HorizontalAlignment = "Left" Margin="5,0" Padding="20,5" Width="300"/>
<Button Name="WPFRemoveUltPerf" Background="AliceBlue" Content="Remove Ultimate Performance Profile" HorizontalAlignment = "Left" Margin="5,0,0,5" Padding="20,5" Width="300"/>
<Button Name="WPFAddUltPerf" Content="Add Ultimate Performance Profile" HorizontalAlignment = "Left" Margin="5,2" Width="300"/>
<Button Name="WPFRemoveUltPerf" Content="Remove Ultimate Performance Profile" HorizontalAlignment = "Left" Margin="5,2" Width="300"/>
<Label Content="Shortcuts" />
<Button Name="WPFWinUtilShortcut" Background="AliceBlue" Content="Create WinUtil Shortcut" HorizontalAlignment = "Left" Margin="5,0" Padding="20,5" Width="300"/>
<Button Name="WPFWinUtilShortcut" Content="Create WinUtil Shortcut" HorizontalAlignment = "Left" Margin="5,0" Padding="20,5" Width="300"/>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="1" Margin="10,5">
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="1" Margin="10,5">
<Label FontSize="16" Content="Misc. Tweaks"/>
<CheckBox Name="WPFMiscTweaksPower" Content="Disable Power Throttling" Margin="5,0" ToolTip="This is mainly for Laptops, It disables Power Throttling and will use more battery."/>
<CheckBox Name="WPFMiscTweaksLapPower" Content="Enable Power Throttling" Margin="5,0" ToolTip="ONLY FOR LAPTOPS! Do not use on a desktop."/>
@ -2298,6 +2505,8 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
<CheckBox Name="WPFMiscTweaksRightClickMenu" Content="Set Classic Right-Click Menu " Margin="5,0" ToolTip="Great Windows 11 tweak to bring back good context menus when right clicking things in explorer."/>
<CheckBox Name="WPFMiscTweaksDisableMouseAcceleration" Content="Disable Mouse Acceleration" Margin="5,0" ToolTip="Disables Mouse Acceleration."/>
<CheckBox Name="WPFMiscTweaksEnableMouseAcceleration" Content="Enable Mouse Acceleration" Margin="5,0" ToolTip="Enables Mouse Acceleration."/>
<CheckBox Name="WPFMiscTweaksEnableVerboselogon" Content="Enable Verbose logon messages" Margin="5,0" ToolTip="Enables verbose logon messages."/>
<Label Content="DNS" />
<ComboBox Name="WPFchangedns" Height = "20" Width = "160" HorizontalAlignment = "Left" Margin="5,5">
<ComboBoxItem IsSelected="True" Content = "Default"/>
@ -2310,8 +2519,8 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
<ComboBoxItem Content = "Open_DNS"/>
<ComboBoxItem Content = "Quad9"/>
</ComboBox>
<Button Name="WPFtweaksbutton" Background="AliceBlue" Content="Run Tweaks " HorizontalAlignment = "Left" Margin="5,0" Padding="20,5" Width="160"/>
<Button Name="WPFundoall" Background="AliceBlue" Content="Undo Selected Tweaks" HorizontalAlignment = "Left" Margin="5,0" Padding="20,5" Width="160"/>
<Button Name="WPFtweaksbutton" Content="Run Tweaks" HorizontalAlignment = "Left" Width="160"/>
<Button Name="WPFundoall" Content="Undo Selected Tweaks" HorizontalAlignment = "Left" Width="160"/>
</StackPanel>
</Grid>
</TabItem>
@ -2321,27 +2530,28 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Column="0" Margin="10,5">
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Column="0" Margin="10,5">
<Label Content="Features" FontSize="16"/>
<CheckBox Name="WPFFeaturesdotnet" Content="All .Net Framework (2,3,4)" Margin="5,0"/>
<CheckBox Name="WPFFeatureshyperv" Content="HyperV Virtualization" Margin="5,0"/>
<CheckBox Name="WPFFeatureslegacymedia" Content="Legacy Media (WMP, DirectPlay)" Margin="5,0"/>
<CheckBox Name="WPFFeaturenfs" Content="NFS - Network File System" Margin="5,0"/>
<CheckBox Name="WPFFeaturewsl" Content="Windows Subsystem for Linux" Margin="5,0"/>
<Button Name="WPFFeatureInstall" FontSize="14" Background="AliceBlue" Content="Install Features" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="150"/>
<Button Name="WPFFeatureInstall" FontSize="14" Content="Install Features" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="150"/>
<Label Content="Fixes" FontSize="16"/>
<Button Name="WPFPanelAutologin" FontSize="14" Background="AliceBlue" Content="Set Up Autologin" HorizontalAlignment = "Left" Margin="5,2" Padding="20,5" Width="300"/>
<Button Name="WPFFixesUpdate" FontSize="14" Background="AliceBlue" Content="Reset Windows Update" HorizontalAlignment = "Left" Margin="5,2" Padding="20,5" Width="300"/>
<Button Name="WPFFixesNetwork" FontSize="14" Background="AliceBlue" Content="Reset Network" HorizontalAlignment = "Left" Margin="5,2" Padding="20,5" Width="300"/>
<Button Name="WPFPanelDISM" FontSize="14" Background="AliceBlue" Content="System Corruption Scan" HorizontalAlignment = "Left" Margin="5,2" Padding="20,5" Width="300"/>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Column="1" Margin="10,5">
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Column="1" Margin="10,5">
<Label Content="Legacy Windows Panels" FontSize="16"/>
<Button Name="WPFPanelcontrol" FontSize="14" Background="AliceBlue" Content="Control Panel" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="WPFPanelnetwork" FontSize="14" Background="AliceBlue" Content="Network Connections" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="WPFPanelpower" FontSize="14" Background="AliceBlue" Content="Power Panel" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="WPFPanelsound" FontSize="14" Background="AliceBlue" Content="Sound Settings" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="WPFPanelsystem" FontSize="14" Background="AliceBlue" Content="System Properties" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="WPFPaneluser" FontSize="14" Background="AliceBlue" Content="User Accounts" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="WPFPanelcontrol" FontSize="14" Content="Control Panel" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="WPFPanelnetwork" FontSize="14" Content="Network Connections" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="WPFPanelpower" FontSize="14" Content="Power Panel" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="WPFPanelsound" FontSize="14" Content="Sound Settings" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="WPFPanelsystem" FontSize="14" Content="System Properties" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="WPFPaneluser" FontSize="14" Content="User Accounts" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
</StackPanel>
</Grid>
</TabItem>
@ -2352,16 +2562,16 @@ $inputXML = '<Window x:Class="WinUtility.MainWindow"
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Column="0" Margin="10,5">
<Button Name="WPFUpdatesdefault" FontSize="16" Background="AliceBlue" Content="Default (Out of Box) Settings" Margin="20,0,20,10" Padding="10"/>
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Column="0" Margin="10,5">
<Button Name="WPFUpdatesdefault" FontSize="16" Content="Default (Out of Box) Settings" Margin="20,4,20,10" Padding="10"/>
<TextBlock Margin="20,0,20,0" Padding="10" TextWrapping="WrapWithOverflow" MaxWidth="300">This is the default settings that come with Windows. <LineBreak/><LineBreak/> No modifications are made and will remove any custom windows update settings.<LineBreak/><LineBreak/>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.</TextBlock>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Column="1" Margin="10,5">
<Button Name="WPFUpdatessecurity" FontSize="16" Background="AliceBlue" Content="Security (Recommended) Settings" Margin="20,0,20,10" Padding="10"/>
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Column="1" Margin="10,5">
<Button Name="WPFUpdatessecurity" FontSize="16" Content="Security (Recommended) Settings" Margin="20,4,20,10" Padding="10"/>
<TextBlock Margin="20,0,20,0" Padding="10" TextWrapping="WrapWithOverflow" MaxWidth="300">This is my recommended setting I use on all computers.<LineBreak/><LineBreak/> It will delay feature updates by 2 years and will install security updates 4 days after release.<LineBreak/><LineBreak/>Feature Updates: Adds features and often bugs to systems when they are released. You want to delay these as long as possible.<LineBreak/><LineBreak/>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.</TextBlock>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Column="2" Margin="10,5">
<Button Name="WPFUpdatesdisable" FontSize="16" Background="AliceBlue" Content="Disable ALL Updates (NOT RECOMMENDED!)" Margin="20,0,20,10" Padding="10,10,10,10"/>
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Column="2" Margin="10,5">
<Button Name="WPFUpdatesdisable" FontSize="16" Content="Disable ALL Updates (NOT RECOMMENDED!)" Margin="20,4,20,10" Padding="10,10,10,10"/>
<TextBlock Margin="20,0,20,0" Padding="10" TextWrapping="WrapWithOverflow" MaxWidth="300">This completely disables ALL Windows Updates and is NOT RECOMMENDED.<LineBreak/><LineBreak/> However, it can be suitable if you use your system for a select purpose and do not actively browse the internet. <LineBreak/><LineBreak/>Note: Your system will be easier to hack and infect without security updates.</TextBlock>
<TextBlock Text=" " Margin="20,0,20,0" Padding="10" TextWrapping="WrapWithOverflow" MaxWidth="300"/>
@ -2467,6 +2677,10 @@ $sync.configs.applications = '{
"winget": "Git.Git;GitHub.GitHubDesktop",
"choco": "git;github-desktop"
},
"WPFInstalldockerdesktop": {
"winget": "Docker.DockerDesktop",
"choco": "docker-desktop"
},
"WPFInstallgog": {
"winget": "GOG.Galaxy",
"choco": "goggalaxy"
@ -2491,6 +2705,10 @@ $sync.configs.applications = '{
"winget": "REALiX.HWiNFO",
"choco": "hwinfo"
},
"WPFInstallnomacs": {
"winget": "nomacs.nomacs",
"choco": "nomacs"
},
"WPFInstallimageglass": {
"winget": "DuongDieuPhap.ImageGlass",
"choco": "imageglass"
@ -2724,11 +2942,11 @@ $sync.configs.applications = '{
"choco": "dotnet-6.0-runtime"
},
"WPFInstallvc2015_64": {
"winget": "Microsoft.VC++2015-2022Redist-x64",
"winget": "Microsoft.VCRedist.2015+.x64",
"choco": "na"
},
"WPFInstallvc2015_32": {
"winget": "Microsoft.VC++2015-2022Redist-x86",
"winget": "Microsoft.VCRedist.2015+.x86",
"choco": "na"
},
"WPFInstallfoxpdf": {
@ -2836,16 +3054,16 @@ $sync.configs.applications = '{
"choco": "telegram"
},
"WPFInstallunity": {
"winget": "UnityTechnologies.UnityHub",
"winget": "Unity.UnityHub",
"choco": "unityhub"
},
"WPFInstallqbittorrent": {
"winget": "qBittorrent.qBittorrent",
"choco": "qbittorrent"
},
"WPFInstallorigin": {
"WPFInstalleaapp": {
"winget": "ElectronicArts.EADesktop",
"choco": "origin"
"choco": "ea-app"
},
"WPFInstallopenshell": {
"winget": "Open-Shell.Open-Shell-Menu",
@ -2892,7 +3110,7 @@ $sync.configs.applications = '{
"choco": "nuget.commandline"
},
"WPFInstallwinrar": {
"winget": "RARLab.WinRar",
"winget": "RARLab.WinRAR",
"choco": "winrar"
},
"WPFInstallneovim": {
@ -2906,6 +3124,18 @@ $sync.configs.applications = '{
"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 = '{
@ -3037,6 +3267,48 @@ $sync.configs.preset = '{
"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": [
@ -4961,6 +5233,9 @@ $sync.configs.tweaks = '{
],
"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": {
@ -5094,6 +5369,10 @@ $sync.configs.tweaks = '{
"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": {
@ -5175,6 +5454,9 @@ $sync.configs.tweaks = '{
}
}
"
],
"UndoScript": [
"winget install Microsoft.Edge"
]
},
"WPFMiscTweaksDisableNotifications": {
@ -5198,6 +5480,12 @@ $sync.configs.tweaks = '{
"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": {
@ -5277,6 +5565,17 @@ $sync.configs.tweaks = '{
}
]
},
"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
@ -5286,6 +5585,10 @@ $sync.configs.tweaks = '{
"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": {
@ -5399,6 +5702,16 @@ $sync.runspace.Open()
#endregion exception classes
$inputXML = $inputXML -replace 'mc:Ignorable="d"', '' -replace "x:N", 'N' -replace '^<Win.*', '<Window'
$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){
$ctttheme = 'Matrix'
}
else{
$ctttheme = 'Classic'
}
$inputXML = Set-WinUtilUITheme -inputXML $inputXML -themeName $ctttheme
[void][System.Reflection.Assembly]::LoadWithPartialName('presentationframework')
[xml]$XAML = $inputXML
#Read XAML

View File

@ -5,10 +5,134 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WinUtility"
mc:Ignorable="d"
Background="#777777"
Background="{MainBackgroundColor}"
WindowStartupLocation="CenterScreen"
Title="Chris Titus Tech's Windows Utility" Height="800" Width="1200">
<Window.Resources>
<Style TargetType="ComboBox">
<Setter Property="Foreground" Value="{ComboBoxForegroundColor}" />
<Setter Property="Background" Value="{ComboBoxBackgroundColor}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ComboBox">
<Grid>
<ToggleButton x:Name="ToggleButton"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding Background}"
BorderThickness="0"
IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"
ClickMode="Press">
<TextBlock Text="{TemplateBinding SelectionBoxItem}"
Foreground="{TemplateBinding Foreground}"
Background="{TemplateBinding Background}"
/>
</ToggleButton>
<Popup x:Name="Popup"
IsOpen="{TemplateBinding IsDropDownOpen}"
Placement="Bottom"
Focusable="False"
AllowsTransparency="True"
PopupAnimation="Slide">
<Border x:Name="DropDownBorder"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding Foreground}"
BorderThickness="1"
CornerRadius="4">
<ScrollViewer>
<ItemsPresenter />
</ScrollViewer>
</Border>
</Popup>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="Label">
<Setter Property="Foreground" Value="{LabelboxForegroundColor}"/>
<Setter Property="Background" Value="{LabelBackgroundColor}"/>
</Style>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="{LabelboxForegroundColor}"/>
<Setter Property="Background" Value="{LabelBackgroundColor}"/>
</Style>
<Style TargetType="Button">
<Setter Property="Foreground" Value="{ButtonForegroundColor}"/>
<Setter Property="Background" Value="{ButtonBackgroundColor}"/>
<Setter Property="Margin" Value="{ButtonMargin}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid>
<Border x:Name="BackgroundBorder"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{ButtonBorderThickness}"
CornerRadius="{ButtonCornerRadius}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="BackgroundBorder" Property="Background" Value="{ButtonBackgroundPressedColor}"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="BackgroundBorder" Property="Background" Value="{ButtonBackgroundMouseoverColor}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="BackgroundBorder" Property="Background" Value="Gray"/>
<Setter Property="Foreground" Value="DimGray"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="CheckBox">
<Setter Property="Foreground" Value="{MainForegroundColor}"/>
<Setter Property="Background" Value="{MainBackgroundColor}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="CheckBox">
<Grid Background="{TemplateBinding Background}">
<BulletDecorator Background="Transparent">
<BulletDecorator.Bullet>
<Grid Width="16" Height="16">
<Border x:Name="Border"
BorderBrush="{TemplateBinding BorderBrush}"
Background="{ButtonBackgroundColor}"
BorderThickness="1"
Width="14"
Height="14"
Margin="1"
SnapsToDevicePixels="True"/>
<Path x:Name="CheckMark"
Stroke="{TemplateBinding Foreground}"
StrokeThickness="2"
Data="M 0 5 L 5 10 L 12 0"
Visibility="Collapsed"/>
</Grid>
</BulletDecorator.Bullet>
<ContentPresenter Margin="4,0,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
RecognizesAccessKey="True"/>
</BulletDecorator>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="CheckMark" Property="Visibility" Value="Visible"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<!--Setter TargetName="Border" Property="Background" Value="{ButtonBackgroundPressedColor}"/-->
<Setter Property="Foreground" Value="{ButtonBackgroundPressedColor}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="ToggleSwitchStyle" TargetType="CheckBox">
<Setter Property="Template">
<Setter.Value>
@ -80,9 +204,9 @@
</Setter>
</Style>
</Window.Resources>
<Border Name="WPFdummy" Grid.Column="0" Grid.Row="0">
<Border Name="WPFdummy" Grid.Column="0" Grid.Row="1">
<Viewbox Stretch="Uniform" VerticalAlignment="Top">
<Grid Background="#777777" ShowGridLines="False" Name="WPFMainGrid">
<Grid Background="{MainBackgroundColor}" ShowGridLines="False" Name="WPFMainGrid">
<Grid.RowDefinitions>
<RowDefinition Height=".1*"/>
<RowDefinition Height=".9*"/>
@ -90,12 +214,16 @@
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<DockPanel Background="#777777" SnapsToDevicePixels="True" Grid.Row="0" Width="1100">
<DockPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Row="0" Width="1100">
<Image Height="50" Width="100" Name="WPFIcon" SnapsToDevicePixels="True" Source="https://christitus.com/images/logo-full.png" Margin="0,10,0,10"/>
<Button Content="Install" HorizontalAlignment="Left" Height="40" Width="100" Background="#222222" BorderThickness="0,0,0,0" FontWeight="Bold" Foreground="#ffffff" Name="WPFTab1BT"/>
<Button Content="Tweaks" HorizontalAlignment="Left" Height="40" Width="100" Background="#333333" BorderThickness="0,0,0,0" FontWeight="Bold" Foreground="#ffffff" Name="WPFTab2BT"/>
<Button Content="Config" HorizontalAlignment="Left" Height="40" Width="100" Background="#444444" BorderThickness="0,0,0,0" FontWeight="Bold" Foreground="#ffffff" Name="WPFTab3BT"/>
<Button Content="Updates" HorizontalAlignment="Left" Height="40" Width="100" Background="#555555" BorderThickness="0,0,0,0" FontWeight="Bold" Foreground="#ffffff" Name="WPFTab4BT"/>
<Button Content="Install" HorizontalAlignment="Left" Height="40" Width="100"
Background="{ButtonInstallBackgroundColor}" Foreground="{ButtonInstallForegroundColor}" FontWeight="Bold" Name="WPFTab1BT"/>
<Button Content="Tweaks" HorizontalAlignment="Left" Height="40" Width="100"
Background="{ButtonTweaksBackgroundColor}" Foreground="{ButtonInstallForegroundColor}" FontWeight="Bold" Name="WPFTab2BT"/>
<Button Content="Config" HorizontalAlignment="Left" Height="40" Width="100"
Background="{ButtonConfigBackgroundColor}" Foreground="{ButtonInstallForegroundColor}" FontWeight="Bold" Name="WPFTab3BT"/>
<Button Content="Updates" HorizontalAlignment="Left" Height="40" Width="100"
Background="{ButtonUpdatesBackgroundColor}" Foreground="{ButtonInstallForegroundColor}" FontWeight="Bold" Name="WPFTab4BT"/>
</DockPanel>
<TabControl Grid.Row="1" Padding="-1" Name="WPFTabNav" Background="#222222">
<TabItem Header="Install" Visibility="Collapsed" Name="WPFTab1">
@ -112,7 +240,7 @@
<RowDefinition Height=".90*"/>
</Grid.RowDefinitions>
<StackPanel Background="#777777" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Center" Grid.Column="0" Grid.ColumnSpan="3" Margin="10">
<StackPanel Background="{MainBackgroundColor}" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Center" Grid.Column="0" Grid.ColumnSpan="3" Margin="10">
<Label Content="Winget:" FontSize="17" VerticalAlignment="Center"/>
<Button Name="WPFinstall" Content=" Install Selection " Margin="7"/>
<Button Name="WPFInstallUpgrade" Content=" Upgrade All " Margin="7"/>
@ -120,12 +248,12 @@
<Button Name="WPFGetInstalled" Content=" Get Installed " Margin="7"/>
<Button Name="WPFclearWinget" Content=" Clear Selection " Margin="7"/>
</StackPanel>
<StackPanel Background="#777777" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Center" Grid.Column="3" Grid.ColumnSpan="2" Margin="10">
<StackPanel Background="{MainBackgroundColor}" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Center" Grid.Column="3" Grid.ColumnSpan="2" Margin="10">
<Label Content="Configuration File:" FontSize="17" VerticalAlignment="Center"/>
<Button Name="WPFimportWinget" Content=" Import " Margin="7"/>
<Button Name="WPFexportWinget" Content=" Export " Margin="7"/>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="0" Margin="10">
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="0" Margin="10">
<Label Content="Browsers" FontSize="16" Margin="5,0"/>
<CheckBox Name="WPFInstallbrave" Content="Brave" Margin="5,0"/>
<CheckBox Name="WPFInstallchrome" Content="Chrome" Margin="5,0"/>
@ -150,10 +278,11 @@
<CheckBox Name="WPFInstallviber" Content="Viber" Margin="5,0"/>
<CheckBox Name="WPFInstallzoom" Content="Zoom" Margin="5,0"/>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="1" Margin="10">
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="1" Margin="10">
<Label Content="Development" FontSize="16" Margin="5,0"/>
<CheckBox Name="WPFInstallgit" Content="Git" Margin="5,0"/>
<CheckBox Name="WPFInstallgithubdesktop" Content="GitHub Desktop" Margin="5,0"/>
<CheckBox Name="WPFInstalldockerdesktop" Content="Docker Desktop" Margin="5,0"/>
<CheckBox Name="WPFInstalljava8" Content="OpenJDK Java 8" Margin="5,0"/>
<CheckBox Name="WPFInstalljava16" Content="OpenJDK Java 16" Margin="5,0"/>
<CheckBox Name="WPFInstalljava18" Content="Oracle Java 18" Margin="5,0"/>
@ -184,13 +313,14 @@
<CheckBox Name="WPFInstallwinmerge" Content="WinMerge" Margin="5,0"/>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="2" Margin="10">
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="2" Margin="10">
<Label Content="Games" FontSize="16" Margin="5,0"/>
<CheckBox Name="WPFInstallbluestacks" Content="Bluestacks" Margin="5,0"/>
<CheckBox Name="WPFInstallepicgames" Content="Epic Games Launcher" Margin="5,0"/>
<CheckBox Name="WPFInstallgog" Content="GOG Galaxy" Margin="5,0"/>
<CheckBox Name="WPFInstallorigin" Content="Origin" Margin="5,0"/>
<CheckBox Name="WPFInstalleaapp" Content="EA App" Margin="5,0"/>
<CheckBox Name="WPFInstallprismlauncher" Content="Prism Launcher" Margin="5,0"/>
<CheckBox Name="WPFInstallsteam" Content="Steam" Margin="5,0"/>
<CheckBox Name="WPFInstallubisoft" Content="Ubisoft Connect" Margin="5,0"/>
<CheckBox Name="WPFInstallgeforcenow" Content="GeForce NOW" Margin="5,0"/>
@ -218,7 +348,7 @@
<CheckBox Name="WPFInstallterminal" Content="Windows Terminal" Margin="5,0"/>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="3" Margin="10">
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="3" Margin="10">
<Label Content="Multimedia Tools" FontSize="16" Margin="5,0"/>
<CheckBox Name="WPFInstallaudacity" Content="Audacity" Margin="5,0"/>
<CheckBox Name="WPFInstallblender" Content="Blender (3D Graphics)" Margin="5,0"/>
@ -229,6 +359,7 @@
<CheckBox Name="WPFInstallgimp" Content="GIMP (Image Editor)" Margin="5,0"/>
<CheckBox Name="WPFInstallgreenshot" Content="Greenshot (Screenshots)" Margin="5,0"/>
<CheckBox Name="WPFInstallhandbrake" Content="HandBrake" Margin="5,0"/>
<CheckBox Name="WPFInstallnomacs" Content="Nomacs (Image viewer)" Margin="5,0"/>
<CheckBox Name="WPFInstallimageglass" Content="ImageGlass (Image Viewer)" Margin="5,0"/>
<CheckBox Name="WPFInstallinkscape" Content="Inkscape" Margin="5,0"/>
<CheckBox Name="WPFInstallitunes" Content="iTunes" Margin="5,0"/>
@ -244,7 +375,7 @@
<CheckBox Name="WPFInstallvlc" Content="VLC (Video Player)" Margin="5,0"/>
<CheckBox Name="WPFInstallvoicemeeter" Content="Voicemeeter (Audio)" Margin="5,0"/>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="4" Margin="10">
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="4" Margin="10">
<Label Content="Utilities" FontSize="16" Margin="5,0"/>
<CheckBox Name="WPFInstallsevenzip" Content="7-Zip" Margin="5,0"/>
<CheckBox Name="WPFInstallalacritty" Content="Alacritty Terminal" Margin="5,0"/>
@ -257,6 +388,7 @@
<CheckBox Name="WPFInstallesearch" Content="Everything Search" Margin="5,0"/>
<CheckBox Name="WPFInstallflux" Content="f.lux Redshift" Margin="5,0"/>
<CheckBox Name="WPFInstallgpuz" Content="GPU-Z" Margin="5,0"/>
<CheckBox Name="WPFInstallgsudo" Content="Gsudo" Margin="5,0"/>
<CheckBox Name="WPFInstallglaryutilities" Content="Glary Utilities" Margin="5,0"/>
<CheckBox Name="WPFInstallhwinfo" Content="HWInfo" Margin="5,0"/>
<CheckBox Name="WPFInstallidm" Content="Internet Download Manager" Margin="5,0"/>
@ -276,6 +408,7 @@
<CheckBox Name="WPFInstalltreesize" Content="TreeSize Free" Margin="5,0"/>
<CheckBox Name="WPFInstalltwinkletray" Content="Twinkle Tray" Margin="5,0"/>
<CheckBox Name="WPFInstallwindirstat" Content="WinDirStat" Margin="5,0"/>
<CheckBox Name="WPFInstallwingetui" Content="WingetUI" Margin="5,0"/>
<CheckBox Name="WPFInstallwiztree" Content="WizTree" Margin="5,0"/>
<CheckBox Name="WPFInstallwinrar" Content="WinRAR" Margin="5,0"/>
@ -293,7 +426,7 @@
<RowDefinition Height=".70*"/>
<RowDefinition Height=".10*"/>
</Grid.RowDefinitions>
<StackPanel Background="#777777" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Center" Grid.Column="0" Margin="10">
<StackPanel Background="{MainBackgroundColor}" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Center" Grid.Column="0" Margin="10">
<Label Content="Recommended Selections:" FontSize="17" VerticalAlignment="Center"/>
<Button Name="WPFdesktop" Content=" Desktop " Margin="7"/>
<Button Name="WPFlaptop" Content=" Laptop " Margin="7"/>
@ -301,18 +434,18 @@
<Button Name="WPFclear" Content=" Clear " Margin="7"/>
<Button Name="WPFGetInstalledTweaks" Content=" Get Installed " Margin="7"/>
</StackPanel>
<StackPanel Background="#777777" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Center" Grid.Column="1" Margin="10">
<StackPanel Background="{MainBackgroundColor}" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Center" Grid.Column="1" Margin="10">
<Label Content="Configuration File:" FontSize="17" VerticalAlignment="Center"/>
<Button Name="WPFimport" Content=" Import " Margin="7"/>
<Button Name="WPFexport" Content=" Export " Margin="7"/>
</StackPanel>
<StackPanel Background="#777777" Orientation="Horizontal" Grid.Row="2" HorizontalAlignment="Center" Grid.ColumnSpan="2" Margin="10">
<StackPanel Background="{MainBackgroundColor}" Orientation="Horizontal" Grid.Row="2" HorizontalAlignment="Center" Grid.ColumnSpan="2" Margin="10">
<TextBlock Padding="10">
Note: Hover over items to get a better description. Please be careful as many of these tweaks will heavily modify your system.
<LineBreak/>Recommended selections are for normal users and if you are unsure do NOT check anything else!
</TextBlock>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="0" Margin="10,5">
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="0" Margin="10,5">
<Label FontSize="16" Content="Essential Tweaks"/>
<CheckBox Name="WPFEssTweaksRP" Content="Create Restore Point" Margin="5,0" ToolTip="Creates a Windows Restore point before modifying system. Can use Windows System Restore to rollback to before tweaks were applied"/>
<CheckBox Name="WPFEssTweaksOO" Content="Run OO Shutup" Margin="5,0" ToolTip="Runs OO Shutup from https://www.oo-software.com/en/shutup10"/>
@ -334,13 +467,13 @@
<Label Content="On" />
</StackPanel>
<Label Content="Performance Plans" />
<Button Name="WPFAddUltPerf" Background="AliceBlue" Content="Add Ultimate Performance Profile" HorizontalAlignment = "Left" Margin="5,0" Padding="20,5" Width="300"/>
<Button Name="WPFRemoveUltPerf" Background="AliceBlue" Content="Remove Ultimate Performance Profile" HorizontalAlignment = "Left" Margin="5,0,0,5" Padding="20,5" Width="300"/>
<Button Name="WPFAddUltPerf" Content="Add Ultimate Performance Profile" HorizontalAlignment = "Left" Margin="5,2" Width="300"/>
<Button Name="WPFRemoveUltPerf" Content="Remove Ultimate Performance Profile" HorizontalAlignment = "Left" Margin="5,2" Width="300"/>
<Label Content="Shortcuts" />
<Button Name="WPFWinUtilShortcut" Background="AliceBlue" Content="Create WinUtil Shortcut" HorizontalAlignment = "Left" Margin="5,0" Padding="20,5" Width="300"/>
<Button Name="WPFWinUtilShortcut" Content="Create WinUtil Shortcut" HorizontalAlignment = "Left" Margin="5,0" Padding="20,5" Width="300"/>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="1" Margin="10,5">
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Row="1" Grid.Column="1" Margin="10,5">
<Label FontSize="16" Content="Misc. Tweaks"/>
<CheckBox Name="WPFMiscTweaksPower" Content="Disable Power Throttling" Margin="5,0" ToolTip="This is mainly for Laptops, It disables Power Throttling and will use more battery."/>
<CheckBox Name="WPFMiscTweaksLapPower" Content="Enable Power Throttling" Margin="5,0" ToolTip="ONLY FOR LAPTOPS! Do not use on a desktop."/>
@ -358,6 +491,8 @@
<CheckBox Name="WPFMiscTweaksRightClickMenu" Content="Set Classic Right-Click Menu " Margin="5,0" ToolTip="Great Windows 11 tweak to bring back good context menus when right clicking things in explorer."/>
<CheckBox Name="WPFMiscTweaksDisableMouseAcceleration" Content="Disable Mouse Acceleration" Margin="5,0" ToolTip="Disables Mouse Acceleration."/>
<CheckBox Name="WPFMiscTweaksEnableMouseAcceleration" Content="Enable Mouse Acceleration" Margin="5,0" ToolTip="Enables Mouse Acceleration."/>
<CheckBox Name="WPFMiscTweaksEnableVerboselogon" Content="Enable Verbose logon messages" Margin="5,0" ToolTip="Enables verbose logon messages."/>
<Label Content="DNS" />
<ComboBox Name="WPFchangedns" Height = "20" Width = "160" HorizontalAlignment = "Left" Margin="5,5">
<ComboBoxItem IsSelected="True" Content = "Default"/>
@ -370,8 +505,8 @@
<ComboBoxItem Content = "Open_DNS"/>
<ComboBoxItem Content = "Quad9"/>
</ComboBox>
<Button Name="WPFtweaksbutton" Background="AliceBlue" Content="Run Tweaks " HorizontalAlignment = "Left" Margin="5,0" Padding="20,5" Width="160"/>
<Button Name="WPFundoall" Background="AliceBlue" Content="Undo Selected Tweaks" HorizontalAlignment = "Left" Margin="5,0" Padding="20,5" Width="160"/>
<Button Name="WPFtweaksbutton" Content="Run Tweaks" HorizontalAlignment = "Left" Width="160"/>
<Button Name="WPFundoall" Content="Undo Selected Tweaks" HorizontalAlignment = "Left" Width="160"/>
</StackPanel>
</Grid>
</TabItem>
@ -381,27 +516,28 @@
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Column="0" Margin="10,5">
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Column="0" Margin="10,5">
<Label Content="Features" FontSize="16"/>
<CheckBox Name="WPFFeaturesdotnet" Content="All .Net Framework (2,3,4)" Margin="5,0"/>
<CheckBox Name="WPFFeatureshyperv" Content="HyperV Virtualization" Margin="5,0"/>
<CheckBox Name="WPFFeatureslegacymedia" Content="Legacy Media (WMP, DirectPlay)" Margin="5,0"/>
<CheckBox Name="WPFFeaturenfs" Content="NFS - Network File System" Margin="5,0"/>
<CheckBox Name="WPFFeaturewsl" Content="Windows Subsystem for Linux" Margin="5,0"/>
<Button Name="WPFFeatureInstall" FontSize="14" Background="AliceBlue" Content="Install Features" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="150"/>
<Button Name="WPFFeatureInstall" FontSize="14" Content="Install Features" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="150"/>
<Label Content="Fixes" FontSize="16"/>
<Button Name="WPFPanelAutologin" FontSize="14" Background="AliceBlue" Content="Set Up Autologin" HorizontalAlignment = "Left" Margin="5,2" Padding="20,5" Width="300"/>
<Button Name="WPFFixesUpdate" FontSize="14" Background="AliceBlue" Content="Reset Windows Update" HorizontalAlignment = "Left" Margin="5,2" Padding="20,5" Width="300"/>
<Button Name="WPFFixesNetwork" FontSize="14" Background="AliceBlue" Content="Reset Network" HorizontalAlignment = "Left" Margin="5,2" Padding="20,5" Width="300"/>
<Button Name="WPFPanelDISM" FontSize="14" Background="AliceBlue" Content="System Corruption Scan" HorizontalAlignment = "Left" Margin="5,2" Padding="20,5" Width="300"/>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Column="1" Margin="10,5">
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Column="1" Margin="10,5">
<Label Content="Legacy Windows Panels" FontSize="16"/>
<Button Name="WPFPanelcontrol" FontSize="14" Background="AliceBlue" Content="Control Panel" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="WPFPanelnetwork" FontSize="14" Background="AliceBlue" Content="Network Connections" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="WPFPanelpower" FontSize="14" Background="AliceBlue" Content="Power Panel" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="WPFPanelsound" FontSize="14" Background="AliceBlue" Content="Sound Settings" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="WPFPanelsystem" FontSize="14" Background="AliceBlue" Content="System Properties" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="WPFPaneluser" FontSize="14" Background="AliceBlue" Content="User Accounts" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="WPFPanelcontrol" FontSize="14" Content="Control Panel" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="WPFPanelnetwork" FontSize="14" Content="Network Connections" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="WPFPanelpower" FontSize="14" Content="Power Panel" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="WPFPanelsound" FontSize="14" Content="Sound Settings" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="WPFPanelsystem" FontSize="14" Content="System Properties" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
<Button Name="WPFPaneluser" FontSize="14" Content="User Accounts" HorizontalAlignment = "Left" Margin="5" Padding="20,5" Width="200"/>
</StackPanel>
</Grid>
</TabItem>
@ -412,16 +548,16 @@
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Column="0" Margin="10,5">
<Button Name="WPFUpdatesdefault" FontSize="16" Background="AliceBlue" Content="Default (Out of Box) Settings" Margin="20,0,20,10" Padding="10"/>
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Column="0" Margin="10,5">
<Button Name="WPFUpdatesdefault" FontSize="16" Content="Default (Out of Box) Settings" Margin="20,4,20,10" Padding="10"/>
<TextBlock Margin="20,0,20,0" Padding="10" TextWrapping="WrapWithOverflow" MaxWidth="300">This is the default settings that come with Windows. <LineBreak/><LineBreak/> No modifications are made and will remove any custom windows update settings.<LineBreak/><LineBreak/>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.</TextBlock>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Column="1" Margin="10,5">
<Button Name="WPFUpdatessecurity" FontSize="16" Background="AliceBlue" Content="Security (Recommended) Settings" Margin="20,0,20,10" Padding="10"/>
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Column="1" Margin="10,5">
<Button Name="WPFUpdatessecurity" FontSize="16" Content="Security (Recommended) Settings" Margin="20,4,20,10" Padding="10"/>
<TextBlock Margin="20,0,20,0" Padding="10" TextWrapping="WrapWithOverflow" MaxWidth="300">This is my recommended setting I use on all computers.<LineBreak/><LineBreak/> It will delay feature updates by 2 years and will install security updates 4 days after release.<LineBreak/><LineBreak/>Feature Updates: Adds features and often bugs to systems when they are released. You want to delay these as long as possible.<LineBreak/><LineBreak/>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.</TextBlock>
</StackPanel>
<StackPanel Background="#777777" SnapsToDevicePixels="True" Grid.Column="2" Margin="10,5">
<Button Name="WPFUpdatesdisable" FontSize="16" Background="AliceBlue" Content="Disable ALL Updates (NOT RECOMMENDED!)" Margin="20,0,20,10" Padding="10,10,10,10"/>
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Column="2" Margin="10,5">
<Button Name="WPFUpdatesdisable" FontSize="16" Content="Disable ALL Updates (NOT RECOMMENDED!)" Margin="20,4,20,10" Padding="10,10,10,10"/>
<TextBlock Margin="20,0,20,0" Padding="10" TextWrapping="WrapWithOverflow" MaxWidth="300">This completely disables ALL Windows Updates and is NOT RECOMMENDED.<LineBreak/><LineBreak/> However, it can be suitable if you use your system for a select purpose and do not actively browse the internet. <LineBreak/><LineBreak/>Note: Your system will be easier to hack and infect without security updates.</TextBlock>
<TextBlock Text=" " Margin="20,0,20,0" Padding="10" TextWrapping="WrapWithOverflow" MaxWidth="300"/>