mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2024-12-22 14:01:31 -06:00
1d0e3bfd5c
* move logic to json template - remove Invoke-WPFToggle.ps1 - generalize Get-WinUtilToggleStatus - add bingsearch reg key for testing - use Invoke-WinUtilTweaks for actions - replace Add-Click with checked & unchecked to make undo work * add reg params for toggles into tweaks.json - add all reg keys to tweaks.json into existing toggle entry - remove unneeded scripts * fix HKU - load HKU if needed (for tweaks & GetToggleStatus) - remove unneeded Invoke-WinUtilNumLock - has loaded HKU does not load/not stay loaded * add a lot of error handling * Bugfix: New-PSDrive seems to return the "hku" itself so weirdly gets prepended to the return value so the result becomes ("hku", $false). In powershell pretty much every variable that exists is interpreted as $true so the toggle for numlock got incorrectly checked * globally fix HKU error & minimize console feedback - fix HKU issue globally - remove some console logs, change some others to write-debug * update Explorerrefresh - change Invoke-WinUtilExplorerRefresh to handle refresh and restart - add restart logic to window snapping Flyout & Suggestions - rename Invoke-WinUtilExplorerRefresh to Invoke-WinUtilExplorerUpdate * add explorer restart where needed to take effect add explorer restart logic for hidden files + Fileextension toggles * fix missing theme change logic in darkmode toggle * fix window snapping - fix issue defining WindowArrangementActive as dword instead of string * fix bing search - switch bing search enabled/disabled values * add a little bit of error handling - add error handling for Get-WinUtilToggleStatus --------- Co-authored-by: Marterich <47688561+Marterich@users.noreply.github.com>
109 lines
4.3 KiB
PowerShell
109 lines
4.3 KiB
PowerShell
function Invoke-WinUtilTweaks {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Invokes the function associated with each provided checkbox
|
|
|
|
.PARAMETER CheckBox
|
|
The checkbox to invoke
|
|
|
|
.PARAMETER undo
|
|
Indicates whether to undo the operation contained in the checkbox
|
|
|
|
.PARAMETER KeepServiceStartup
|
|
Indicates whether to override the startup of a service with the one given from WinUtil,
|
|
or to keep the startup of said service, if it was changed by the user, or another program, from its default value.
|
|
#>
|
|
|
|
param(
|
|
$CheckBox,
|
|
$undo = $false,
|
|
$KeepServiceStartup = $true
|
|
)
|
|
|
|
if ($Checkbox -contains "Toggle") {
|
|
$CheckBox = $sync.configs.tweaks.$CheckBox
|
|
}
|
|
|
|
Write-Debug "Tweaks: $($CheckBox)"
|
|
if($undo) {
|
|
$Values = @{
|
|
Registry = "OriginalValue"
|
|
ScheduledTask = "OriginalState"
|
|
Service = "OriginalType"
|
|
ScriptType = "UndoScript"
|
|
}
|
|
|
|
} else {
|
|
$Values = @{
|
|
Registry = "Value"
|
|
ScheduledTask = "State"
|
|
Service = "StartupType"
|
|
OriginalService = "OriginalType"
|
|
ScriptType = "InvokeScript"
|
|
}
|
|
}
|
|
if($sync.configs.tweaks.$CheckBox.ScheduledTask) {
|
|
$sync.configs.tweaks.$CheckBox.ScheduledTask | ForEach-Object {
|
|
Write-Debug "$($psitem.Name) and state is $($psitem.$($values.ScheduledTask))"
|
|
Set-WinUtilScheduledTask -Name $psitem.Name -State $psitem.$($values.ScheduledTask)
|
|
}
|
|
}
|
|
if($sync.configs.tweaks.$CheckBox.service) {
|
|
Write-Debug "KeepServiceStartup is $KeepServiceStartup"
|
|
$sync.configs.tweaks.$CheckBox.service | ForEach-Object {
|
|
$changeservice = $true
|
|
|
|
# The check for !($undo) is required, without it the script will throw an error for accessing unavailable memeber, which's the 'OriginalService' Property
|
|
if($KeepServiceStartup -AND !($undo)) {
|
|
try {
|
|
# Check if the service exists
|
|
$service = Get-Service -Name $psitem.Name -ErrorAction Stop
|
|
if(!($service.StartType.ToString() -eq $psitem.$($values.OriginalService))) {
|
|
Write-Debug "Service $($service.Name) was changed in the past to $($service.StartType.ToString()) from it's original type of $($psitem.$($values.OriginalService)), will not change it to $($psitem.$($values.service))"
|
|
$changeservice = $false
|
|
}
|
|
} catch [System.ServiceProcess.ServiceNotFoundException] {
|
|
Write-Warning "Service $($psitem.Name) was not found"
|
|
}
|
|
}
|
|
|
|
if($changeservice) {
|
|
Write-Debug "$($psitem.Name) and state is $($psitem.$($values.service))"
|
|
Set-WinUtilService -Name $psitem.Name -StartupType $psitem.$($values.Service)
|
|
}
|
|
}
|
|
}
|
|
if($sync.configs.tweaks.$CheckBox.registry) {
|
|
$sync.configs.tweaks.$CheckBox.registry | ForEach-Object {
|
|
Write-Debug "$($psitem.Name) and state is $($psitem.$($values.registry))"
|
|
if (($psitem.Path -imatch "hku") -and !(Get-PSDrive -Name HKU -ErrorAction SilentlyContinue)) {
|
|
$null = (New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS)
|
|
if (Get-PSDrive -Name HKU -ErrorAction SilentlyContinue) {
|
|
Write-Debug "HKU drive created successfully"
|
|
} else {
|
|
Write-Debug "Failed to create HKU drive"
|
|
}
|
|
}
|
|
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 {
|
|
Write-Debug "$($psitem) and state is $($psitem.$($values.ScriptType))"
|
|
$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 {
|
|
Write-Debug "UNDO $($psitem.Name)"
|
|
Remove-WinUtilAPPX -Name $psitem
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|