mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2024-11-14 06:35:51 -06:00
efe37b2f3f
* Increase performance during loading. (#1348) * Increase performance during loading. Add a clear button to the search box. Add link and description attributes to the applications JSON. Use the link for linking to the app website. Use the description as a tooltip for each app. Add a clickable link to the website for each application (this took a long time; don't kick me if I got some wrong). Pressing Escape now clears the filter box. Pressing Alt-P prints your PID. * Fix for services that are being stopped * Compile winutil * Adding new Get-LocalizedYesNo based on choice.exe which is faster and more reliable, thank you @dtm-r for implementing it and testing it on English, German, Dutch, French, Italian, Spansich and Russian. Incredible work by @dtm-r, all cridit and props go to him. See this thread for details https://github.com/ChrisTitusTech/winutil/issues/1324 * Added error-checking logic for mounting ISOs and also created a wiki page that explains some of the errors. --------- Co-authored-by: KonTy <KonTy@github.com> * Compile Winutil * Custom save targets for MicroWin ISOs (#1346) * Workaround for Explorer freezes Some people have reported that setting the Event Log service to Automatic and starting it can (temporarily) fix Explorer freezes. This change detects whether the next service in the list is "EventLog" and skips it * Allow user to save MicroWin ISOs anywhere Adds a SaveFileDialog component to let the user specify the location of the MicroWin ISO and uses it during creation with oscdimg. (It uses a Process object from System.Diagnostics because I couldn't get it to work with Start-Process) * Removed temporary workaround Removed my version of the workaround in favor of the version from @KonTy (merge PR #1348 first) --------- Co-authored-by: Chris Titus <contact@christitus.com> * Highly anticipated fix for small screens (#1358) * Increase performance during loading. Add a clear button to the search box. Add link and description attributes to the applications JSON. Use the link for linking to the app website. Use the description as a tooltip for each app. Add a clickable link to the website for each application (this took a long time; don't kick me if I got some wrong). Pressing Escape now clears the filter box. Pressing Alt-P prints your PID. * Fix for services that are being stopped * Compile winutil * Adding new Get-LocalizedYesNo based on choice.exe which is faster and more reliable, thank you @dtm-r for implementing it and testing it on English, German, Dutch, French, Italian, Spansich and Russian. Incredible work by @dtm-r, all cridit and props go to him. See this thread for details https://github.com/ChrisTitusTech/winutil/issues/1324 * Added error-checking logic for mounting ISOs and also created a wiki page that explains some of the errors. * Highly anticipated fix for small screen computers --------- Co-authored-by: KonTy <KonTy@github.com> * Compile Winutil * Winutil take a long time to create iso file and goes to sleep, this fixes that issue #1343 (#1371) Co-authored-by: KonTy <KonTy@github.com> * Compile Winutil * Create .gitattributes * Update .gitattributes * add winget ventoy package (#1374) * add winget ventoy package * convert applications.json to utf-8 * update applications.json again * Compile Winutil * Update applications.json fix encoding * Compile Winutil * Fix Encoding and Bad Symbols * Compile Winutil * feat: Add more software choices (#1379) * Compile Winutil * Update configs.Tests.ps1 * Update winutil.Tests.ps1 * Update applications.json * Compile Winutil * Update applications.json * Compile Winutil * Update applications.json * Compile Winutil * fix functions for unit tests * Compile Winutil * Update Invoke-MicroWin-Helper.ps1 * Compile Winutil * fix name WPF Close Button * Update inputXML.xaml * Compile Winutil * my bad that wasnt it * modify unit test for stop on error * Compile Winutil * Update unittests.yaml * Create test * Update unittests.yaml * Update unittests.yaml * Update unittests.yaml * Update unittests.yaml * Update unittests.yaml * Update unittests.yaml * Update unittests.yaml * Update unittests.yaml * Compile Winutil * Make restore points optional, enabled by default (#1380) * Make restore points optional, enabled by default * Tweaks order fix if restorepoint is checked * Compile Winutil * update unit tests * Compile Winutil * Update unittests.yaml * Update unittests.yaml * Update winutil.Tests.ps1 * tests * Compile Winutil * Update unittests.yaml * Update unittests.yaml * Update unittests.yaml * fix unit test * Update winutil.Tests.ps1 * rewrite all pester test for winutil * Compile Winutil * fix handle is invalid error * final unit test --------- Co-authored-by: KonTy <9524513+KonTy@users.noreply.github.com> Co-authored-by: KonTy <KonTy@github.com> Co-authored-by: ChrisTitusTech <ChrisTitusTech@users.noreply.github.com> Co-authored-by: CodingWonders <101426328+CodingWonders@users.noreply.github.com> Co-authored-by: Munkk <152475628+munkk01@users.noreply.github.com> Co-authored-by: Kiril Vasilev <Kiril.v92@gmail.com>
10049 lines
389 KiB
PowerShell
10049 lines
389 KiB
PowerShell
|
|
################################################################################################################
|
|
### ###
|
|
### WARNING: This file is automatically generated DO NOT modify this file directly as it will be overwritten ###
|
|
### ###
|
|
################################################################################################################
|
|
|
|
<#
|
|
.NOTES
|
|
Author : Chris Titus @christitustech
|
|
Runspace Author: @DeveloperDurp
|
|
GitHub : https://github.com/ChrisTitusTech
|
|
Version : 24.01.12
|
|
#>
|
|
|
|
if (!(Test-Path -Path $ENV:TEMP)) {
|
|
New-Item -ItemType Directory -Force -Path $ENV:TEMP
|
|
}
|
|
|
|
Start-Transcript $ENV:TEMP\Winutil.log -Append
|
|
|
|
# Load DLLs
|
|
Add-Type -AssemblyName PresentationFramework
|
|
Add-Type -AssemblyName System.Windows.Forms
|
|
|
|
# Variable to sync between runspaces
|
|
$sync = [Hashtable]::Synchronized(@{})
|
|
$sync.PSScriptRoot = $PSScriptRoot
|
|
$sync.version = "24.01.12"
|
|
$sync.configs = @{}
|
|
$sync.ProcessRunning = $false
|
|
|
|
$currentPid = [System.Security.Principal.WindowsIdentity]::GetCurrent()
|
|
$principal = new-object System.Security.Principal.WindowsPrincipal($currentPid)
|
|
$adminRole=[System.Security.Principal.WindowsBuiltInRole]::Administrator
|
|
|
|
if ($principal.IsInRole($adminRole))
|
|
{
|
|
$Host.UI.RawUI.WindowTitle = $myInvocation.MyCommand.Definition + "(Admin)"
|
|
clear-host
|
|
}
|
|
else
|
|
{
|
|
$newProcess = new-object System.Diagnostics.ProcessStartInfo "PowerShell";
|
|
$newProcess.Arguments = $myInvocation.MyCommand.Definition;
|
|
$newProcess.Verb = "runas";
|
|
[System.Diagnostics.Process]::Start($newProcess);
|
|
break
|
|
}
|
|
function ConvertTo-Icon {
|
|
<#
|
|
|
|
.DESCRIPTION
|
|
This function will convert PNG to ICO file
|
|
|
|
.EXAMPLE
|
|
ConvertTo-Icon -bitmapPath "$env:TEMP\cttlogo.png" -iconPath $iconPath
|
|
#>
|
|
param( [Parameter(Mandatory=$true)]
|
|
$bitmapPath,
|
|
$iconPath = "$env:temp\newicon.ico"
|
|
)
|
|
|
|
Add-Type -AssemblyName System.Drawing
|
|
|
|
if (Test-Path $bitmapPath) {
|
|
$b = [System.Drawing.Bitmap]::FromFile($bitmapPath)
|
|
$icon = [System.Drawing.Icon]::FromHandle($b.GetHicon())
|
|
$file = New-Object System.IO.FileStream($iconPath, 'OpenOrCreate')
|
|
$icon.Save($file)
|
|
$file.Close()
|
|
$icon.Dispose()
|
|
#explorer "/SELECT,$iconpath"
|
|
}
|
|
else { Write-Warning "$BitmapPath does not exist" }
|
|
}
|
|
function Copy-Files {
|
|
<#
|
|
|
|
.DESCRIPTION
|
|
This function will make all modifications to the registry
|
|
|
|
.EXAMPLE
|
|
|
|
Set-WinUtilRegistry -Name "PublishUserActivities" -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" -Type "DWord" -Value "0"
|
|
|
|
#>
|
|
param (
|
|
[string] $Path,
|
|
[string] $Destination,
|
|
[switch] $Recurse = $false,
|
|
[switch] $Force = $false
|
|
)
|
|
|
|
try {
|
|
|
|
$files = Get-ChildItem -Path $path -Recurse:$recurse
|
|
Write-Host "Copy $($files.Count)(s) from $path to $destination"
|
|
|
|
foreach($file in $files)
|
|
{
|
|
$status = "Copy files {0} on {1}: {2}" -f $counter, $files.Count, $file.Name
|
|
Write-Progress -Activity "Copy Windows files" -Status $status -PercentComplete ($counter++/$files.count*100)
|
|
$restpath = $file.FullName -Replace $path, ''
|
|
|
|
if($file.PSIsContainer -eq $true)
|
|
{
|
|
Write-Debug "Creating $($destination + $restpath)"
|
|
New-Item ($destination+$restpath) -Force:$force -Type Directory -ErrorAction SilentlyContinue
|
|
}
|
|
else
|
|
{
|
|
Write-Debug "Copy from $($file.FullName) to $($destination+$restpath)"
|
|
Copy-Item $file.FullName ($destination+$restpath) -ErrorAction SilentlyContinue -Force:$force
|
|
Set-ItemProperty -Path ($destination+$restpath) -Name IsReadOnly -Value $false
|
|
}
|
|
}
|
|
Write-Progress -Activity "Copy Windows files" -Status "Ready" -Completed
|
|
}
|
|
Catch{
|
|
Write-Warning "Unable to Copy all the files due to unhandled exception"
|
|
Write-Warning $psitem.Exception.StackTrace
|
|
}
|
|
}
|
|
function Get-LocalizedYesNo {
|
|
<#
|
|
.SYNOPSIS
|
|
This function runs choice.exe and captures its output to extract yes no in a localized Windows
|
|
|
|
.DESCRIPTION
|
|
The function retrieves the output of the command 'cmd /c "choice <nul 2>nul"' and converts the default output for Yes and No
|
|
in the localized format, such as "Yes=<first character>, No=<second character>".
|
|
|
|
.EXAMPLE
|
|
$yesNoArray = Get-LocalizedYesNo
|
|
Write-Host "Yes=$($yesNoArray[0]), No=$($yesNoArray[1])"
|
|
#>
|
|
|
|
# Run choice and capture its options as output
|
|
# The output shows the options for Yes and No as "[Y,N]?" in the (partitially) localized format.
|
|
# eg. English: [Y,N]?
|
|
# Dutch: [Y,N]?
|
|
# German: [J,N]?
|
|
# French: [O,N]?
|
|
# Spanish: [S,N]?
|
|
# Italian: [S,N]?
|
|
# Russian: [Y,N]?
|
|
|
|
$line = cmd /c "choice <nul 2>nul"
|
|
$charactersArray = @()
|
|
$regexPattern = '([a-zA-Z])'
|
|
$charactersArray = [regex]::Matches($line, $regexPattern) | ForEach-Object { $_.Groups[1].Value }
|
|
|
|
Write-Debug "According to takeown.exe local Yes is $charactersArray[0]"
|
|
# Return the array of characters
|
|
return $charactersArray
|
|
}
|
|
|
|
|
|
function Get-LocalizedYesNoTakeown {
|
|
<#
|
|
.SYNOPSIS
|
|
This function runs takeown.exe and captures its output to extract yes no in a localized Windows
|
|
|
|
.DESCRIPTION
|
|
The function retrieves lines from the output of takeown.exe until there are at least 2 characters
|
|
captured in a specific format, such as "Yes=<first character>, No=<second character>".
|
|
|
|
.EXAMPLE
|
|
$yesNoArray = Get-LocalizedYesNo
|
|
Write-Host "Yes=$($yesNoArray[0]), No=$($yesNoArray[1])"
|
|
#>
|
|
|
|
# Run takeown.exe and capture its output
|
|
$takeownOutput = & takeown.exe /? | Out-String
|
|
|
|
# Parse the output and retrieve lines until there are at least 2 characters in the array
|
|
$found = $false
|
|
$charactersArray = @()
|
|
foreach ($line in $takeownOutput -split "`r`n")
|
|
{
|
|
# skip everything before /D flag help
|
|
if ($found)
|
|
{
|
|
# now that /D is found start looking for a single character in double quotes
|
|
# in help text there is another string in double quotes but it is not a single character
|
|
$regexPattern = '"([a-zA-Z])"'
|
|
|
|
$charactersArray = [regex]::Matches($line, $regexPattern) | ForEach-Object { $_.Groups[1].Value }
|
|
|
|
# if ($charactersArray.Count -gt 0) {
|
|
# Write-Output "Extracted symbols: $($matches -join ', ')"
|
|
# } else {
|
|
# Write-Output "No matches found."
|
|
# }
|
|
|
|
if ($charactersArray.Count -ge 2)
|
|
{
|
|
break
|
|
}
|
|
}
|
|
elseif ($line -match "/D ")
|
|
{
|
|
$found = $true
|
|
}
|
|
}
|
|
|
|
Write-Debug "According to takeown.exe local Yes is $charactersArray[0]"
|
|
# Return the array of characters
|
|
return $charactersArray
|
|
}
|
|
function Get-Oscdimg {
|
|
<#
|
|
|
|
.DESCRIPTION
|
|
This function will get oscdimg file for from github Release foldersand put it into env:temp
|
|
|
|
.EXAMPLE
|
|
Get-Oscdimg
|
|
#>
|
|
param( [Parameter(Mandatory=$true)]
|
|
$oscdimgPath = "$env:TEMP\oscdimg.exe"
|
|
)
|
|
|
|
$downloadUrl = "https://github.com/ChrisTitusTech/winutil/raw/main/releases/oscdimg.exe"
|
|
Invoke-RestMethod -Uri $downloadUrl -OutFile $oscdimgPath
|
|
$hashResult = Get-FileHash -Path $oscdimgPath -Algorithm SHA256
|
|
$sha256Hash = $hashResult.Hash
|
|
|
|
Write-Host "[INFO] oscdimg.exe SHA-256 Hash: $sha256Hash"
|
|
|
|
$expectedHash = "AB9E161049D293B544961BFDF2D61244ADE79376D6423DF4F60BF9B147D3C78D" # Replace with the actual expected hash
|
|
if ($sha256Hash -eq $expectedHash) {
|
|
Write-Host "Hashes match. File is verified."
|
|
} else {
|
|
Write-Host "Hashes do not match. File may be corrupted or tampered with."
|
|
}
|
|
}
|
|
Function Get-WinUtilCheckBoxes {
|
|
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Finds all checkboxes that are checked on the specific tab and inputs them into a script.
|
|
|
|
.PARAMETER Group
|
|
The group of checkboxes to check
|
|
|
|
.PARAMETER unCheck
|
|
Whether to uncheck the checkboxes that are checked. Defaults to true
|
|
|
|
.OUTPUTS
|
|
A List containing the name of each checked checkbox
|
|
|
|
.EXAMPLE
|
|
Get-WinUtilCheckBoxes "WPFInstall"
|
|
|
|
#>
|
|
|
|
Param(
|
|
$Group,
|
|
[boolean]$unCheck = $true
|
|
)
|
|
|
|
|
|
$Output = New-Object System.Collections.Generic.List[System.Object]
|
|
|
|
if($Group -eq "WPFInstall"){
|
|
$filter = Get-WinUtilVariables -Type Checkbox | Where-Object {$psitem -like "WPFInstall*"}
|
|
$CheckBoxes = $sync.GetEnumerator() | Where-Object {$psitem.Key -in $filter}
|
|
Foreach ($CheckBox in $CheckBoxes){
|
|
if($CheckBox.value.ischecked -eq $true){
|
|
$sync.configs.applications.$($CheckBox.Name).winget -split ";" | ForEach-Object {
|
|
$Output.Add($psitem)
|
|
}
|
|
if ($uncheck -eq $true){
|
|
$CheckBox.value.ischecked = $false
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
if($Group -eq "WPFTweaks"){
|
|
$filter = Get-WinUtilVariables -Type Checkbox | Where-Object {$psitem -like "WPF*Tweaks*"}
|
|
$CheckBoxes = $sync.GetEnumerator() | Where-Object {$psitem.Key -in $filter}
|
|
Foreach ($CheckBox in $CheckBoxes){
|
|
if($CheckBox.value.ischecked -eq $true){
|
|
$Output.Add($Checkbox.Name)
|
|
|
|
if ($uncheck -eq $true){
|
|
$CheckBox.value.ischecked = $false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if($Group -eq "WPFFeature"){
|
|
$filter = Get-WinUtilVariables -Type Checkbox | Where-Object {$psitem -like "WPF*Feature*"}
|
|
$CheckBoxes = $sync.GetEnumerator() | Where-Object {$psitem.Key -in $filter}
|
|
Foreach ($CheckBox in $CheckBoxes){
|
|
if($CheckBox.value.ischecked -eq $true){
|
|
$Output.Add($Checkbox.Name)
|
|
|
|
if ($uncheck -eq $true){
|
|
$CheckBox.value.ischecked = $false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Write-Output $($Output | Select-Object -Unique)
|
|
}
|
|
function Get-WinUtilInstallerProcess {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Checks if the given process is running
|
|
|
|
.PARAMETER Process
|
|
The process to check
|
|
|
|
.OUTPUTS
|
|
Boolean - True if the process is running
|
|
|
|
#>
|
|
|
|
param($Process)
|
|
|
|
if ($Null -eq $Process){
|
|
return $false
|
|
}
|
|
if (Get-Process -Id $Process.Id -ErrorAction SilentlyContinue){
|
|
return $true
|
|
}
|
|
return $false
|
|
}
|
|
function Get-WinUtilRegistry {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Gets the value of a registry key
|
|
|
|
.EXAMPLE
|
|
Get-WinUtilRegistry -Name "PublishUserActivities" -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" -Type "DWord" -Value "0"
|
|
|
|
#>
|
|
param (
|
|
$Name,
|
|
$Path,
|
|
$Type,
|
|
$Value
|
|
)
|
|
|
|
Try{
|
|
$syscheckvalue = Get-ItemPropertyValue -Path $Path -Value $Value # Return Value
|
|
|
|
}
|
|
Catch [System.Security.SecurityException] {
|
|
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
|
|
}
|
|
Catch [System.Management.Automation.ItemNotFoundException] {
|
|
Write-Warning $psitem.Exception.ErrorRecord
|
|
}
|
|
Catch{
|
|
Write-Warning "Unable to set $Name due to unhandled exception"
|
|
Write-Warning $psitem.Exception.StackTrace
|
|
}
|
|
}
|
|
Function Get-WinUtilToggleStatus {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Pulls the registry keys for the given toggle switch and checks whether the toggle should be checked or unchecked
|
|
|
|
.PARAMETER ToggleSwitch
|
|
The name of the toggle to check
|
|
|
|
.OUTPUTS
|
|
Boolean to set the toggle's status to
|
|
|
|
#>
|
|
|
|
Param($ToggleSwitch)
|
|
if($ToggleSwitch -eq "WPFToggleDarkMode"){
|
|
$app = (Get-ItemProperty -path 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize').AppsUseLightTheme
|
|
$system = (Get-ItemProperty -path 'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize').SystemUsesLightTheme
|
|
if($app -eq 0 -and $system -eq 0){
|
|
return $true
|
|
}
|
|
else{
|
|
return $false
|
|
}
|
|
}
|
|
if($ToggleSwitch -eq "WPFToggleBingSearch"){
|
|
$bingsearch = (Get-ItemProperty -path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Search').BingSearchEnabled
|
|
if($bingsearch -eq 0){
|
|
return $false
|
|
}
|
|
else{
|
|
return $true
|
|
}
|
|
}
|
|
if($ToggleSwitch -eq "WPFToggleNumLock"){
|
|
$numlockvalue = (Get-ItemProperty -path 'HKCU:\Control Panel\Keyboard').InitialKeyboardIndicators
|
|
if($numlockvalue -eq 2){
|
|
return $true
|
|
}
|
|
else{
|
|
return $false
|
|
}
|
|
}
|
|
if($ToggleSwitch -eq "WPFToggleVerboseLogon"){
|
|
$VerboseStatusvalue = (Get-ItemProperty -path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System').VerboseStatus
|
|
if($VerboseStatusvalue -eq 1){
|
|
return $true
|
|
}
|
|
else{
|
|
return $false
|
|
}
|
|
}
|
|
if($ToggleSwitch -eq "WPFToggleShowExt"){
|
|
$hideextvalue = (Get-ItemProperty -path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced').HideFileExt
|
|
if($hideextvalue -eq 0){
|
|
return $true
|
|
}
|
|
else{
|
|
return $false
|
|
}
|
|
}
|
|
if($ToggleSwitch -eq "WPFToggleMouseAcceleration"){
|
|
$MouseSpeed = (Get-ItemProperty -path 'HKCU:\Control Panel\Mouse').MouseSpeed
|
|
$MouseThreshold1 = (Get-ItemProperty -path 'HKCU:\Control Panel\Mouse').MouseThreshold1
|
|
$MouseThreshold2 = (Get-ItemProperty -path 'HKCU:\Control Panel\Mouse').MouseThreshold2
|
|
|
|
if($MouseSpeed -eq 1 -and $MouseThreshold1 -eq 6 -and $MouseThreshold2 -eq 10){
|
|
return $true
|
|
}
|
|
else{
|
|
return $false
|
|
}
|
|
}
|
|
}
|
|
function Get-WinUtilVariables {
|
|
|
|
<#
|
|
.SYNOPSIS
|
|
Gets every form object of the provided type
|
|
|
|
.OUTPUTS
|
|
List containing every object that matches the provided type
|
|
#>
|
|
param (
|
|
[Parameter()]
|
|
[string[]]$Type
|
|
)
|
|
|
|
$keys = $sync.keys | Where-Object { $_ -like "WPF*" }
|
|
|
|
if ($Type) {
|
|
$output = $keys | ForEach-Object {
|
|
Try {
|
|
$objType = $sync["$psitem"].GetType().Name
|
|
if ($Type -contains $objType) {
|
|
Write-Output $psitem
|
|
}
|
|
}
|
|
Catch {
|
|
<#I am here so errors don't get outputted for a couple variables that don't have the .GetType() attribute#>
|
|
}
|
|
}
|
|
return $output
|
|
}
|
|
return $keys
|
|
}
|
|
function Install-WinUtilChoco {
|
|
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Installs Chocolatey if it is not already installed
|
|
|
|
#>
|
|
|
|
try {
|
|
Write-Host "Checking if Chocolatey is Installed..."
|
|
|
|
if((Test-WinUtilPackageManager -choco)){
|
|
Write-Host "Chocolatey Already Installed"
|
|
return
|
|
}
|
|
|
|
Write-Host "Seems Chocolatey is not installed, installing now"
|
|
Set-ExecutionPolicy Bypass -Scope Process -Force; Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) -ErrorAction Stop
|
|
powershell choco feature enable -n allowGlobalConfirmation
|
|
|
|
}
|
|
Catch {
|
|
Write-Host "==========================================="
|
|
Write-Host "-- Chocolatey failed to install ---"
|
|
Write-Host "==========================================="
|
|
}
|
|
|
|
}
|
|
Function Install-WinUtilProgramWinget {
|
|
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Manages the provided programs using Winget
|
|
|
|
.PARAMETER ProgramsToInstall
|
|
A list of programs to manage
|
|
|
|
.PARAMETER manage
|
|
The action to perform on the programs, can be either 'Installing' or 'Uninstalling'
|
|
|
|
.NOTES
|
|
The triple quotes are required any time you need a " in a normal script block.
|
|
|
|
#>
|
|
|
|
param(
|
|
$ProgramsToInstall,
|
|
$manage = "Installing"
|
|
)
|
|
|
|
$x = 0
|
|
$count = $($ProgramsToInstall -split ",").Count
|
|
|
|
Write-Progress -Activity "$manage Applications" -Status "Starting" -PercentComplete 0
|
|
|
|
Foreach ($Program in $($ProgramsToInstall -split ",")){
|
|
|
|
Write-Progress -Activity "$manage Applications" -Status "$manage $Program $($x + 1) of $count" -PercentComplete $($x/$count*100)
|
|
if($manage -eq "Installing"){
|
|
Start-Process -FilePath winget -ArgumentList "install -e --accept-source-agreements --accept-package-agreements --silent $Program" -NoNewWindow -Wait
|
|
}
|
|
if($manage -eq "Uninstalling"){
|
|
Start-Process -FilePath winget -ArgumentList "uninstall -e --purge --force --silent $Program" -NoNewWindow -Wait
|
|
}
|
|
|
|
$X++
|
|
}
|
|
|
|
Write-Progress -Activity "$manage Applications" -Status "Finished" -Completed
|
|
|
|
}
|
|
function Get-LatestHash {
|
|
$shaUrl = ((Invoke-WebRequest $apiLatestUrl -UseBasicParsing | ConvertFrom-Json).assets | Where-Object { $_.name -match '^Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.txt$' }).browser_download_url
|
|
|
|
$shaFile = Join-Path -Path $tempFolder -ChildPath 'Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.txt'
|
|
$WebClient.DownloadFile($shaUrl, $shaFile)
|
|
|
|
Get-Content $shaFile
|
|
}
|
|
|
|
function Install-WinUtilWinget {
|
|
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Installs Winget if it is not already installed
|
|
|
|
.DESCRIPTION
|
|
This function will download the latest version of winget and install it. If winget is already installed, it will do nothing.
|
|
#>
|
|
Try{
|
|
Write-Host "Checking if Winget is Installed..."
|
|
if (Test-WinUtilPackageManager -winget) {
|
|
# Checks if winget executable exists and if the Windows Version is 1809 or higher
|
|
Write-Host "Winget Already Installed"
|
|
return
|
|
}
|
|
|
|
# Gets the computer's information
|
|
if ($null -eq $sync.ComputerInfo){
|
|
$ComputerInfo = Get-ComputerInfo -ErrorAction Stop
|
|
}
|
|
Else {
|
|
$ComputerInfo = $sync.ComputerInfo
|
|
}
|
|
|
|
if (($ComputerInfo.WindowsVersion) -lt "1809") {
|
|
# Checks if Windows Version is too old for winget
|
|
Write-Host "Winget is not supported on this version of Windows (Pre-1809)"
|
|
return
|
|
}
|
|
|
|
Write-Host "Running Alternative Installer and Direct Installing"
|
|
Start-Process -Verb runas -FilePath powershell.exe -ArgumentList "choco install winget"
|
|
|
|
Write-Host "Winget Installed"
|
|
}
|
|
Catch{
|
|
throw [WingetFailedInstall]::new('Failed to install')
|
|
}
|
|
}
|
|
function Invoke-MicroWin-Helper {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
checking unit tests
|
|
|
|
.PARAMETER Name
|
|
no parameters
|
|
|
|
.EXAMPLE
|
|
placeholder
|
|
|
|
#>
|
|
|
|
}
|
|
|
|
|
|
function Remove-Features([switch] $dumpFeatures = $false, [switch] $keepDefender = $false) {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Removes certain features from ISO image
|
|
|
|
.PARAMETER Name
|
|
dumpFeatures - Dumps all features found in the ISO into a file called allfeaturesdump.txt. This file can be examined and used to decide what to remove.
|
|
keepDefender - Should Defender be removed from the ISO?
|
|
|
|
.EXAMPLE
|
|
Remove-Features -keepDefender:$false
|
|
|
|
#>
|
|
$appxlist = dism /English /image:$scratchDir /Get-Features | Select-String -Pattern "Feature Name : " -CaseSensitive -SimpleMatch
|
|
$appxlist = $appxlist -split "Feature Name : " | Where-Object {$_}
|
|
if ($dumpFeatures)
|
|
{
|
|
$appxlist > allfeaturesdump.txt
|
|
}
|
|
|
|
$appxlist = $appxlist | Where-Object {
|
|
$_ -NotLike "*Printing*" -AND
|
|
$_ -NotLike "*TelnetClient*" -AND
|
|
$_ -NotLike "*PowerShell*" -AND
|
|
$_ -NotLike "*NetFx*"
|
|
}
|
|
|
|
if ($keepDefender) { $appxlist = $appxlist | Where-Object { $_ -NotLike "*Defender*" }}
|
|
|
|
foreach($feature in $appxlist)
|
|
{
|
|
$status = "Removing feature $feature"
|
|
Write-Progress -Activity "Removing features" -Status $status -PercentComplete ($counter++/$appxlist.Count*100)
|
|
Write-Debug "Removing feature $feature"
|
|
# dism /image:$scratchDir /Disable-Feature /FeatureName:$feature /Remove /NoRestart > $null
|
|
}
|
|
Write-Progress -Activity "Removing features" -Status "Ready" -Completed
|
|
}
|
|
|
|
function Remove-Packages
|
|
{
|
|
$appxlist = dism /English /Image:$scratchDir /Get-Packages | Select-String -Pattern "Package Identity : " -CaseSensitive -SimpleMatch
|
|
$appxlist = $appxlist -split "Package Identity : " | Where-Object {$_}
|
|
|
|
$appxlist = $appxlist | Where-Object {
|
|
$_ -NotLike "*ApplicationModel*" -AND
|
|
$_ -NotLike "*indows-Client-LanguagePack*" -AND
|
|
$_ -NotLike "*LanguageFeatures-Basic*" -AND
|
|
$_ -NotLike "*Package_for_ServicingStack*" -AND
|
|
$_ -NotLike "*.NET*" -AND
|
|
$_ -NotLike "*Store*" -AND
|
|
$_ -NotLike "*VCLibs*" -AND
|
|
$_ -NotLike "*AAD.BrokerPlugin",
|
|
$_ -NotLike "*LockApp*" -AND
|
|
$_ -NotLike "*Notepad*" -AND
|
|
$_ -NotLike "*immersivecontrolpanel*" -AND
|
|
$_ -NotLike "*ContentDeliveryManager*" -AND
|
|
$_ -NotLike "*PinningConfirMationDialog*" -AND
|
|
$_ -NotLike "*SecHealthUI*" -AND
|
|
$_ -NotLike "*SecureAssessmentBrowser*" -AND
|
|
$_ -NotLike "*PrintDialog*" -AND
|
|
$_ -NotLike "*AssignedAccessLockApp*" -AND
|
|
$_ -NotLike "*OOBENetworkConnectionFlow*" -AND
|
|
$_ -NotLike "*Apprep.ChxApp*" -AND
|
|
$_ -NotLike "*CBS*" -AND
|
|
$_ -NotLike "*OOBENetworkCaptivePortal*" -AND
|
|
$_ -NotLike "*PeopleExperienceHost*" -AND
|
|
$_ -NotLike "*ParentalControls*" -AND
|
|
$_ -NotLike "*Win32WebViewHost*" -AND
|
|
$_ -NotLike "*InputApp*" -AND
|
|
$_ -NotLike "*AccountsControl*" -AND
|
|
$_ -NotLike "*AsyncTextService*" -AND
|
|
$_ -NotLike "*CapturePicker*" -AND
|
|
$_ -NotLike "*CredDialogHost*" -AND
|
|
$_ -NotLike "*BioEnrollMent*" -AND
|
|
$_ -NotLike "*ShellExperienceHost*" -AND
|
|
$_ -NotLike "*DesktopAppInstaller*" -AND
|
|
$_ -NotLike "*WebMediaExtensions*" -AND
|
|
$_ -NotLike "*WMIC*" -AND
|
|
$_ -NotLike "*UI.XaML*"
|
|
}
|
|
|
|
foreach ($appx in $appxlist)
|
|
{
|
|
$status = "Removing $appx"
|
|
Write-Progress -Activity "Removing Apps" -Status $status -PercentComplete ($counter++/$appxlist.Count*100)
|
|
dism /English /image:$scratchDir /Remove-Package /PackageName:$appx /NoRestart
|
|
}
|
|
Write-Progress -Activity "Removing Apps" -Status "Ready" -Completed
|
|
}
|
|
|
|
function Remove-ProvisionedPackages([switch] $keepSecurity = $false)
|
|
{
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Removes AppX packages from a Windows image during MicroWin processing
|
|
|
|
.PARAMETER Name
|
|
keepSecurity - Boolean that determines whether to keep "Microsoft.SecHealthUI" (Windows Security) in the Windows image
|
|
|
|
.EXAMPLE
|
|
Remove-ProvisionedPackages -keepSecurity:$false
|
|
|
|
#>
|
|
$appxProvisionedPackages = Get-AppxProvisionedPackage -Path "$($scratchDir)" | Where-Object {
|
|
$_.PackageName -NotLike "*AppInstaller*" -AND
|
|
$_.PackageName -NotLike "*Store*" -and
|
|
$_.PackageName -NotLike "*dism*" -and
|
|
$_.PackageName -NotLike "*Foundation*" -and
|
|
$_.PackageName -NotLike "*FodMetadata*" -and
|
|
$_.PackageName -NotLike "*LanguageFeatures*" -and
|
|
$_.PackageName -NotLike "*Notepad*" -and
|
|
$_.PackageName -NotLike "*Printing*" -and
|
|
$_.PackageName -NotLike "*Wifi*" -and
|
|
$_.PackageName -NotLike "*Foundation*"
|
|
}
|
|
|
|
if ($?)
|
|
{
|
|
if ($keepSecurity) { $appxProvisionedPackages = $appxProvisionedPackages | Where-Object { $_.PackageName -NotLike "*SecHealthUI*" }}
|
|
$counter = 0
|
|
foreach ($appx in $appxProvisionedPackages)
|
|
{
|
|
$status = "Removing Provisioned $($appx.PackageName)"
|
|
Write-Progress -Activity "Removing Provisioned Apps" -Status $status -PercentComplete ($counter++/$appxProvisionedPackages.Count*100)
|
|
dism /English /image:$scratchDir /Remove-ProvisionedAppxPackage /PackageName:$($appx.PackageName) /NoRestart
|
|
}
|
|
Write-Progress -Activity "Removing Provisioned Apps" -Status "Ready" -Completed
|
|
}
|
|
else
|
|
{
|
|
Write-Host "Could not get Provisioned App information. Skipping process..."
|
|
}
|
|
}
|
|
|
|
function Copy-ToUSB([string] $fileToCopy)
|
|
{
|
|
foreach ($volume in Get-Volume) {
|
|
if ($volume -and $volume.FileSystemLabel -ieq "ventoy") {
|
|
$destinationPath = "$($volume.DriveLetter):\"
|
|
#Copy-Item -Path $fileToCopy -Destination $destinationPath -Force
|
|
# Get the total size of the file
|
|
$totalSize = (Get-Item $fileToCopy).length
|
|
|
|
Copy-Item -Path $fileToCopy -Destination $destinationPath -Verbose -Force -Recurse -Container -PassThru |
|
|
ForEach-Object {
|
|
# Calculate the percentage completed
|
|
$completed = ($_.BytesTransferred / $totalSize) * 100
|
|
|
|
# Display the progress bar
|
|
Write-Progress -Activity "Copying File" -Status "Progress" -PercentComplete $completed -CurrentOperation ("{0:N2} MB / {1:N2} MB" -f ($_.BytesTransferred / 1MB), ($totalSize / 1MB))
|
|
}
|
|
|
|
Write-Host "File copied to Ventoy drive $($volume.DriveLette)"
|
|
return
|
|
}
|
|
}
|
|
Write-Host "Ventoy USB Key is not inserted"
|
|
}
|
|
|
|
function Remove-FileOrDirectory([string] $pathToDelete, [string] $mask = "", [switch] $Directory = $false)
|
|
{
|
|
if(([string]::IsNullOrEmpty($pathToDelete))) { return }
|
|
if (-not (Test-Path -Path "$($pathToDelete)")) { return }
|
|
|
|
$yesNo = Get-LocalizedYesNo
|
|
Write-Host "[INFO] In Your local takeown expects '$($yesNo[0])' as a Yes answer."
|
|
|
|
# Specify the path to the directory
|
|
# $directoryPath = "$($scratchDir)\Windows\System32\LogFiles\WMI\RtBackup"
|
|
# takeown /a /r /d $yesNo[0] /f "$($directoryPath)" > $null
|
|
# icacls "$($directoryPath)" /q /c /t /reset > $null
|
|
# icacls $directoryPath /setowner "*S-1-5-32-544"
|
|
# icacls $directoryPath /grant "*S-1-5-32-544:(OI)(CI)F" /t /c /q
|
|
# Remove-Item -Path $directoryPath -Recurse -Force
|
|
|
|
# # Grant full control to BUILTIN\Administrators using icacls
|
|
# $directoryPath = "$($scratchDir)\Windows\System32\WebThreatDefSvc"
|
|
# takeown /a /r /d $yesNo[0] /f "$($directoryPath)" > $null
|
|
# icacls "$($directoryPath)" /q /c /t /reset > $null
|
|
# icacls $directoryPath /setowner "*S-1-5-32-544"
|
|
# icacls $directoryPath /grant "*S-1-5-32-544:(OI)(CI)F" /t /c /q
|
|
# Remove-Item -Path $directoryPath -Recurse -Force
|
|
|
|
$itemsToDelete = [System.Collections.ArrayList]::new()
|
|
|
|
if ($mask -eq "")
|
|
{
|
|
Write-Debug "Adding $($pathToDelete) to array."
|
|
[void]$itemsToDelete.Add($pathToDelete)
|
|
}
|
|
else
|
|
{
|
|
Write-Debug "Adding $($pathToDelete) to array and mask is $($mask)"
|
|
if ($Directory) { $itemsToDelete = Get-ChildItem $pathToDelete -Include $mask -Recurse -Directory }
|
|
else { $itemsToDelete = Get-ChildItem $pathToDelete -Include $mask -Recurse }
|
|
}
|
|
|
|
foreach($itemToDelete in $itemsToDelete)
|
|
{
|
|
$status = "Deleteing $($itemToDelete)"
|
|
Write-Progress -Activity "Removing Items" -Status $status -PercentComplete ($counter++/$itemsToDelete.Count*100)
|
|
|
|
if (Test-Path -Path "$($itemToDelete)" -PathType Container)
|
|
{
|
|
$status = "Deleting directory: $($itemToDelete)"
|
|
|
|
takeown /r /d $yesNo[0] /a /f "$($itemToDelete)"
|
|
icacls "$($itemToDelete)" /q /c /t /reset
|
|
icacls $itemToDelete /setowner "*S-1-5-32-544"
|
|
icacls $itemToDelete /grant "*S-1-5-32-544:(OI)(CI)F" /t /c /q
|
|
Remove-Item -Force -Recurse "$($itemToDelete)"
|
|
}
|
|
elseif (Test-Path -Path "$($itemToDelete)" -PathType Leaf)
|
|
{
|
|
$status = "Deleting file: $($itemToDelete)"
|
|
|
|
takeown /a /f "$($itemToDelete)"
|
|
icacls "$($itemToDelete)" /q /c /t /reset
|
|
icacls "$($itemToDelete)" /setowner "*S-1-5-32-544"
|
|
icacls "$($itemToDelete)" /grant "*S-1-5-32-544:(OI)(CI)F" /t /c /q
|
|
Remove-Item -Force "$($itemToDelete)"
|
|
}
|
|
}
|
|
Write-Progress -Activity "Removing Items" -Status "Ready" -Completed
|
|
}
|
|
|
|
function New-Unattend {
|
|
|
|
# later if we wont to remove even more bloat EU requires MS to remove everything from English(world)
|
|
# Below is an example how to do it we probably should create a drop down with common locals
|
|
# <settings pass="specialize">
|
|
# <!-- Specify English (World) locale -->
|
|
# <component name="Microsoft-Windows-International-Core" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
# <SetupUILanguage>
|
|
# <UILanguage>en-US</UILanguage>
|
|
# </SetupUILanguage>
|
|
# <InputLocale>en-US</InputLocale>
|
|
# <SystemLocale>en-US</SystemLocale>
|
|
# <UILanguage>en-US</UILanguage>
|
|
# <UserLocale>en-US</UserLocale>
|
|
# </component>
|
|
# </settings>
|
|
|
|
# <settings pass="oobeSystem">
|
|
# <!-- Specify English (World) locale -->
|
|
# <component name="Microsoft-Windows-International-Core" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
# <InputLocale>en-US</InputLocale>
|
|
# <SystemLocale>en-US</SystemLocale>
|
|
# <UILanguage>en-US</UILanguage>
|
|
# <UserLocale>en-US</UserLocale>
|
|
# </component>
|
|
# </settings>
|
|
# using here string to embedd unattend
|
|
# <RunSynchronousCommand wcm:action="add">
|
|
# <Order>1</Order>
|
|
# <Path>net user administrator /active:yes</Path>
|
|
# </RunSynchronousCommand>
|
|
|
|
$unattend = @'
|
|
<?xml version="1.0" encoding="utf-8"?>
|
|
<unattend xmlns="urn:schemas-microsoft-com:unattend"
|
|
xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"
|
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
<settings pass="specialize">
|
|
<component name="Microsoft-Windows-SQMApi" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
<CEIPEnabled>0</CEIPEnabled>
|
|
</component>
|
|
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
<ConfigureChatAutoInstall>false</ConfigureChatAutoInstall>
|
|
</component>
|
|
</settings>
|
|
<settings pass="auditUser">
|
|
<component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
<RunSynchronous>
|
|
<RunSynchronousCommand wcm:action="add">
|
|
<Order>1</Order>
|
|
<CommandLine>CMD /C echo LAU GG>C:\Windows\LogAuditUser.txt</CommandLine>
|
|
<Description>StartMenu</Description>
|
|
</RunSynchronousCommand>
|
|
</RunSynchronous>
|
|
</component>
|
|
</settings>
|
|
<settings pass="oobeSystem">
|
|
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
|
<OOBE>
|
|
<HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
|
|
<SkipUserOOBE>false</SkipUserOOBE>
|
|
<SkipMachineOOBE>false</SkipMachineOOBE>
|
|
<HideOnlineAccountScreens>true</HideOnlineAccountScreens>
|
|
<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
|
|
<HideEULAPage>true</HideEULAPage>
|
|
<ProtectYourPC>3</ProtectYourPC>
|
|
</OOBE>
|
|
<FirstLogonCommands>
|
|
<SynchronousCommand wcm:action="add">
|
|
<Order>1</Order>
|
|
<CommandLine>cmd.exe /c echo 23>c:\windows\csup.txt</CommandLine>
|
|
</SynchronousCommand>
|
|
<SynchronousCommand wcm:action="add">
|
|
<Order>2</Order>
|
|
<CommandLine>CMD /C echo GG>C:\Windows\LogOobeSystem.txt</CommandLine>
|
|
</SynchronousCommand>
|
|
<SynchronousCommand wcm:action="add">
|
|
<Order>3</Order>
|
|
<CommandLine>powershell -ExecutionPolicy Bypass -File c:\windows\FirstStartup.ps1</CommandLine>
|
|
</SynchronousCommand>
|
|
</FirstLogonCommands>
|
|
</component>
|
|
</settings>
|
|
</unattend>
|
|
'@
|
|
$unattend | Out-File -FilePath "$env:temp\unattend.xml" -Force
|
|
}
|
|
|
|
function New-CheckInstall {
|
|
|
|
# using here string to embedd firstrun
|
|
$checkInstall = @'
|
|
@echo off
|
|
if exist "C:\windows\cpu.txt" (
|
|
echo C:\windows\cpu.txt exists
|
|
) else (
|
|
echo C:\windows\cpu.txt does not exist
|
|
)
|
|
if exist "C:\windows\SerialNumber.txt" (
|
|
echo C:\windows\SerialNumber.txt exists
|
|
) else (
|
|
echo C:\windows\SerialNumber.txt does not exist
|
|
)
|
|
if exist "C:\unattend.xml" (
|
|
echo C:\unattend.xml exists
|
|
) else (
|
|
echo C:\unattend.xml does not exist
|
|
)
|
|
if exist "C:\Windows\Setup\Scripts\SetupComplete.cmd" (
|
|
echo C:\Windows\Setup\Scripts\SetupComplete.cmd exists
|
|
) else (
|
|
echo C:\Windows\Setup\Scripts\SetupComplete.cmd does not exist
|
|
)
|
|
if exist "C:\Windows\Panther\unattend.xml" (
|
|
echo C:\Windows\Panther\unattend.xml exists
|
|
) else (
|
|
echo C:\Windows\Panther\unattend.xml does not exist
|
|
)
|
|
if exist "C:\Windows\System32\Sysprep\unattend.xml" (
|
|
echo C:\Windows\System32\Sysprep\unattend.xml exists
|
|
) else (
|
|
echo C:\Windows\System32\Sysprep\unattend.xml does not exist
|
|
)
|
|
if exist "C:\Windows\FirstStartup.ps1" (
|
|
echo C:\Windows\FirstStartup.ps1 exists
|
|
) else (
|
|
echo C:\Windows\FirstStartup.ps1 does not exist
|
|
)
|
|
if exist "C:\Windows\winutil.ps1" (
|
|
echo C:\Windows\winutil.ps1 exists
|
|
) else (
|
|
echo C:\Windows\winutil.ps1 does not exist
|
|
)
|
|
if exist "C:\Windows\LogSpecialize.txt" (
|
|
echo C:\Windows\LogSpecialize.txt exists
|
|
) else (
|
|
echo C:\Windows\LogSpecialize.txt does not exist
|
|
)
|
|
if exist "C:\Windows\LogAuditUser.txt" (
|
|
echo C:\Windows\LogAuditUser.txt exists
|
|
) else (
|
|
echo C:\Windows\LogAuditUser.txt does not exist
|
|
)
|
|
if exist "C:\Windows\LogOobeSystem.txt" (
|
|
echo C:\Windows\LogOobeSystem.txt exists
|
|
) else (
|
|
echo C:\Windows\LogOobeSystem.txt does not exist
|
|
)
|
|
if exist "c:\windows\csup.txt" (
|
|
echo c:\windows\csup.txt exists
|
|
) else (
|
|
echo c:\windows\csup.txt does not exist
|
|
)
|
|
if exist "c:\windows\LogFirstRun.txt" (
|
|
echo c:\windows\LogFirstRun.txt exists
|
|
) else (
|
|
echo c:\windows\LogFirstRun.txt does not exist
|
|
)
|
|
'@
|
|
$checkInstall | Out-File -FilePath "$env:temp\checkinstall.cmd" -Force -Encoding Ascii
|
|
}
|
|
|
|
function New-FirstRun {
|
|
|
|
# using here string to embedd firstrun
|
|
$firstRun = @'
|
|
# Set the global error action preference to continue
|
|
$ErrorActionPreference = "Continue"
|
|
function Remove-RegistryValue
|
|
{
|
|
param (
|
|
[Parameter(Mandatory = $true)]
|
|
[string]$RegistryPath,
|
|
|
|
[Parameter(Mandatory = $true)]
|
|
[string]$ValueName
|
|
)
|
|
|
|
# Check if the registry path exists
|
|
if (Test-Path -Path $RegistryPath)
|
|
{
|
|
$registryValue = Get-ItemProperty -Path $RegistryPath -Name $ValueName -ErrorAction SilentlyContinue
|
|
|
|
# Check if the registry value exists
|
|
if ($registryValue)
|
|
{
|
|
# Remove the registry value
|
|
Remove-ItemProperty -Path $RegistryPath -Name $ValueName -Force
|
|
Write-Host "Registry value '$ValueName' removed from '$RegistryPath'."
|
|
}
|
|
else
|
|
{
|
|
Write-Host "Registry value '$ValueName' not found in '$RegistryPath'."
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Write-Host "Registry path '$RegistryPath' not found."
|
|
}
|
|
}
|
|
|
|
function Stop-UnnecessaryServices
|
|
{
|
|
$servicesToExclude = @(
|
|
"AudioSrv",
|
|
"AudioEndpointBuilder",
|
|
"BFE",
|
|
"BITS",
|
|
"BrokerInfrastructure",
|
|
"CDPSvc",
|
|
"CDPUserSvc_dc2a4",
|
|
"CoreMessagingRegistrar",
|
|
"CryptSvc",
|
|
"DPS",
|
|
"DcomLaunch",
|
|
"Dhcp",
|
|
"DispBrokerDesktopSvc",
|
|
"Dnscache",
|
|
"DoSvc",
|
|
"DusmSvc",
|
|
"EventLog",
|
|
"EventSystem",
|
|
"FontCache",
|
|
"LSM",
|
|
"LanmanServer",
|
|
"LanmanWorkstation",
|
|
"MapsBroker",
|
|
"MpsSvc",
|
|
"OneSyncSvc_dc2a4",
|
|
"Power",
|
|
"ProfSvc",
|
|
"RpcEptMapper",
|
|
"RpcSs",
|
|
"SCardSvr",
|
|
"SENS",
|
|
"SamSs",
|
|
"Schedule",
|
|
"SgrmBroker",
|
|
"ShellHWDetection",
|
|
"Spooler",
|
|
"SysMain",
|
|
"SystemEventsBroker",
|
|
"TextInputManagementService",
|
|
"Themes",
|
|
"TrkWks",
|
|
"UserManager",
|
|
"VGAuthService",
|
|
"VMTools",
|
|
"WSearch",
|
|
"Wcmsvc",
|
|
"WinDefend",
|
|
"Winmgmt",
|
|
"WlanSvc",
|
|
"WpnService",
|
|
"WpnUserService_dc2a4",
|
|
"cbdhsvc_dc2a4",
|
|
"edgeupdate",
|
|
"gpsvc",
|
|
"iphlpsvc",
|
|
"mpssvc",
|
|
"nsi",
|
|
"sppsvc",
|
|
"tiledatamodelsvc",
|
|
"vm3dservice",
|
|
"webthreatdefusersvc_dc2a4",
|
|
"wscsvc"
|
|
)
|
|
|
|
$runningServices = Get-Service | Where-Object { $servicesToExclude -notcontains $_.Name }
|
|
foreach($service in $runningServices)
|
|
{
|
|
Stop-Service -Name $service.Name -PassThru
|
|
Set-Service $service.Name -StartupType Manual
|
|
"Stopping service $($service.Name)" | Out-File -FilePath c:\windows\LogFirstRun.txt -Append -NoClobber
|
|
}
|
|
}
|
|
|
|
"FirstStartup has worked" | Out-File -FilePath c:\windows\LogFirstRun.txt -Append -NoClobber
|
|
|
|
$Theme = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize"
|
|
Set-ItemProperty -Path $Theme -Name AppsUseLightTheme -Value 1
|
|
Set-ItemProperty -Path $Theme -Name SystemUsesLightTheme -Value 1
|
|
|
|
# figure this out later how to set updates to security only
|
|
#Import-Module -Name PSWindowsUpdate;
|
|
#Stop-Service -Name wuauserv
|
|
#Set-WUSettings -MicrosoftUpdateEnabled -AutoUpdateOption 'Never'
|
|
#Start-Service -Name wuauserv
|
|
|
|
Stop-UnnecessaryServices
|
|
|
|
$taskbarPath = "$env:AppData\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar"
|
|
# Delete all files on the Taskbar
|
|
Get-ChildItem -Path $taskbarPath -File | Remove-Item -Force
|
|
Remove-RegistryValue -RegistryPath "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband" -ValueName "FavoritesRemovedChanges"
|
|
Remove-RegistryValue -RegistryPath "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband" -ValueName "FavoritesChanges"
|
|
Remove-RegistryValue -RegistryPath "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband" -ValueName "Favorites"
|
|
|
|
# Stop-Process -Name explorer -Force
|
|
|
|
$process = Get-Process -Name "explorer"
|
|
Stop-Process -InputObject $process
|
|
# Wait for the process to exit
|
|
Wait-Process -InputObject $process
|
|
Start-Sleep -Seconds 3
|
|
|
|
# Delete Edge Icon from the desktop
|
|
$edgeShortcutFiles = Get-ChildItem -Path $desktopPath -Filter "*Edge*.lnk"
|
|
# Check if Edge shortcuts exist on the desktop
|
|
if ($edgeShortcutFiles)
|
|
{
|
|
foreach ($shortcutFile in $edgeShortcutFiles)
|
|
{
|
|
# Remove each Edge shortcut
|
|
Remove-Item -Path $shortcutFile.FullName -Force
|
|
Write-Host "Edge shortcut '$($shortcutFile.Name)' removed from the desktop."
|
|
}
|
|
}
|
|
Remove-Item -Path "$env:USERPROFILE\Desktop\*.lnk"
|
|
Remove-Item -Path "C:\Users\Default\Desktop\*.lnk"
|
|
|
|
# ************************************************
|
|
# Create WinUtil shortcut on the desktop
|
|
#
|
|
$desktopPath = "$($env:USERPROFILE)\Desktop"
|
|
# Specify the target PowerShell command
|
|
$command = "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command 'irm https://christitus.com/win | iex'"
|
|
# Specify the path for the shortcut
|
|
$shortcutPath = Join-Path $desktopPath 'winutil.lnk'
|
|
# Create a shell object
|
|
$shell = New-Object -ComObject WScript.Shell
|
|
|
|
# Create a shortcut object
|
|
$shortcut = $shell.CreateShortcut($shortcutPath)
|
|
|
|
if (Test-Path -Path "c:\Windows\cttlogo.png")
|
|
{
|
|
$shortcut.IconLocation = "c:\Windows\cttlogo.png"
|
|
}
|
|
|
|
# Set properties of the shortcut
|
|
$shortcut.TargetPath = "powershell.exe"
|
|
$shortcut.Arguments = "-NoProfile -ExecutionPolicy Bypass -Command `"$command`""
|
|
# Save the shortcut
|
|
$shortcut.Save()
|
|
Write-Host "Shortcut created at: $shortcutPath"
|
|
#
|
|
# Done create WinUtil shortcut on the desktop
|
|
# ************************************************
|
|
|
|
Start-Process explorer
|
|
|
|
'@
|
|
$firstRun | Out-File -FilePath "$env:temp\FirstStartup.ps1" -Force
|
|
}
|
|
function Invoke-WinUtilBingSearch {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Disables/Enables Bing Search
|
|
|
|
.PARAMETER Enabled
|
|
Indicates whether to enable or disable Bing Search
|
|
|
|
#>
|
|
Param($Enabled)
|
|
Try{
|
|
if ($Enabled -eq $false){
|
|
Write-Host "Enabling Bing Search"
|
|
$value = 1
|
|
}
|
|
else {
|
|
Write-Host "Disabling Bing Search"
|
|
$value = 0
|
|
}
|
|
$Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Search"
|
|
Set-ItemProperty -Path $Path -Name BingSearchEnabled -Value $value
|
|
}
|
|
Catch [System.Security.SecurityException] {
|
|
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
|
|
}
|
|
Catch [System.Management.Automation.ItemNotFoundException] {
|
|
Write-Warning $psitem.Exception.ErrorRecord
|
|
}
|
|
Catch{
|
|
Write-Warning "Unable to set $Name due to unhandled exception"
|
|
Write-Warning $psitem.Exception.StackTrace
|
|
}
|
|
}
|
|
Function Invoke-WinUtilCurrentSystem {
|
|
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Checks to see what tweaks have already been applied and what programs are installed, and checks the according boxes
|
|
|
|
.EXAMPLE
|
|
Get-WinUtilCheckBoxes "WPFInstall"
|
|
|
|
#>
|
|
|
|
param(
|
|
$CheckBox
|
|
)
|
|
|
|
if ($checkbox -eq "winget"){
|
|
|
|
$originalEncoding = [Console]::OutputEncoding
|
|
[Console]::OutputEncoding = [System.Text.UTF8Encoding]::new()
|
|
$Sync.InstalledPrograms = winget list -s winget | Select-Object -skip 3 | ConvertFrom-String -PropertyNames "Name", "Id", "Version", "Available" -Delimiter '\s{2,}'
|
|
[Console]::OutputEncoding = $originalEncoding
|
|
|
|
$filter = Get-WinUtilVariables -Type Checkbox | Where-Object {$psitem -like "WPFInstall*"}
|
|
$sync.GetEnumerator() | Where-Object {$psitem.Key -in $filter} | ForEach-Object {
|
|
$dependencies = @($sync.configs.applications.$($psitem.Key).winget -split ";")
|
|
|
|
if ($dependencies[-1] -in $sync.InstalledPrograms.Id) {
|
|
Write-Output $psitem.name
|
|
}
|
|
}
|
|
}
|
|
|
|
if($CheckBox -eq "tweaks"){
|
|
|
|
if(!(Test-Path 'HKU:\')){New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS}
|
|
$ScheduledTasks = Get-ScheduledTask
|
|
|
|
$sync.configs.tweaks | Get-Member -MemberType NoteProperty | ForEach-Object {
|
|
|
|
$Config = $psitem.Name
|
|
#WPFEssTweaksTele
|
|
$registryKeys = $sync.configs.tweaks.$Config.registry
|
|
$scheduledtaskKeys = $sync.configs.tweaks.$Config.scheduledtask
|
|
$serviceKeys = $sync.configs.tweaks.$Config.service
|
|
|
|
if($registryKeys -or $scheduledtaskKeys -or $serviceKeys){
|
|
$Values = @()
|
|
|
|
|
|
Foreach ($tweaks in $registryKeys){
|
|
Foreach($tweak in $tweaks){
|
|
|
|
if(test-path $tweak.Path){
|
|
$actualValue = Get-ItemProperty -Name $tweak.Name -Path $tweak.Path -ErrorAction SilentlyContinue | Select-Object -ExpandProperty $($tweak.Name)
|
|
$expectedValue = $tweak.Value
|
|
if ($expectedValue -notlike $actualValue){
|
|
$values += $False
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Foreach ($tweaks in $scheduledtaskKeys){
|
|
Foreach($tweak in $tweaks){
|
|
$task = $ScheduledTasks | Where-Object {$($psitem.TaskPath + $psitem.TaskName) -like "\$($tweak.name)"}
|
|
|
|
if($task){
|
|
$actualValue = $task.State
|
|
$expectedValue = $tweak.State
|
|
if ($expectedValue -ne $actualValue){
|
|
$values += $False
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Foreach ($tweaks in $serviceKeys){
|
|
Foreach($tweak in $tweaks){
|
|
$Service = Get-Service -Name $tweak.Name
|
|
|
|
if($Service){
|
|
$actualValue = $Service.StartType
|
|
$expectedValue = $tweak.StartupType
|
|
if ($expectedValue -ne $actualValue){
|
|
$values += $False
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if($values -notcontains $false){
|
|
Write-Output $Config
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Function Invoke-WinUtilDarkMode {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Enables/Disables Dark Mode
|
|
|
|
.PARAMETER DarkMoveEnabled
|
|
Indicates the current dark mode state
|
|
|
|
#>
|
|
Param($DarkMoveEnabled)
|
|
Try{
|
|
if ($DarkMoveEnabled -eq $false){
|
|
Write-Host "Enabling Dark Mode"
|
|
$DarkMoveValue = 0
|
|
}
|
|
else {
|
|
Write-Host "Disabling Dark Mode"
|
|
$DarkMoveValue = 1
|
|
}
|
|
|
|
$Path = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize"
|
|
Set-ItemProperty -Path $Path -Name AppsUseLightTheme -Value $DarkMoveValue
|
|
Set-ItemProperty -Path $Path -Name SystemUsesLightTheme -Value $DarkMoveValue
|
|
}
|
|
Catch [System.Security.SecurityException] {
|
|
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
|
|
}
|
|
Catch [System.Management.Automation.ItemNotFoundException] {
|
|
Write-Warning $psitem.Exception.ErrorRecord
|
|
}
|
|
Catch{
|
|
Write-Warning "Unable to set $Name due to unhandled exception"
|
|
Write-Warning $psitem.Exception.StackTrace
|
|
}
|
|
}
|
|
function Invoke-WinUtilFeatureInstall {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Converts all the values from the tweaks.json and routes them to the appropriate function
|
|
|
|
#>
|
|
|
|
param(
|
|
$CheckBox
|
|
)
|
|
|
|
$CheckBox | ForEach-Object {
|
|
if($sync.configs.feature.$psitem.feature){
|
|
Foreach( $feature in $sync.configs.feature.$psitem.feature ){
|
|
Try{
|
|
Write-Host "Installing $feature"
|
|
Enable-WindowsOptionalFeature -Online -FeatureName $feature -All -NoRestart
|
|
}
|
|
Catch{
|
|
if ($psitem.Exception.Message -like "*requires elevation*"){
|
|
Write-Warning "Unable to Install $feature due to permissions. Are you running as admin?"
|
|
}
|
|
|
|
else{
|
|
Write-Warning "Unable to Install $feature due to unhandled exception"
|
|
Write-Warning $psitem.Exception.StackTrace
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if($sync.configs.feature.$psitem.InvokeScript){
|
|
Foreach( $script in $sync.configs.feature.$psitem.InvokeScript ){
|
|
Try{
|
|
$Scriptblock = [scriptblock]::Create($script)
|
|
|
|
Write-Host "Running Script for $psitem"
|
|
Invoke-Command $scriptblock -ErrorAction stop
|
|
}
|
|
Catch{
|
|
if ($psitem.Exception.Message -like "*requires elevation*"){
|
|
Write-Warning "Unable to Install $feature due to permissions. Are you running as admin?"
|
|
}
|
|
|
|
else{
|
|
Write-Warning "Unable to Install $feature due to unhandled exception"
|
|
Write-Warning $psitem.Exception.StackTrace
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
Function Invoke-WinUtilMouseAcceleration {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Enables/Disables Mouse Acceleration
|
|
|
|
.PARAMETER DarkMoveEnabled
|
|
Indicates the current Mouse Acceleration State
|
|
|
|
#>
|
|
Param($MouseAccelerationEnabled)
|
|
Try{
|
|
if ($MouseAccelerationEnabled -eq $false){
|
|
Write-Host "Enabling Mouse Acceleration"
|
|
$MouseSpeed = 1
|
|
$MouseThreshold1 = 6
|
|
$MouseThreshold2 = 10
|
|
}
|
|
else {
|
|
Write-Host "Disabling Mouse Acceleration"
|
|
$MouseSpeed = 0
|
|
$MouseThreshold1 = 0
|
|
$MouseThreshold2 = 0
|
|
|
|
}
|
|
|
|
$Path = "HKCU:\Control Panel\Mouse"
|
|
Set-ItemProperty -Path $Path -Name MouseSpeed -Value $MouseSpeed
|
|
Set-ItemProperty -Path $Path -Name MouseThreshold1 -Value $MouseThreshold1
|
|
Set-ItemProperty -Path $Path -Name MouseThreshold2 -Value $MouseThreshold2
|
|
}
|
|
Catch [System.Security.SecurityException] {
|
|
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
|
|
}
|
|
Catch [System.Management.Automation.ItemNotFoundException] {
|
|
Write-Warning $psitem.Exception.ErrorRecord
|
|
}
|
|
Catch{
|
|
Write-Warning "Unable to set $Name due to unhandled exception"
|
|
Write-Warning $psitem.Exception.StackTrace
|
|
}
|
|
}
|
|
function Invoke-WinUtilNumLock {
|
|
<#
|
|
.SYNOPSIS
|
|
Disables/Enables NumLock on startup
|
|
.PARAMETER Enabled
|
|
Indicates whether to enable or disable Numlock on startup
|
|
#>
|
|
Param($Enabled)
|
|
Try{
|
|
if ($Enabled -eq $false){
|
|
Write-Host "Enabling Numlock on startup"
|
|
$value = 2
|
|
}
|
|
else {
|
|
Write-Host "Disabling Numlock on startup"
|
|
$value = 0
|
|
}
|
|
$Path = "HKCU:\Control Panel\Keyboard"
|
|
Set-ItemProperty -Path $Path -Name InitialKeyboardIndicators -Value $value
|
|
}
|
|
Catch [System.Security.SecurityException] {
|
|
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
|
|
}
|
|
Catch [System.Management.Automation.ItemNotFoundException] {
|
|
Write-Warning $psitem.Exception.ErrorRecord
|
|
}
|
|
Catch{
|
|
Write-Warning "Unable to set $Name due to unhandled exception"
|
|
Write-Warning $psitem.Exception.StackTrace
|
|
}
|
|
}
|
|
function Invoke-WinUtilScript {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Invokes the provided scriptblock. Intended for things that can't be handled with the other functions.
|
|
|
|
.PARAMETER Name
|
|
The name of the scriptblock being invoked
|
|
|
|
.PARAMETER scriptblock
|
|
The scriptblock to be invoked
|
|
|
|
.EXAMPLE
|
|
$Scriptblock = [scriptblock]::Create({"Write-output 'Hello World'"})
|
|
Invoke-WinUtilScript -ScriptBlock $scriptblock -Name "Hello World"
|
|
|
|
#>
|
|
param (
|
|
$Name,
|
|
[scriptblock]$scriptblock
|
|
)
|
|
|
|
Try {
|
|
Write-Host "Running Script for $name"
|
|
Invoke-Command $scriptblock -ErrorAction Stop
|
|
}
|
|
Catch [System.Management.Automation.CommandNotFoundException] {
|
|
Write-Warning "The specified command was not found."
|
|
Write-Warning $PSItem.Exception.message
|
|
}
|
|
Catch [System.Management.Automation.RuntimeException] {
|
|
Write-Warning "A runtime exception occurred."
|
|
Write-Warning $PSItem.Exception.message
|
|
}
|
|
Catch [System.Security.SecurityException] {
|
|
Write-Warning "A security exception occurred."
|
|
Write-Warning $PSItem.Exception.message
|
|
}
|
|
Catch [System.UnauthorizedAccessException] {
|
|
Write-Warning "Access denied. You do not have permission to perform this operation."
|
|
Write-Warning $PSItem.Exception.message
|
|
}
|
|
Catch {
|
|
# Generic catch block to handle any other type of exception
|
|
Write-Warning "Unable to run script for $name due to unhandled exception"
|
|
Write-Warning $psitem.Exception.StackTrace
|
|
}
|
|
|
|
}
|
|
function Invoke-WinUtilShowExt {
|
|
<#
|
|
.SYNOPSIS
|
|
Disables/Enables Show file Extentions
|
|
.PARAMETER Enabled
|
|
Indicates whether to enable or disable Show file extentions
|
|
#>
|
|
Param($Enabled)
|
|
Try{
|
|
if ($Enabled -eq $false){
|
|
Write-Host "Showing file extentions"
|
|
$value = 0
|
|
}
|
|
else {
|
|
Write-Host "hiding file extensions"
|
|
$value = 1
|
|
}
|
|
$Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
|
|
Set-ItemProperty -Path $Path -Name HideFileExt -Value $value
|
|
}
|
|
Catch [System.Security.SecurityException] {
|
|
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
|
|
}
|
|
Catch [System.Management.Automation.ItemNotFoundException] {
|
|
Write-Warning $psitem.Exception.ErrorRecord
|
|
}
|
|
Catch{
|
|
Write-Warning "Unable to set $Name due to unhandled exception"
|
|
Write-Warning $psitem.Exception.StackTrace
|
|
}
|
|
}
|
|
function Invoke-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
|
|
|
|
#>
|
|
|
|
param(
|
|
$CheckBox,
|
|
$undo = $false
|
|
)
|
|
if($undo){
|
|
$Values = @{
|
|
Registry = "OriginalValue"
|
|
ScheduledTask = "OriginalState"
|
|
Service = "OriginalType"
|
|
ScriptType = "UndoScript"
|
|
}
|
|
|
|
}
|
|
Else{
|
|
$Values = @{
|
|
Registry = "Value"
|
|
ScheduledTask = "State"
|
|
Service = "StartupType"
|
|
ScriptType = "InvokeScript"
|
|
}
|
|
}
|
|
if($sync.configs.tweaks.$CheckBox.ScheduledTask){
|
|
$sync.configs.tweaks.$CheckBox.ScheduledTask | ForEach-Object {
|
|
Set-WinUtilScheduledTask -Name $psitem.Name -State $psitem.$($values.ScheduledTask)
|
|
}
|
|
}
|
|
if($sync.configs.tweaks.$CheckBox.service){
|
|
$sync.configs.tweaks.$CheckBox.service | ForEach-Object {
|
|
Set-WinUtilService -Name $psitem.Name -StartupType $psitem.$($values.Service)
|
|
}
|
|
}
|
|
if($sync.configs.tweaks.$CheckBox.registry){
|
|
$sync.configs.tweaks.$CheckBox.registry | ForEach-Object {
|
|
Set-WinUtilRegistry -Name $psitem.Name -Path $psitem.Path -Type $psitem.Type -Value $psitem.$($values.registry)
|
|
}
|
|
}
|
|
if($sync.configs.tweaks.$CheckBox.$($values.ScriptType)){
|
|
$sync.configs.tweaks.$CheckBox.$($values.ScriptType) | ForEach-Object {
|
|
$Scriptblock = [scriptblock]::Create($psitem)
|
|
Invoke-WinUtilScript -ScriptBlock $scriptblock -Name $CheckBox
|
|
}
|
|
}
|
|
|
|
if(!$undo){
|
|
if($sync.configs.tweaks.$CheckBox.appx){
|
|
$sync.configs.tweaks.$CheckBox.appx | ForEach-Object {
|
|
Remove-WinUtilAPPX -Name $psitem
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
function Invoke-WinUtilVerboseLogon {
|
|
<#
|
|
.SYNOPSIS
|
|
Disables/Enables VerboseLogon Messages
|
|
.PARAMETER Enabled
|
|
Indicates whether to enable or disable VerboseLogon messages
|
|
#>
|
|
Param($Enabled)
|
|
Try{
|
|
if ($Enabled -eq $false){
|
|
Write-Host "Enabling Verbose Logon Messages"
|
|
$value = 1
|
|
}
|
|
else {
|
|
Write-Host "Disabling Verbose Logon Messages"
|
|
$value = 0
|
|
}
|
|
$Path = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System"
|
|
Set-ItemProperty -Path $Path -Name VerboseStatus -Value $value
|
|
}
|
|
Catch [System.Security.SecurityException] {
|
|
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
|
|
}
|
|
Catch [System.Management.Automation.ItemNotFoundException] {
|
|
Write-Warning $psitem.Exception.ErrorRecord
|
|
}
|
|
Catch{
|
|
Write-Warning "Unable to set $Name due to unhandled exception"
|
|
Write-Warning $psitem.Exception.StackTrace
|
|
}
|
|
}
|
|
function Remove-WinUtilAPPX {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Removes all APPX packages that match the given name
|
|
|
|
.PARAMETER Name
|
|
The name of the APPX package to remove
|
|
|
|
.EXAMPLE
|
|
Remove-WinUtilAPPX -Name "Microsoft.Microsoft3DViewer"
|
|
|
|
#>
|
|
param (
|
|
$Name
|
|
)
|
|
|
|
Try {
|
|
Write-Host "Removing $Name"
|
|
Get-AppxPackage "*$Name*" | Remove-AppxPackage -ErrorAction SilentlyContinue
|
|
Get-AppxProvisionedPackage -Online | Where-Object DisplayName -like "*$Name*" | Remove-AppxProvisionedPackage -Online -ErrorAction SilentlyContinue
|
|
}
|
|
Catch [System.Exception] {
|
|
if ($psitem.Exception.Message -like "*The requested operation requires elevation*") {
|
|
Write-Warning "Unable to uninstall $name due to a Security Exception"
|
|
}
|
|
else {
|
|
Write-Warning "Unable to uninstall $name due to unhandled exception"
|
|
Write-Warning $psitem.Exception.StackTrace
|
|
}
|
|
}
|
|
Catch{
|
|
Write-Warning "Unable to uninstall $name due to unhandled exception"
|
|
Write-Warning $psitem.Exception.StackTrace
|
|
}
|
|
}
|
|
function Set-WinUtilDNS {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Sets the DNS of all interfaces that are in the "Up" state. It will lookup the values from the DNS.Json file
|
|
|
|
.PARAMETER DNSProvider
|
|
The DNS provider to set the DNS server to
|
|
|
|
.EXAMPLE
|
|
Set-WinUtilDNS -DNSProvider "google"
|
|
|
|
#>
|
|
param($DNSProvider)
|
|
if($DNSProvider -eq "Default"){return}
|
|
Try{
|
|
$Adapters = Get-NetAdapter | Where-Object {$_.Status -eq "Up"}
|
|
Write-Host "Ensuring DNS is set to $DNSProvider on the following interfaces"
|
|
Write-Host $($Adapters | Out-String)
|
|
|
|
Foreach ($Adapter in $Adapters){
|
|
if($DNSProvider -eq "DHCP"){
|
|
Set-DnsClientServerAddress -InterfaceIndex $Adapter.ifIndex -ResetServerAddresses
|
|
}
|
|
Else{
|
|
Set-DnsClientServerAddress -InterfaceIndex $Adapter.ifIndex -ServerAddresses ("$($sync.configs.dns.$DNSProvider.Primary)", "$($sync.configs.dns.$DNSProvider.Secondary)")
|
|
}
|
|
}
|
|
}
|
|
Catch{
|
|
Write-Warning "Unable to set DNS Provider due to an unhandled exception"
|
|
Write-Warning $psitem.Exception.StackTrace
|
|
}
|
|
}
|
|
function Set-WinUtilRegistry {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Modifies the registry based on the given inputs
|
|
|
|
.PARAMETER Name
|
|
The name of the key to modify
|
|
|
|
.PARAMETER Path
|
|
The path to the key
|
|
|
|
.PARAMETER Type
|
|
The type of value to set the key to
|
|
|
|
.PARAMETER Value
|
|
The value to set the key to
|
|
|
|
.EXAMPLE
|
|
Set-WinUtilRegistry -Name "PublishUserActivities" -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" -Type "DWord" -Value "0"
|
|
|
|
#>
|
|
param (
|
|
$Name,
|
|
$Path,
|
|
$Type,
|
|
$Value
|
|
)
|
|
|
|
Try{
|
|
if(!(Test-Path 'HKU:\')){New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS}
|
|
|
|
If (!(Test-Path $Path)) {
|
|
Write-Host "$Path was not found, Creating..."
|
|
New-Item -Path $Path -Force -ErrorAction Stop | Out-Null
|
|
}
|
|
|
|
Write-Host "Set $Path\$Name to $Value"
|
|
Set-ItemProperty -Path $Path -Name $Name -Type $Type -Value $Value -Force -ErrorAction Stop | Out-Null
|
|
}
|
|
Catch [System.Security.SecurityException] {
|
|
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
|
|
}
|
|
Catch [System.Management.Automation.ItemNotFoundException] {
|
|
Write-Warning $psitem.Exception.ErrorRecord
|
|
}
|
|
Catch{
|
|
Write-Warning "Unable to set $Name due to unhandled exception"
|
|
Write-Warning $psitem.Exception.StackTrace
|
|
}
|
|
}
|
|
function Set-WinUtilScheduledTask {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Enables/Disables the provided Scheduled Task
|
|
|
|
.PARAMETER Name
|
|
The path to the Scheduled Task
|
|
|
|
.PARAMETER State
|
|
The State to set the Task to
|
|
|
|
.EXAMPLE
|
|
Set-WinUtilScheduledTask -Name "Microsoft\Windows\Application Experience\Microsoft Compatibility Appraiser" -State "Disabled"
|
|
|
|
#>
|
|
param (
|
|
$Name,
|
|
$State
|
|
)
|
|
|
|
Try{
|
|
if($State -eq "Disabled"){
|
|
Write-Host "Disabling Scheduled Task $Name"
|
|
Disable-ScheduledTask -TaskName $Name -ErrorAction Stop
|
|
}
|
|
if($State -eq "Enabled"){
|
|
Write-Host "Enabling Scheduled Task $Name"
|
|
Enable-ScheduledTask -TaskName $Name -ErrorAction Stop
|
|
}
|
|
}
|
|
Catch [System.Exception]{
|
|
if($psitem.Exception.Message -like "*The system cannot find the file specified*"){
|
|
Write-Warning "Scheduled Task $name was not Found"
|
|
}
|
|
Else{
|
|
Write-Warning "Unable to set $Name due to unhandled exception"
|
|
Write-Warning $psitem.Exception.Message
|
|
}
|
|
}
|
|
Catch{
|
|
Write-Warning "Unable to run script for $name due to unhandled exception"
|
|
Write-Warning $psitem.Exception.StackTrace
|
|
}
|
|
}
|
|
Function Set-WinUtilService {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Changes the startup type of the given service
|
|
|
|
.PARAMETER Name
|
|
The name of the service to modify
|
|
|
|
.PARAMETER StartupType
|
|
The startup type to set the service to
|
|
|
|
.EXAMPLE
|
|
Set-WinUtilService -Name "HomeGroupListener" -StartupType "Manual"
|
|
|
|
#>
|
|
param (
|
|
$Name,
|
|
$StartupType
|
|
)
|
|
try {
|
|
Write-Host "Setting Service $Name to $StartupType"
|
|
|
|
# Check if the service exists
|
|
$service = Get-Service -Name $Name -ErrorAction Stop
|
|
|
|
# Service exists, proceed with changing properties
|
|
$service | Set-Service -StartupType $StartupType -ErrorAction Stop
|
|
}
|
|
catch [System.ServiceProcess.ServiceNotFoundException] {
|
|
Write-Warning "Service $Name was not found"
|
|
}
|
|
catch {
|
|
Write-Warning "Unable to set $Name due to unhandled exception"
|
|
Write-Warning $_.Exception.Message
|
|
}
|
|
|
|
}
|
|
function Set-WinUtilUITheme {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Sets the theme of the XAML file
|
|
|
|
.PARAMETER inputXML
|
|
A string representing the XAML object to modify
|
|
|
|
.PARAMETER themeName
|
|
The name of the theme to set the XAML to. Defaults to 'matrix'
|
|
|
|
.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 {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Checks if Winget and/or Choco are installed
|
|
|
|
.PARAMETER winget
|
|
Check if Winget is installed
|
|
|
|
.PARAMETER choco
|
|
Check if Chocolatey is installed
|
|
|
|
#>
|
|
|
|
Param(
|
|
[System.Management.Automation.SwitchParameter]$winget,
|
|
[System.Management.Automation.SwitchParameter]$choco
|
|
)
|
|
|
|
if($winget){
|
|
if (Test-Path ~\AppData\Local\Microsoft\WindowsApps\winget.exe) {
|
|
return $true
|
|
}
|
|
}
|
|
|
|
if($choco){
|
|
if ((Get-Command -Name choco -ErrorAction Ignore) -and ($chocoVersion = (Get-Item "$env:ChocolateyInstall\choco.exe" -ErrorAction Ignore).VersionInfo.ProductVersion)){
|
|
return $true
|
|
}
|
|
}
|
|
|
|
return $false
|
|
}
|
|
Function Update-WinUtilProgramWinget {
|
|
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
This will update all programs using Winget
|
|
|
|
#>
|
|
|
|
[ScriptBlock]$wingetinstall = {
|
|
|
|
$host.ui.RawUI.WindowTitle = """Winget Install"""
|
|
|
|
Start-Transcript $ENV:TEMP\winget-update.log -Append
|
|
winget upgrade --all
|
|
|
|
Pause
|
|
}
|
|
|
|
$global:WinGetInstall = Start-Process -Verb runas powershell -ArgumentList "-command invoke-command -scriptblock {$wingetinstall} -argumentlist '$($ProgramsToInstall -join ",")'" -PassThru
|
|
|
|
}
|
|
function Invoke-WPFButton {
|
|
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Invokes the function associated with the clicked button
|
|
|
|
.PARAMETER Button
|
|
The name of the button that was clicked
|
|
|
|
#>
|
|
|
|
Param ([string]$Button)
|
|
|
|
# Use this to get the name of the button
|
|
#[System.Windows.MessageBox]::Show("$Button","Chris Titus Tech's Windows Utility","OK","Info")
|
|
|
|
Switch -Wildcard ($Button){
|
|
|
|
"WPFTab?BT" {Invoke-WPFTab $Button}
|
|
"WPFinstall" {Invoke-WPFInstall}
|
|
"WPFuninstall" {Invoke-WPFUnInstall}
|
|
"WPFInstallUpgrade" {Invoke-WPFInstallUpgrade}
|
|
"WPFdesktop" {Invoke-WPFPresets "Desktop"}
|
|
"WPFlaptop" {Invoke-WPFPresets "laptop"}
|
|
"WPFminimal" {Invoke-WPFPresets "minimal"}
|
|
"WPFexport" {Invoke-WPFImpex -type "export" -CheckBox "WPFTweaks"}
|
|
"WPFimport" {Invoke-WPFImpex -type "import" -CheckBox "WPFTweaks"}
|
|
"WPFexportWinget" {Invoke-WPFImpex -type "export" -CheckBox "WPFInstall"}
|
|
"WPFimportWinget" {Invoke-WPFImpex -type "import" -CheckBox "WPFInstall"}
|
|
"WPFclear" {Invoke-WPFPresets -preset $null -imported $true}
|
|
"WPFclearWinget" {Invoke-WPFPresets -preset $null -imported $true -CheckBox "WPFInstall"}
|
|
"WPFtweaksbutton" {Invoke-WPFtweaksbutton}
|
|
"WPFAddUltPerf" {Invoke-WPFUltimatePerformance -State "Enabled"}
|
|
"WPFRemoveUltPerf" {Invoke-WPFUltimatePerformance -State "Disabled"}
|
|
"WPFundoall" {Invoke-WPFundoall}
|
|
"WPFFeatureInstall" {Invoke-WPFFeatureInstall}
|
|
"WPFPanelDISM" {Invoke-WPFPanelDISM}
|
|
"WPFPanelAutologin" {Invoke-WPFPanelAutologin}
|
|
"WPFPanelcontrol" {Invoke-WPFControlPanel -Panel $button}
|
|
"WPFPanelnetwork" {Invoke-WPFControlPanel -Panel $button}
|
|
"WPFPanelpower" {Invoke-WPFControlPanel -Panel $button}
|
|
"WPFPanelregion" {Invoke-WPFControlPanel -Panel $button}
|
|
"WPFPanelsound" {Invoke-WPFControlPanel -Panel $button}
|
|
"WPFPanelsystem" {Invoke-WPFControlPanel -Panel $button}
|
|
"WPFPaneluser" {Invoke-WPFControlPanel -Panel $button}
|
|
"WPFUpdatesdefault" {Invoke-WPFUpdatesdefault}
|
|
"WPFFixesUpdate" {Invoke-WPFFixesUpdate}
|
|
"WPFFixesWinget" {Invoke-WPFFixesWinget}
|
|
"WPFFixesNetwork" {Invoke-WPFFixesNetwork}
|
|
"WPFUpdatesdisable" {Invoke-WPFUpdatesdisable}
|
|
"WPFUpdatessecurity" {Invoke-WPFUpdatessecurity}
|
|
"WPFWinUtilShortcut" {Invoke-WPFShortcut -ShortcutToAdd "WinUtil"}
|
|
"WPFGetInstalled" {Invoke-WPFGetInstalled -CheckBox "winget"}
|
|
"WPFGetInstalledTweaks" {Invoke-WPFGetInstalled -CheckBox "tweaks"}
|
|
"WPFGetIso" {Invoke-WPFGetIso}
|
|
"WPFMicrowin" {Invoke-WPFMicrowin}
|
|
"WPFCloseButton" {Invoke-WPFCloseButton}
|
|
}
|
|
}
|
|
function Invoke-WPFCloseButton {
|
|
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Close application
|
|
|
|
.PARAMETER Button
|
|
#>
|
|
$sync["Form"].Close()
|
|
Write-Host "Bye bye!"
|
|
}
|
|
function Invoke-WPFControlPanel {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Opens the requested legacy panel
|
|
|
|
.PARAMETER Panel
|
|
The panel to open
|
|
|
|
#>
|
|
param($Panel)
|
|
|
|
switch ($Panel){
|
|
"WPFPanelcontrol" {cmd /c control}
|
|
"WPFPanelnetwork" {cmd /c ncpa.cpl}
|
|
"WPFPanelpower" {cmd /c powercfg.cpl}
|
|
"WPFPanelregion" {cmd /c intl.cpl}
|
|
"WPFPanelsound" {cmd /c mmsys.cpl}
|
|
"WPFPanelsystem" {cmd /c sysdm.cpl}
|
|
"WPFPaneluser" {cmd /c "control userpasswords2"}
|
|
}
|
|
}
|
|
function Invoke-WPFFeatureInstall {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Installs selected Windows Features
|
|
|
|
#>
|
|
|
|
if($sync.ProcessRunning){
|
|
$msg = "Install process is currently running."
|
|
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
|
|
return
|
|
}
|
|
|
|
$Features = Get-WinUtilCheckBoxes -Group "WPFFeature"
|
|
|
|
Invoke-WPFRunspace -ArgumentList $Features -ScriptBlock {
|
|
param($Features)
|
|
|
|
$sync.ProcessRunning = $true
|
|
|
|
Invoke-WinUtilFeatureInstall $Features
|
|
|
|
$sync.ProcessRunning = $false
|
|
Write-Host "==================================="
|
|
Write-Host "--- Features are Installed ---"
|
|
Write-Host "--- A Reboot may be required ---"
|
|
Write-Host "==================================="
|
|
|
|
$ButtonType = [System.Windows.MessageBoxButton]::OK
|
|
$MessageboxTitle = "All features are now installed "
|
|
$Messageboxbody = ("Done")
|
|
$MessageIcon = [System.Windows.MessageBoxImage]::Information
|
|
|
|
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
|
|
}
|
|
}
|
|
function Invoke-WPFFixesNetwork {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Resets various network configurations
|
|
|
|
#>
|
|
|
|
Write-Host "Resetting Network with netsh"
|
|
|
|
# Reset WinSock catalog to a clean state
|
|
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "winsock", "reset"
|
|
# Resets WinHTTP proxy setting to DIRECT
|
|
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "winhttp", "reset", "proxy"
|
|
# Removes all user configured IP settings
|
|
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "int", "ip", "reset"
|
|
|
|
Write-Host "Process complete. Please reboot your computer."
|
|
|
|
$ButtonType = [System.Windows.MessageBoxButton]::OK
|
|
$MessageboxTitle = "Network Reset "
|
|
$Messageboxbody = ("Stock settings loaded.`n Please reboot your computer")
|
|
$MessageIcon = [System.Windows.MessageBoxImage]::Information
|
|
|
|
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
|
|
Write-Host "=========================================="
|
|
Write-Host "-- Network Configuration has been Reset --"
|
|
Write-Host "=========================================="
|
|
}
|
|
function Invoke-WPFFixesUpdate {
|
|
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Performs various tasks in an attempt to repair Windows Update
|
|
|
|
#>
|
|
|
|
# Reset Windows Update Script - reregister dlls, services, and remove registry entries
|
|
Write-Host "1. Stopping Windows Update Services..."
|
|
Stop-Service -Name BITS
|
|
Stop-Service -Name wuauserv
|
|
Stop-Service -Name appidsvc
|
|
Stop-Service -Name cryptsvc
|
|
Write-Host "2. Remove QMGR Data file..."
|
|
Remove-Item "$env:allusersprofile\Application Data\Microsoft\Network\Downloader\qmgr*.dat" -ErrorAction SilentlyContinue
|
|
|
|
Write-Host "3. Renaming the Software Distribution and CatRoot Folder..."
|
|
Rename-Item $env:systemroot\SoftwareDistribution SoftwareDistribution.bak -ErrorAction SilentlyContinue
|
|
Rename-Item $env:systemroot\System32\Catroot2 catroot2.bak -ErrorAction SilentlyContinue
|
|
|
|
Write-Host "4. Removing old Windows Update log..."
|
|
Remove-Item $env:systemroot\WindowsUpdate.log -ErrorAction SilentlyContinue
|
|
|
|
Write-Host "5. Resetting the Windows Update Services to default settings..."
|
|
Start-Process -NoNewWindow -FilePath "sc.exe" -ArgumentList "sdset", "bits", "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)"
|
|
Start-Process -NoNewWindow -FilePath "sc.exe" -ArgumentList "sdset", "wuauserv", "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)"
|
|
Set-Location $env:systemroot\system32
|
|
|
|
Write-Host "6. Registering some DLLs..."
|
|
$DLLs = @(
|
|
"atl.dll", "urlmon.dll", "mshtml.dll", "shdocvw.dll", "browseui.dll",
|
|
"jscript.dll", "vbscript.dll", "scrrun.dll", "msxml.dll", "msxml3.dll",
|
|
"msxml6.dll", "actxprxy.dll", "softpub.dll", "wintrust.dll", "dssenh.dll",
|
|
"rsaenh.dll", "gpkcsp.dll", "sccbase.dll", "slbcsp.dll", "cryptdlg.dll",
|
|
"oleaut32.dll", "ole32.dll", "shell32.dll", "initpki.dll", "wuapi.dll",
|
|
"wuaueng.dll", "wuaueng1.dll", "wucltui.dll", "wups.dll", "wups2.dll",
|
|
"wuweb.dll", "qmgr.dll", "qmgrprxy.dll", "wucltux.dll", "muweb.dll", "wuwebv.dll"
|
|
)
|
|
foreach ($dll in $DLLs) {
|
|
Start-Process -NoNewWindow -FilePath "regsvr32.exe" -ArgumentList "/s", $dll
|
|
}
|
|
|
|
Write-Host "7) Removing WSUS client settings..."
|
|
if (Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate") {
|
|
Start-Process -NoNewWindow -FilePath "REG" -ArgumentList "DELETE", "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate", "/v", "AccountDomainSid", "/f"
|
|
Start-Process -NoNewWindow -FilePath "REG" -ArgumentList "DELETE", "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate", "/v", "PingID", "/f"
|
|
Start-Process -NoNewWindow -FilePath "REG" -ArgumentList "DELETE", "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate", "/v", "SusClientId", "/f"
|
|
}
|
|
|
|
Write-Host "8) Resetting the WinSock..."
|
|
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "winsock", "reset"
|
|
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "winhttp", "reset", "proxy"
|
|
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "int", "ip", "reset"
|
|
|
|
Write-Host "9) Delete all BITS jobs..."
|
|
Get-BitsTransfer | Remove-BitsTransfer
|
|
|
|
Write-Host "10) Attempting to install the Windows Update Agent..."
|
|
If ([System.Environment]::Is64BitOperatingSystem) {
|
|
Start-Process -NoNewWindow -FilePath "wusa" -ArgumentList "Windows8-RT-KB2937636-x64", "/quiet"
|
|
}
|
|
else {
|
|
Start-Process -NoNewWindow -FilePath "wusa" -ArgumentList "Windows8-RT-KB2937636-x86", "/quiet"
|
|
}
|
|
|
|
Write-Host "11) Starting Windows Update Services..."
|
|
Start-Service -Name BITS
|
|
Start-Service -Name wuauserv
|
|
Start-Service -Name appidsvc
|
|
Start-Service -Name cryptsvc
|
|
|
|
Write-Host "12) Forcing discovery..."
|
|
Start-Process -NoNewWindow -FilePath "wuauclt" -ArgumentList "/resetauthorization", "/detectnow"
|
|
|
|
|
|
Write-Host "Process complete. Please reboot your computer."
|
|
|
|
$ButtonType = [System.Windows.MessageBoxButton]::OK
|
|
$MessageboxTitle = "Reset Windows Update "
|
|
$Messageboxbody = ("Stock settings loaded.`n Please reboot your computer")
|
|
$MessageIcon = [System.Windows.MessageBoxImage]::Information
|
|
|
|
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
|
|
Write-Host "==============================================="
|
|
Write-Host "-- Reset All Windows Update Settings to Stock -"
|
|
Write-Host "==============================================="
|
|
}
|
|
function Invoke-WPFFixesWinget {
|
|
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Fixes Winget by running choco install winget
|
|
.DESCRIPTION
|
|
BravoNorris for the fantastic idea of a button to reinstall winget
|
|
#>
|
|
|
|
Start-Process -FilePath "choco" -ArgumentList "install winget -y" -NoNewWindow -Wait
|
|
|
|
}
|
|
Function Invoke-WPFFormVariables {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Prints the logo
|
|
|
|
#>
|
|
#If ($global:ReadmeDisplay -ne $true) { Write-Host "If you need to reference this display again, run Get-FormVariables" -ForegroundColor Yellow; $global:ReadmeDisplay = $true }
|
|
|
|
|
|
Write-Host ""
|
|
Write-Host " CCCCCCCCCCCCCTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT "
|
|
Write-Host " CCC::::::::::::CT:::::::::::::::::::::TT:::::::::::::::::::::T "
|
|
Write-Host "CC:::::::::::::::CT:::::::::::::::::::::TT:::::::::::::::::::::T "
|
|
Write-Host "C:::::CCCCCCCC::::CT:::::TT:::::::TT:::::TT:::::TT:::::::TT:::::T "
|
|
Write-Host "C:::::C CCCCCCTTTTTT T:::::T TTTTTTTTTTTT T:::::T TTTTTT"
|
|
Write-Host "C:::::C T:::::T T:::::T "
|
|
Write-Host "C:::::C T:::::T T:::::T "
|
|
Write-Host "C:::::C T:::::T T:::::T "
|
|
Write-Host "C:::::C T:::::T T:::::T "
|
|
Write-Host "C:::::C T:::::T T:::::T "
|
|
Write-Host "C:::::C T:::::T T:::::T "
|
|
Write-Host "C:::::C CCCCCC T:::::T T:::::T "
|
|
Write-Host "C:::::CCCCCCCC::::C TT:::::::TT TT:::::::TT "
|
|
Write-Host "CC:::::::::::::::C T:::::::::T T:::::::::T "
|
|
Write-Host "CCC::::::::::::C T:::::::::T T:::::::::T "
|
|
Write-Host " CCCCCCCCCCCCC TTTTTTTTTTT TTTTTTTTTTT "
|
|
Write-Host ""
|
|
Write-Host "====Chris Titus Tech====="
|
|
Write-Host "=====Windows Toolbox====="
|
|
|
|
#====DEBUG GUI Elements====
|
|
|
|
#Write-Host "Found the following interactable elements from our form" -ForegroundColor Cyan
|
|
#get-variable WPF*
|
|
}
|
|
function Invoke-WPFGetInstalled {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Invokes the function that gets the checkboxes to check in a new runspace
|
|
|
|
.PARAMETER checkbox
|
|
Indicates whether to check for installed 'winget' programs or applied 'tweaks'
|
|
|
|
#>
|
|
param($checkbox)
|
|
|
|
if($sync.ProcessRunning){
|
|
$msg = "Install process is currently running."
|
|
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
|
|
return
|
|
}
|
|
|
|
if(!(Test-WinUtilPackageManager -winget) -and $checkbox -eq "winget"){
|
|
Write-Host "==========================================="
|
|
Write-Host "-- Winget is not installed ---"
|
|
Write-Host "==========================================="
|
|
return
|
|
}
|
|
|
|
Invoke-WPFRunspace -ArgumentList $checkbox -ScriptBlock {
|
|
param($checkbox)
|
|
|
|
$sync.ProcessRunning = $true
|
|
|
|
if($checkbox -eq "winget"){
|
|
Write-Host "Getting Installed Programs..."
|
|
}
|
|
if($checkbox -eq "tweaks"){
|
|
Write-Host "Getting Installed Tweaks..."
|
|
}
|
|
|
|
$Checkboxes = Invoke-WinUtilCurrentSystem -CheckBox $checkbox
|
|
|
|
$sync.form.Dispatcher.invoke({
|
|
foreach($checkbox in $Checkboxes){
|
|
$sync.$checkbox.ischecked = $True
|
|
}
|
|
})
|
|
|
|
Write-Host "Done..."
|
|
$sync.ProcessRunning = $false
|
|
}
|
|
}
|
|
function Invoke-WPFGetIso {
|
|
<#
|
|
.DESCRIPTION
|
|
Function to get the path to Iso file for MicroWin, unpack that isom=, read basic information and populate the UI Options
|
|
#>
|
|
|
|
Write-Host "Invoking WPFGetIso"
|
|
|
|
if($sync.ProcessRunning){
|
|
$msg = "GetIso process is currently running."
|
|
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
|
|
return
|
|
}
|
|
|
|
Write-Host " _ __ __ _ "
|
|
Write-Host " /\/\ (_) ___ _ __ ___ / / /\ \ \(_) _ __ "
|
|
Write-Host " / \ | | / __|| '__| / _ \ \ \/ \/ /| || '_ \ "
|
|
Write-Host "/ /\/\ \| || (__ | | | (_) | \ /\ / | || | | | "
|
|
Write-Host "\/ \/|_| \___||_| \___/ \/ \/ |_||_| |_| "
|
|
|
|
$oscdimgPath = Join-Path $env:TEMP 'oscdimg.exe'
|
|
$oscdImgFound = [bool] (Get-Command -ErrorAction Ignore -Type Application oscdimg.exe) -or (Test-Path $oscdimgPath -PathType Leaf)
|
|
Write-Host "oscdimg.exe on system: $oscdImgFound"
|
|
|
|
if (!$oscdImgFound)
|
|
{
|
|
$downloadFromGitHub = $sync.WPFMicrowinDownloadFromGitHub.IsChecked
|
|
|
|
if (!$downloadFromGitHub)
|
|
{
|
|
# only show the message to people who did check the box to download from github, if you check the box
|
|
# you consent to downloading it, no need to show extra dialogs
|
|
[System.Windows.MessageBox]::Show("oscdimge.exe is not found on the system, winutil will now attempt do download and install it using choco. This might take a long time.")
|
|
# the step below needs choco to download oscdimg
|
|
$chocoFound = [bool] (Get-Command -ErrorAction Ignore -Type Application choco)
|
|
Write-Host "choco on system: $chocoFound"
|
|
if (!$chocoFound)
|
|
{
|
|
[System.Windows.MessageBox]::Show("choco.exe is not found on the system, you need choco to download oscdimg.exe")
|
|
return
|
|
}
|
|
|
|
Start-Process -Verb runas -FilePath powershell.exe -ArgumentList "choco install windows-adk-oscdimg"
|
|
[System.Windows.MessageBox]::Show("oscdimg is installed, now close, reopen PowerShell terminal and re-launch winutil.ps1")
|
|
return
|
|
}
|
|
else {
|
|
[System.Windows.MessageBox]::Show("oscdimge.exe is not found on the system, winutil will now attempt do download and install it from github. This might take a long time.")
|
|
Get-Oscdimg -oscdimgPath $oscdimgPath
|
|
$oscdImgFound = Test-Path $oscdimgPath -PathType Leaf
|
|
if (!$oscdImgFound) {
|
|
$msg = "oscdimg was not downloaded can not proceed"
|
|
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Error)
|
|
return
|
|
}
|
|
else {
|
|
Write-Host "oscdimg.exe was successfully downloaded from github"
|
|
}
|
|
}
|
|
}
|
|
|
|
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null
|
|
$openFileDialog = New-Object System.Windows.Forms.OpenFileDialog
|
|
$openFileDialog.initialDirectory = $initialDirectory
|
|
$openFileDialog.filter = "ISO files (*.iso)| *.iso"
|
|
$openFileDialog.ShowDialog() | Out-Null
|
|
$filePath = $openFileDialog.FileName
|
|
|
|
if ([string]::IsNullOrEmpty($filePath))
|
|
{
|
|
Write-Host "No ISO is chosen"
|
|
return
|
|
}
|
|
|
|
Write-Host "File path $($filePath)"
|
|
if (-not (Test-Path -Path $filePath -PathType Leaf))
|
|
{
|
|
$msg = "File you've chosen doesn't exist"
|
|
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Error)
|
|
return
|
|
}
|
|
|
|
try {
|
|
Write-Host "Mounting Iso. Please wait."
|
|
$mountedISO = Mount-DiskImage -PassThru "$filePath"
|
|
Write-Host "Done mounting Iso $mountedISO"
|
|
$driveLetter = (Get-Volume -DiskImage $mountedISO).DriveLetter
|
|
Write-Host "Iso mounted to '$driveLetter'"
|
|
} catch {
|
|
# @ChrisTitusTech please copy this wiki and change the link below to your copy of the wiki
|
|
Write-Error "Failed to mount the image. Error: $($_.Exception.Message)"
|
|
Write-Error "This is NOT winutil's problem, your ISO might be corrupt, or there is a problem on the system"
|
|
Write-Error "Please refer to this wiki for more details https://github.com/KonTy/winutil/wiki/Error-in-Winutil-MicroWin-during-ISO-mounting"
|
|
return
|
|
}
|
|
# storing off values in hidden fields for further steps
|
|
# there is probably a better way of doing this, I don't have time to figure this out
|
|
$sync.MicrowinIsoDrive.Text = $driveLetter
|
|
|
|
Write-Host "Setting up mount dir and scratch dirs"
|
|
$timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
|
|
$randomNumber = Get-Random -Minimum 1 -Maximum 9999
|
|
$randomMicrowin = "Microwin_${timestamp}_${randomNumber}"
|
|
$randomMicrowinScratch = "MicrowinScratch_${timestamp}_${randomNumber}"
|
|
$mountDir = Join-Path $env:TEMP $randomMicrowin
|
|
$scratchDir = Join-Path $env:TEMP $randomMicrowinScratch
|
|
$sync.MicrowinMountDir.Text = $mountDir
|
|
$sync.MicrowinScratchDir.Text = $scratchDir
|
|
Write-Host "Done setting up mount dir and scratch dirs"
|
|
Write-Host "Scratch dir is $scratchDir"
|
|
Write-Host "Image dir is $mountDir"
|
|
|
|
try {
|
|
|
|
#$data = @($driveLetter, $filePath)
|
|
New-Item -ItemType Directory -Force -Path "$($mountDir)" | Out-Null
|
|
New-Item -ItemType Directory -Force -Path "$($scratchDir)" | Out-Null
|
|
Write-Host "Copying Windows image. This will take awhile, please don't use UI or cancel this step!"
|
|
|
|
# xcopy we can verify files and also not copy files that already exist, but hard to measure
|
|
# xcopy.exe /E /I /H /R /Y /J $DriveLetter":" $mountDir >$null
|
|
$totalTime = Measure-Command { Copy-Files "$($driveLetter):" $mountDir -Recurse -Force }
|
|
Write-Host "Copy complete! Total Time: $($totalTime.Minutes)m$($totalTime.Seconds)s"
|
|
|
|
$wimFile = "$mountDir\sources\install.wim"
|
|
Write-Host "Getting image information $wimFile"
|
|
|
|
if (-not (Test-Path -Path $wimFile -PathType Leaf))
|
|
{
|
|
$msg = "Install.wim file doesn't exist in the image, this could happen if you use unofficial Windows images, or a Media creation tool, which creates a final image that can not be modified. Please don't use shady images from the internet, use only official images. Here are instructions how to download ISO images if the Microsoft website is not showing the link to download and ISO. https://www.techrepublic.com/article/how-to-download-a-windows-10-iso-file-without-using-the-media-creation-tool/"
|
|
Write-Host $msg
|
|
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Error)
|
|
throw
|
|
}
|
|
Get-WindowsImage -ImagePath $wimFile | ForEach-Object {
|
|
$imageIdx = $_.ImageIndex
|
|
$imageName = $_.ImageName
|
|
$sync.MicrowinWindowsFlavors.Items.Add("$imageIdx : $imageName")
|
|
}
|
|
$sync.MicrowinWindowsFlavors.SelectedIndex = 0
|
|
Get-Volume $driveLetter | Get-DiskImage | Dismount-DiskImage
|
|
Write-Host "Selected value '$($sync.MicrowinWindowsFlavors.SelectedValue)'....."
|
|
|
|
$sync.MicrowinOptionsPanel.Visibility = 'Visible'
|
|
} catch {
|
|
Write-Host "Dismounting bad image..."
|
|
Get-Volume $driveLetter | Get-DiskImage | Dismount-DiskImage
|
|
Remove-Item -Recurse -Force "$($scratchDir)"
|
|
Remove-Item -Recurse -Force "$($mountDir)"
|
|
}
|
|
|
|
Write-Host "Done reading and unpacking ISO"
|
|
Write-Host ""
|
|
Write-Host "*********************************"
|
|
Write-Host "Check the UI for further steps!!!"
|
|
|
|
$sync.ProcessRunning = $false
|
|
}
|
|
|
|
|
|
function Invoke-WPFImpex {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Handles importing and exporting of the checkboxes checked for the tweaks section
|
|
|
|
.PARAMETER type
|
|
Indicates whether to 'import' or 'export'
|
|
|
|
.PARAMETER checkbox
|
|
The checkbox to export to a file or apply the imported file to
|
|
|
|
.EXAMPLE
|
|
Invoke-WPFImpex -type "export"
|
|
|
|
#>
|
|
param(
|
|
$type,
|
|
$checkbox
|
|
)
|
|
|
|
if ($type -eq "export"){
|
|
$FileBrowser = New-Object System.Windows.Forms.SaveFileDialog
|
|
}
|
|
if ($type -eq "import"){
|
|
$FileBrowser = New-Object System.Windows.Forms.OpenFileDialog
|
|
}
|
|
|
|
$FileBrowser.InitialDirectory = [Environment]::GetFolderPath('Desktop')
|
|
$FileBrowser.Filter = "JSON Files (*.json)|*.json"
|
|
$FileBrowser.ShowDialog() | Out-Null
|
|
|
|
if($FileBrowser.FileName -eq ""){
|
|
return
|
|
}
|
|
|
|
if ($type -eq "export"){
|
|
$jsonFile = Get-WinUtilCheckBoxes $checkbox -unCheck $false
|
|
$jsonFile | ConvertTo-Json | Out-File $FileBrowser.FileName -Force
|
|
}
|
|
if ($type -eq "import"){
|
|
$jsonFile = Get-Content $FileBrowser.FileName | ConvertFrom-Json
|
|
Invoke-WPFPresets -preset $jsonFile -imported $true -CheckBox $checkbox
|
|
}
|
|
}
|
|
function Invoke-WPFInstall {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Installs the selected programs using winget
|
|
|
|
#>
|
|
|
|
if($sync.ProcessRunning){
|
|
$msg = "Install process is currently running."
|
|
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
|
|
return
|
|
}
|
|
|
|
$WingetInstall = Get-WinUtilCheckBoxes -Group "WPFInstall"
|
|
|
|
if ($wingetinstall.Count -eq 0) {
|
|
$WarningMsg = "Please select the program(s) to install"
|
|
[System.Windows.MessageBox]::Show($WarningMsg, $AppTitle, [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
|
|
return
|
|
}
|
|
|
|
Invoke-WPFRunspace -ArgumentList $WingetInstall -scriptblock {
|
|
param($WingetInstall)
|
|
try{
|
|
$sync.ProcessRunning = $true
|
|
|
|
# Ensure winget is installed
|
|
Install-WinUtilWinget
|
|
|
|
# Install all selected programs in new window
|
|
Install-WinUtilProgramWinget -ProgramsToInstall $WingetInstall
|
|
|
|
$ButtonType = [System.Windows.MessageBoxButton]::OK
|
|
$MessageboxTitle = "Installs are Finished "
|
|
$Messageboxbody = ("Done")
|
|
$MessageIcon = [System.Windows.MessageBoxImage]::Information
|
|
|
|
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
|
|
|
|
Write-Host "==========================================="
|
|
Write-Host "-- Installs have finished ---"
|
|
Write-Host "==========================================="
|
|
}
|
|
Catch {
|
|
Write-Host "==========================================="
|
|
Write-Host "-- Winget failed to install ---"
|
|
Write-Host "==========================================="
|
|
}
|
|
$sync.ProcessRunning = $False
|
|
}
|
|
}
|
|
function Invoke-WPFInstallUpgrade {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Invokes the function that upgrades all installed programs using winget
|
|
|
|
#>
|
|
if(!(Test-WinUtilPackageManager -winget)){
|
|
Write-Host "==========================================="
|
|
Write-Host "-- Winget is not installed ---"
|
|
Write-Host "==========================================="
|
|
return
|
|
}
|
|
|
|
if(Get-WinUtilInstallerProcess -Process $global:WinGetInstall){
|
|
$msg = "Install process is currently running. Please check for a powershell window labeled 'Winget Install'"
|
|
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
|
|
return
|
|
}
|
|
|
|
Update-WinUtilProgramWinget
|
|
|
|
Write-Host "==========================================="
|
|
Write-Host "-- Updates started ---"
|
|
Write-Host "-- You can close this window if desired ---"
|
|
Write-Host "==========================================="
|
|
}
|
|
function Invoke-WPFMicrowin {
|
|
<#
|
|
.DESCRIPTION
|
|
Invoke MicroWin routines...
|
|
#>
|
|
|
|
if($sync.ProcessRunning) {
|
|
$msg = "GetIso process is currently running."
|
|
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
|
|
return
|
|
}
|
|
|
|
# Define the constants for Windows API
|
|
Add-Type @"
|
|
using System;
|
|
using System.Runtime.InteropServices;
|
|
|
|
public class PowerManagement {
|
|
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
|
public static extern EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE esFlags);
|
|
|
|
[FlagsAttribute]
|
|
public enum EXECUTION_STATE : uint {
|
|
ES_SYSTEM_REQUIRED = 0x00000001,
|
|
ES_DISPLAY_REQUIRED = 0x00000002,
|
|
ES_CONTINUOUS = 0x80000000,
|
|
}
|
|
}
|
|
"@
|
|
|
|
# Prevent the machine from sleeping
|
|
[PowerManagement]::SetThreadExecutionState([PowerManagement]::EXECUTION_STATE::ES_CONTINUOUS -bor [PowerManagement]::EXECUTION_STATE::ES_SYSTEM_REQUIRED -bor [PowerManagement]::EXECUTION_STATE::ES_DISPLAY_REQUIRED)
|
|
|
|
# Ask the user where to save the file
|
|
$SaveDialog = New-Object System.Windows.Forms.SaveFileDialog
|
|
$SaveDialog.InitialDirectory = [Environment]::GetFolderPath('Desktop')
|
|
$SaveDialog.Filter = "ISO images (*.iso)|*.iso"
|
|
$SaveDialog.ShowDialog() | Out-Null
|
|
|
|
if ($SaveDialog.FileName -eq "") {
|
|
Write-Host "No file name for the target image was specified"
|
|
return
|
|
}
|
|
|
|
Write-Host "Target ISO location: $($SaveDialog.FileName)"
|
|
|
|
$index = $sync.MicrowinWindowsFlavors.SelectedValue.Split(":")[0].Trim()
|
|
Write-Host "Index chosen: '$index' from $($sync.MicrowinWindowsFlavors.SelectedValue)"
|
|
|
|
$keepPackages = $sync.WPFMicrowinKeepProvisionedPackages.IsChecked
|
|
$keepProvisionedPackages = $sync.WPFMicrowinKeepAppxPackages.IsChecked
|
|
$keepDefender = $sync.WPFMicrowinKeepDefender.IsChecked
|
|
$keepEdge = $sync.WPFMicrowinKeepEdge.IsChecked
|
|
$copyToUSB = $sync.WPFMicrowinCopyToUsb.IsChecked
|
|
$injectDrivers = $sync.MicrowinInjectDrivers.IsChecked
|
|
|
|
$mountDir = $sync.MicrowinMountDir.Text
|
|
$scratchDir = $sync.MicrowinScratchDir.Text
|
|
|
|
$mountDirExists = Test-Path $mountDir
|
|
$scratchDirExists = Test-Path $scratchDir
|
|
if (-not $mountDirExists -or -not $scratchDirExists)
|
|
{
|
|
Write-Error "Required directories '$mountDirExists' '$scratchDirExists' and do not exist."
|
|
return
|
|
}
|
|
|
|
try {
|
|
|
|
Write-Host "Mounting Windows image. This may take a while."
|
|
dism /mount-image /imagefile:$mountDir\sources\install.wim /index:$index /mountdir:$scratchDir
|
|
Write-Host "Mounting complete! Performing removal of applications..."
|
|
|
|
if ($injectDrivers)
|
|
{
|
|
$driverPath = $sync.MicrowinDriverLocation.Text
|
|
if (Test-Path $driverPath)
|
|
{
|
|
Write-Host "Adding Windows Drivers image($scratchDir) drivers($driverPath) "
|
|
dism /English /image:$scratchDir /add-driver /driver:$driverPath /recurse | Out-Host
|
|
}
|
|
else
|
|
{
|
|
Write-Host "Path to drivers is invalid continuing without driver injection"
|
|
}
|
|
}
|
|
|
|
Write-Host "Remove Features from the image"
|
|
Remove-Features -keepDefender:$keepDefender
|
|
Write-Host "Removing features complete!"
|
|
|
|
Write-Host "Removing Appx Bloat"
|
|
if (!$keepPackages)
|
|
{
|
|
Remove-Packages
|
|
}
|
|
if (!$keepProvisionedPackages)
|
|
{
|
|
Remove-ProvisionedPackages -keepSecurity:$keepDefender
|
|
}
|
|
|
|
# special code, for some reason when you try to delete some inbox apps
|
|
# we have to get and delete log files directory.
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Windows\System32\LogFiles\WMI\RtBackup" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Windows\System32\WebThreatDefSvc" -Directory
|
|
|
|
# Defender is hidden in 2 places we removed a feature above now need to remove it from the disk
|
|
if (!$keepDefender)
|
|
{
|
|
Write-Host "Removing Defender"
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Program Files\Windows Defender" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Program Files (x86)\Windows Defender"
|
|
}
|
|
if (!$keepEdge)
|
|
{
|
|
Write-Host "Removing Edge"
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Program Files (x86)\Microsoft" -mask "*edge*" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Program Files\Microsoft" -mask "*edge*" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Windows\SystemApps" -mask "*edge*" -Directory
|
|
}
|
|
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Windows\DiagTrack" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Windows\InboxApps" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Windows\System32\SecurityHealthSystray.exe"
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Windows\System32\LocationNotificationWindows.exe"
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Program Files (x86)\Windows Photo Viewer" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Program Files\Windows Photo Viewer" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Program Files (x86)\Windows Media Player" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Program Files\Windows Media Player" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Program Files (x86)\Windows Mail" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Program Files\Windows Mail" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Program Files (x86)\Internet Explorer" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Program Files\Internet Explorer" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Windows\GameBarPresenceWriter"
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Windows\System32\OneDriveSetup.exe"
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Windows\System32\OneDrive.ico"
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Windows\SystemApps" -mask "*Windows.Search*" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Windows\SystemApps" -mask "*narratorquickstart*" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Windows\SystemApps" -mask "*Xbox*" -Directory
|
|
Remove-FileOrDirectory -pathToDelete "$($scratchDir)\Windows\SystemApps" -mask "*ParentalControls*" -Directory
|
|
Write-Host "Removal complete!"
|
|
|
|
Write-Host "Create unattend.xml"
|
|
New-Unattend
|
|
Write-Host "Done Create unattend.xml"
|
|
Write-Host "Copy unattend.xml file into the ISO"
|
|
New-Item -ItemType Directory -Force -Path "$($scratchDir)\Windows\Panther"
|
|
Copy-Item "$env:temp\unattend.xml" "$($scratchDir)\Windows\Panther\unattend.xml" -force
|
|
New-Item -ItemType Directory -Force -Path "$($scratchDir)\Windows\System32\Sysprep"
|
|
Copy-Item "$env:temp\unattend.xml" "$($scratchDir)\Windows\System32\Sysprep\unattend.xml" -force
|
|
Copy-Item "$env:temp\unattend.xml" "$($scratchDir)\unattend.xml" -force
|
|
Write-Host "Done Copy unattend.xml"
|
|
|
|
Write-Host "Create FirstRun"
|
|
New-FirstRun
|
|
Write-Host "Done create FirstRun"
|
|
Write-Host "Copy FirstRun.ps1 into the ISO"
|
|
Copy-Item "$env:temp\FirstStartup.ps1" "$($scratchDir)\Windows\FirstStartup.ps1" -force
|
|
Write-Host "Done copy FirstRun.ps1"
|
|
|
|
Write-Host "Copy link to winutil.ps1 into the ISO"
|
|
$desktopDir = "$($scratchDir)\Windows\Users\Default\Desktop"
|
|
New-Item -ItemType Directory -Force -Path "$desktopDir"
|
|
dism /English /image:$($scratchDir) /set-profilepath:"$($scratchDir)\Windows\Users\Default"
|
|
$command = "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command 'irm https://christitus.com/win | iex'"
|
|
$shortcutPath = "$desktopDir\WinUtil.lnk"
|
|
$shell = New-Object -ComObject WScript.Shell
|
|
$shortcut = $shell.CreateShortcut($shortcutPath)
|
|
|
|
if (Test-Path -Path "$env:TEMP\cttlogo.png")
|
|
{
|
|
$pngPath = "$env:TEMP\cttlogo.png"
|
|
$icoPath = "$env:TEMP\cttlogo.ico"
|
|
ConvertTo-Icon -bitmapPath $pngPath -iconPath $icoPath
|
|
Write-Host "ICO file created at: $icoPath"
|
|
Copy-Item "$env:TEMP\cttlogo.png" "$($scratchDir)\Windows\cttlogo.png" -force
|
|
Copy-Item "$env:TEMP\cttlogo.ico" "$($scratchDir)\Windows\cttlogo.ico" -force
|
|
$shortcut.IconLocation = "c:\Windows\cttlogo.ico"
|
|
}
|
|
|
|
$shortcut.TargetPath = "powershell.exe"
|
|
$shortcut.Arguments = "-NoProfile -ExecutionPolicy Bypass -Command `"$command`""
|
|
$shortcut.Save()
|
|
Write-Host "Shortcut to winutil created at: $shortcutPath"
|
|
# *************************** Automation black ***************************
|
|
|
|
Write-Host "Copy checkinstall.cmd into the ISO"
|
|
New-CheckInstall
|
|
Copy-Item "$env:temp\checkinstall.cmd" "$($scratchDir)\Windows\checkinstall.cmd" -force
|
|
Write-Host "Done copy checkinstall.cmd"
|
|
|
|
Write-Host "Creating a directory that allows to bypass Wifi setup"
|
|
New-Item -ItemType Directory -Force -Path "$($scratchDir)\Windows\System32\OOBE\BYPASSNRO"
|
|
|
|
Write-Host "Loading registry"
|
|
reg load HKLM\zCOMPONENTS "$($scratchDir)\Windows\System32\config\COMPONENTS"
|
|
reg load HKLM\zDEFAULT "$($scratchDir)\Windows\System32\config\default"
|
|
reg load HKLM\zNTUSER "$($scratchDir)\Users\Default\ntuser.dat"
|
|
reg load HKLM\zSOFTWARE "$($scratchDir)\Windows\System32\config\SOFTWARE"
|
|
reg load HKLM\zSYSTEM "$($scratchDir)\Windows\System32\config\SYSTEM"
|
|
|
|
Write-Host "Disabling Teams"
|
|
reg add "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Communications" /v "ConfigureChatAutoInstall" /t REG_DWORD /d 0 /f >$null 2>&1
|
|
reg add "HKLM\zSOFTWARE\Policies\Microsoft\Windows\Windows Chat" /v ChatIcon /t REG_DWORD /d 2 /f >$null 2>&1
|
|
reg add "HKLM\zNTUSER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f >$null 2>&1
|
|
reg query "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Communications" /v "ConfigureChatAutoInstall" >$null 2>&1
|
|
# Write-Host Error code $LASTEXITCODE
|
|
Write-Host "Done disabling Teams"
|
|
|
|
Write-Host "Bypassing system requirements (system image)"
|
|
reg add "HKLM\zDEFAULT\Control Panel\UnsupportedHardwareNotificationCache" /v "SV1" /t REG_DWORD /d 0 /f
|
|
reg add "HKLM\zDEFAULT\Control Panel\UnsupportedHardwareNotificationCache" /v "SV2" /t REG_DWORD /d 0 /f
|
|
reg add "HKLM\zNTUSER\Control Panel\UnsupportedHardwareNotificationCache" /v "SV1" /t REG_DWORD /d 0 /f
|
|
reg add "HKLM\zNTUSER\Control Panel\UnsupportedHardwareNotificationCache" /v "SV2" /t REG_DWORD /d 0 /f
|
|
reg add "HKLM\zSYSTEM\Setup\LabConfig" /v "BypassCPUCheck" /t REG_DWORD /d 1 /f
|
|
reg add "HKLM\zSYSTEM\Setup\LabConfig" /v "BypassRAMCheck" /t REG_DWORD /d 1 /f
|
|
reg add "HKLM\zSYSTEM\Setup\LabConfig" /v "BypassSecureBootCheck" /t REG_DWORD /d 1 /f
|
|
reg add "HKLM\zSYSTEM\Setup\LabConfig" /v "BypassStorageCheck" /t REG_DWORD /d 1 /f
|
|
reg add "HKLM\zSYSTEM\Setup\LabConfig" /v "BypassTPMCheck" /t REG_DWORD /d 1 /f
|
|
reg add "HKLM\zSYSTEM\Setup\MoSetup" /v "AllowUpgradesWithUnsupportedTPMOrCPU" /t REG_DWORD /d 1 /f
|
|
|
|
if (!$keepEdge)
|
|
{
|
|
Write-Host "Removing Edge icon from taskbar"
|
|
reg delete "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Taskband" /v "Favorites" /f >$null 2>&1
|
|
reg delete "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Taskband" /v "FavoritesChanges" /f >$null 2>&1
|
|
reg delete "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Taskband" /v "Pinned" /f >$null 2>&1
|
|
reg delete "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Taskband" /v "LayoutCycle" /f >$null 2>&1
|
|
Write-Host "Edge icon removed from taskbar"
|
|
}
|
|
|
|
reg add "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f
|
|
Write-Host "Setting all services to start manually"
|
|
reg add "HKLM\zSOFTWARE\CurrentControlSet\Services" /v Start /t REG_DWORD /d 3 /f
|
|
# Write-Host $LASTEXITCODE
|
|
|
|
Write-Host "Enabling Local Accounts on OOBE"
|
|
reg add "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\OOBE" /v "BypassNRO" /t REG_DWORD /d "1" /f
|
|
|
|
Write-Host "Disabling Sponsored Apps"
|
|
reg add "HKLM\zNTUSER\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "OemPreInstalledAppsEnabled" /t REG_DWORD /d 0 /f
|
|
reg add "HKLM\zNTUSER\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEnabled" /t REG_DWORD /d 0 /f
|
|
reg add "HKLM\zNTUSER\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SilentInstalledAppsEnabled" /t REG_DWORD /d 0 /f
|
|
reg add "HKLM\zSOFTWARE\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f
|
|
reg add "HKLM\zSOFTWARE\Microsoft\PolicyManager\current\device\Start" /v "ConfigureStartPins" /t REG_SZ /d '{\"pinnedList\": [{}]}' /f
|
|
Write-Host "Done removing Sponsored Apps"
|
|
|
|
Write-Host "Disabling Reserved Storage"
|
|
reg add "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\ReserveManager" /v "ShippedWithReserves" /t REG_DWORD /d 0 /f
|
|
|
|
Write-Host "Changing theme to dark. This only works on Activated Windows"
|
|
reg add "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize" /v "AppsUseLightTheme" /t REG_DWORD /d 0 /f
|
|
reg add "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize" /v "SystemUsesLightTheme" /t REG_DWORD /d 0 /f
|
|
|
|
} catch {
|
|
Write-Error "An unexpected error occurred: $_"
|
|
} finally {
|
|
Write-Host "Unmounting Registry..."
|
|
reg unload HKLM\zCOMPONENTS
|
|
reg unload HKLM\zDEFAULT
|
|
reg unload HKLM\zNTUSER
|
|
reg unload HKLM\zSOFTWARE
|
|
reg unload HKLM\zSYSTEM
|
|
|
|
Write-Host "Cleaning up image..."
|
|
dism /English /image:$scratchDir /Cleanup-Image /StartComponentCleanup /ResetBase
|
|
Write-Host "Cleanup complete."
|
|
|
|
Write-Host "Unmounting image..."
|
|
dism /unmount-image /mountdir:$scratchDir /commit
|
|
}
|
|
|
|
try {
|
|
|
|
Write-Host "Exporting image into $mountDir\sources\install2.wim"
|
|
dism /Export-Image /SourceImageFile:"$mountDir\sources\install.wim" /SourceIndex:$index /DestinationImageFile:"$mountDir\sources\install2.wim" /compress:max
|
|
Write-Host "Remove old '$mountDir\sources\install.wim' and rename $mountDir\sources\install2.wim"
|
|
Remove-Item "$mountDir\sources\install.wim"
|
|
Rename-Item "$mountDir\sources\install2.wim" "$mountDir\sources\install.wim"
|
|
|
|
if (-not (Test-Path -Path "$mountDir\sources\install.wim"))
|
|
{
|
|
Write-Error "Something went wrong and '$mountDir\sources\install.wim' doesn't exist. Please report this bug to the devs"
|
|
return
|
|
}
|
|
Write-Host "Windows image completed. Continuing with boot.wim."
|
|
|
|
# Next step boot image
|
|
Write-Host "Mounting boot image $mountDir\sources\boot.wim into $scratchDir"
|
|
dism /mount-image /imagefile:"$mountDir\sources\boot.wim" /index:2 /mountdir:"$scratchDir"
|
|
|
|
if ($injectDrivers)
|
|
{
|
|
$driverPath = $sync.MicrowinDriverLocation.Text
|
|
if (Test-Path $driverPath)
|
|
{
|
|
Write-Host "Adding Windows Drivers image($scratchDir) drivers($driverPath) "
|
|
dism /English /image:$scratchDir /add-driver /driver:$driverPath /recurse | Out-Host
|
|
}
|
|
else
|
|
{
|
|
Write-Host "Path to drivers is invalid continuing without driver injection"
|
|
}
|
|
}
|
|
|
|
Write-Host "Loading registry..."
|
|
reg load HKLM\zCOMPONENTS "$($scratchDir)\Windows\System32\config\COMPONENTS" >$null
|
|
reg load HKLM\zDEFAULT "$($scratchDir)\Windows\System32\config\default" >$null
|
|
reg load HKLM\zNTUSER "$($scratchDir)\Users\Default\ntuser.dat" >$null
|
|
reg load HKLM\zSOFTWARE "$($scratchDir)\Windows\System32\config\SOFTWARE" >$null
|
|
reg load HKLM\zSYSTEM "$($scratchDir)\Windows\System32\config\SYSTEM" >$null
|
|
Write-Host "Bypassing system requirements on the setup image"
|
|
reg add "HKLM\zDEFAULT\Control Panel\UnsupportedHardwareNotificationCache" /v "SV1" /t REG_DWORD /d 0 /f
|
|
reg add "HKLM\zDEFAULT\Control Panel\UnsupportedHardwareNotificationCache" /v "SV2" /t REG_DWORD /d 0 /f
|
|
reg add "HKLM\zNTUSER\Control Panel\UnsupportedHardwareNotificationCache" /v "SV1" /t REG_DWORD /d 0 /f
|
|
reg add "HKLM\zNTUSER\Control Panel\UnsupportedHardwareNotificationCache" /v "SV2" /t REG_DWORD /d 0 /f
|
|
reg add "HKLM\zSYSTEM\Setup\LabConfig" /v "BypassCPUCheck" /t REG_DWORD /d 1 /f
|
|
reg add "HKLM\zSYSTEM\Setup\LabConfig" /v "BypassRAMCheck" /t REG_DWORD /d 1 /f
|
|
reg add "HKLM\zSYSTEM\Setup\LabConfig" /v "BypassSecureBootCheck" /t REG_DWORD /d 1 /f
|
|
reg add "HKLM\zSYSTEM\Setup\LabConfig" /v "BypassStorageCheck" /t REG_DWORD /d 1 /f
|
|
reg add "HKLM\zSYSTEM\Setup\LabConfig" /v "BypassTPMCheck" /t REG_DWORD /d 1 /f
|
|
reg add "HKLM\zSYSTEM\Setup\MoSetup" /v "AllowUpgradesWithUnsupportedTPMOrCPU" /t REG_DWORD /d 1 /f
|
|
# Fix Computer Restarted Unexpectedly Error on New Bare Metal Install
|
|
reg add "HKLM\zSYSTEM\Setup\Status\ChildCompletion" /v "setup.exe" /t REG_DWORD /d 3 /f
|
|
} catch {
|
|
Write-Error "An unexpected error occurred: $_"
|
|
} finally {
|
|
Write-Host "Unmounting Registry..."
|
|
reg unload HKLM\zCOMPONENTS
|
|
reg unload HKLM\zDEFAULT
|
|
reg unload HKLM\zNTUSER
|
|
reg unload HKLM\zSOFTWARE
|
|
reg unload HKLM\zSYSTEM
|
|
|
|
Write-Host "Unmounting image..."
|
|
dism /unmount-image /mountdir:$scratchDir /commit
|
|
|
|
Write-Host "Creating ISO image"
|
|
|
|
# if we downloaded oscdimg from github it will be in the temp directory so use it
|
|
# if it is not in temp it is part of ADK and is in global PATH so just set it to oscdimg.exe
|
|
$oscdimgPath = Join-Path $env:TEMP 'oscdimg.exe'
|
|
$oscdImgFound = Test-Path $oscdimgPath -PathType Leaf
|
|
if (!$oscdImgFound)
|
|
{
|
|
$oscdimgPath = "oscdimg.exe"
|
|
}
|
|
|
|
Write-Host "[INFO] Using oscdimg.exe from: $oscdimgPath"
|
|
#& oscdimg.exe -m -o -u2 -udfver102 -bootdata:2#p0,e,b$mountDir\boot\etfsboot.com#pEF,e,b$mountDir\efi\microsoft\boot\efisys.bin $mountDir $env:temp\microwin.iso
|
|
#Start-Process -FilePath $oscdimgPath -ArgumentList "-m -o -u2 -udfver102 -bootdata:2#p0,e,b$mountDir\boot\etfsboot.com#pEF,e,b$mountDir\efi\microsoft\boot\efisys.bin $mountDir $env:temp\microwin.iso" -NoNewWindow -Wait
|
|
#Start-Process -FilePath $oscdimgPath -ArgumentList '-m -o -u2 -udfver102 -bootdata:2#p0,e,b$mountDir\boot\etfsboot.com#pEF,e,b$mountDir\efi\microsoft\boot\efisys.bin $mountDir `"$($SaveDialog.FileName)`"' -NoNewWindow -Wait
|
|
$oscdimgProc = New-Object System.Diagnostics.Process
|
|
$oscdimgProc.StartInfo.FileName = $oscdimgPath
|
|
$oscdimgProc.StartInfo.Arguments = "-m -o -u2 -udfver102 -bootdata:2#p0,e,b$mountDir\boot\etfsboot.com#pEF,e,b$mountDir\efi\microsoft\boot\efisys.bin $mountDir `"$($SaveDialog.FileName)`""
|
|
$oscdimgProc.StartInfo.CreateNoWindow = $True
|
|
$oscdimgProc.StartInfo.WindowStyle = "Hidden"
|
|
$oscdimgProc.StartInfo.UseShellExecute = $False
|
|
$oscdimgProc.Start()
|
|
$oscdimgProc.WaitForExit()
|
|
|
|
if ($copyToUSB)
|
|
{
|
|
Write-Host "Copying target ISO to the USB drive"
|
|
#Copy-ToUSB("$env:temp\microwin.iso")
|
|
Copy-ToUSB("$($SaveDialog.FileName)")
|
|
if ($?) { Write-Host "Done Copying target ISO to USB drive!" } else { Write-Host "ISO copy failed." }
|
|
}
|
|
|
|
Write-Host " _____ "
|
|
Write-Host "(____ \ "
|
|
Write-Host " _ \ \ ___ ____ ____ "
|
|
Write-Host "| | | / _ \| _ \ / _ ) "
|
|
Write-Host "| |__/ / |_| | | | ( (/ / "
|
|
Write-Host "|_____/ \___/|_| |_|\____) "
|
|
|
|
# Check if the ISO was successfully created - CTT edit
|
|
if ($LASTEXITCODE -eq 0) {
|
|
Write-Host "`n`nPerforming Cleanup..."
|
|
Remove-Item -Recurse -Force "$($scratchDir)"
|
|
Remove-Item -Recurse -Force "$($mountDir)"
|
|
#$msg = "Done. ISO image is located here: $env:temp\microwin.iso"
|
|
$msg = "Done. ISO image is located here: $($SaveDialog.FileName)"
|
|
Write-Host $msg
|
|
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Information)
|
|
} else {
|
|
Write-Host "ISO creation failed. The "$($mountDir)" directory has not been removed."
|
|
}
|
|
|
|
$sync.MicrowinOptionsPanel.Visibility = 'Collapsed'
|
|
|
|
#$sync.MicrowinFinalIsoLocation.Text = "$env:temp\microwin.iso"
|
|
$sync.MicrowinFinalIsoLocation.Text = "$($SaveDialog.FileName)"
|
|
# Allow the machine to sleep again (optional)
|
|
[PowerManagement]::SetThreadExecutionState(0)
|
|
$sync.ProcessRunning = $false
|
|
}
|
|
}
|
|
function Invoke-WPFPanelAutologin {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Enables autologin using Sysinternals Autologon.exe
|
|
|
|
#>
|
|
curl.exe -ss "https://live.sysinternals.com/Autologon.exe" -o $env:temp\autologin.exe # Official Microsoft recommendation https://learn.microsoft.com/en-us/sysinternals/downloads/autologon
|
|
cmd /c $env:temp\autologin.exe /accepteula
|
|
}
|
|
function Invoke-WPFPanelDISM {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Checks for system corruption using Chkdsk, SFC, and DISM
|
|
|
|
.DESCRIPTION
|
|
1. Chkdsk - Fixes disk and filesystem corruption
|
|
2. SFC Run 1 - Fixes system file corruption, and fixes DISM if it was corrupted
|
|
3. DISM - Fixes system image corruption, and fixes SFC's system image if it was corrupted
|
|
4. SFC Run 2 - Fixes system file corruption, this time with an almost guaranteed uncorrupted system image
|
|
|
|
.NOTES
|
|
Command Arguments:
|
|
1. Chkdsk
|
|
/Scan - Runs an online scan on the system drive, attempts to fix any corruption, and queues other corruption for fixing on reboot
|
|
2. SFC
|
|
/ScanNow - Performs a scan of the system files and fixes any corruption
|
|
3. DISM - Fixes system image corruption, and fixes SFC's system image if it was corrupted
|
|
/Online - Fixes the currently running system image
|
|
/Cleanup-Image - Performs cleanup operations on the image, could remove some unneeded temporary files
|
|
/Restorehealth - Performs a scan of the image and fixes any corruption
|
|
|
|
#>
|
|
Start-Process PowerShell -ArgumentList "Write-Host '(1/4) Chkdsk' -ForegroundColor Green; Chkdsk /scan;
|
|
Write-Host '`n(2/4) SFC - 1st scan' -ForegroundColor Green; sfc /scannow;
|
|
Write-Host '`n(3/4) DISM' -ForegroundColor Green; DISM /Online /Cleanup-Image /Restorehealth;
|
|
Write-Host '`n(4/4) SFC - 2nd scan' -ForegroundColor Green; sfc /scannow;
|
|
Read-Host '`nPress Enter to Continue'" -verb runas
|
|
}
|
|
function Invoke-WPFPresets {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Sets the options in the tweaks panel to the given preset
|
|
|
|
.PARAMETER preset
|
|
The preset to set the options to
|
|
|
|
.PARAMETER imported
|
|
If the preset is imported from a file, defaults to false
|
|
|
|
.PARAMETER checkbox
|
|
The checkbox to set the options to, defaults to 'WPFTweaks'
|
|
|
|
#>
|
|
|
|
param(
|
|
$preset,
|
|
[bool]$imported = $false,
|
|
$checkbox = "WPFTweaks"
|
|
)
|
|
|
|
if($imported -eq $true){
|
|
$CheckBoxesToCheck = $preset
|
|
}
|
|
Else{
|
|
$CheckBoxesToCheck = $sync.configs.preset.$preset
|
|
}
|
|
|
|
if($checkbox -eq "WPFTweaks"){
|
|
$filter = Get-WinUtilVariables -Type Checkbox | Where-Object {$psitem -like "*tweaks*"}
|
|
$sync.GetEnumerator() | Where-Object {$psitem.Key -in $filter} | ForEach-Object {
|
|
if ($CheckBoxesToCheck -contains $PSItem.name){
|
|
$sync.$($PSItem.name).ischecked = $true
|
|
}
|
|
else{$sync.$($PSItem.name).ischecked = $false}
|
|
}
|
|
}
|
|
if($checkbox -eq "WPFInstall"){
|
|
|
|
$filter = Get-WinUtilVariables -Type Checkbox | Where-Object {$psitem -like "WPFInstall*"}
|
|
$sync.GetEnumerator() | Where-Object {$psitem.Key -in $filter} | ForEach-Object {
|
|
if($($sync.configs.applications.$($psitem.name).winget) -in $CheckBoxesToCheck){
|
|
$sync.$($PSItem.name).ischecked = $true
|
|
}
|
|
else{$sync.$($PSItem.name).ischecked = $false}
|
|
}
|
|
}
|
|
}
|
|
function Invoke-WPFRunspace {
|
|
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Creates and invokes a runspace using the given scriptblock and argumentlist
|
|
|
|
.PARAMETER ScriptBlock
|
|
The scriptblock to invoke in the runspace
|
|
|
|
.PARAMETER ArgumentList
|
|
A list of arguments to pass to the runspace
|
|
|
|
.EXAMPLE
|
|
Invoke-WPFRunspace `
|
|
-ScriptBlock $sync.ScriptsInstallPrograms `
|
|
-ArgumentList "Installadvancedip,Installbitwarden" `
|
|
|
|
#>
|
|
|
|
[CmdletBinding()]
|
|
Param (
|
|
$ScriptBlock,
|
|
$ArgumentList
|
|
)
|
|
|
|
# Create a PowerShell instance
|
|
$script:powershell = [powershell]::Create()
|
|
|
|
# Add Scriptblock and Arguments to runspace
|
|
$script:powershell.AddScript($ScriptBlock)
|
|
$script:powershell.AddArgument($ArgumentList)
|
|
$script:powershell.RunspacePool = $sync.runspace
|
|
|
|
# Execute the RunspacePool
|
|
$script:handle = $script:powershell.BeginInvoke()
|
|
|
|
# Clean up the RunspacePool threads when they are complete, and invoke the garbage collector to clean up the memory
|
|
if ($script:handle.IsCompleted)
|
|
{
|
|
$script:powershell.EndInvoke($script:handle)
|
|
$script:powershell.Dispose()
|
|
$sync.runspace.Dispose()
|
|
$sync.runspace.Close()
|
|
[System.GC]::Collect()
|
|
}
|
|
}
|
|
|
|
function Invoke-WPFShortcut {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Creates a shortcut and prompts for a save location
|
|
|
|
.PARAMETER ShortcutToAdd
|
|
The name of the shortcut to add
|
|
|
|
#>
|
|
param($ShortcutToAdd)
|
|
|
|
$iconPath = $null
|
|
Switch ($ShortcutToAdd) {
|
|
"WinUtil" {
|
|
$SourceExe = "$env:SystemRoot\System32\WindowsPowerShell\v1.0\powershell.exe"
|
|
$IRM = 'irm https://christitus.com/win | iex'
|
|
$Powershell = '-ExecutionPolicy Bypass -Command "Start-Process powershell.exe -verb runas -ArgumentList'
|
|
$ArgumentsToSourceExe = "$powershell '$IRM'"
|
|
$DestinationName = "WinUtil.lnk"
|
|
|
|
if (Test-Path -Path "$env:TEMP\cttlogo.png") {
|
|
$iconPath = "$env:SystempRoot\cttlogo.ico"
|
|
ConvertTo-Icon -bitmapPath "$env:TEMP\cttlogo.png" -iconPath $iconPath
|
|
}
|
|
}
|
|
}
|
|
|
|
$FileBrowser = New-Object System.Windows.Forms.SaveFileDialog
|
|
$FileBrowser.InitialDirectory = [Environment]::GetFolderPath('Desktop')
|
|
$FileBrowser.Filter = "Shortcut Files (*.lnk)|*.lnk"
|
|
$FileBrowser.FileName = $DestinationName
|
|
$FileBrowser.ShowDialog() | Out-Null
|
|
|
|
$WshShell = New-Object -comObject WScript.Shell
|
|
$Shortcut = $WshShell.CreateShortcut($FileBrowser.FileName)
|
|
$Shortcut.TargetPath = $SourceExe
|
|
$Shortcut.Arguments = $ArgumentsToSourceExe
|
|
if ($iconPath -ne $null) {
|
|
$shortcut.IconLocation = $iconPath
|
|
}
|
|
$Shortcut.Save()
|
|
|
|
Write-Host "Shortcut for $ShortcutToAdd has been saved to $($FileBrowser.FileName)"
|
|
}
|
|
function Invoke-WPFTab {
|
|
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Sets the selected tab to the tab that was clicked
|
|
|
|
.PARAMETER ClickedTab
|
|
The name of the tab that was clicked
|
|
|
|
#>
|
|
|
|
Param ($ClickedTab)
|
|
|
|
$tabNav = Get-WinUtilVariables | Where-Object {$psitem -like "WPFTabNav"}
|
|
$tabNumber = [int]($ClickedTab -replace "WPFTab","" -replace "BT","") - 1
|
|
|
|
$filter = Get-WinUtilVariables -Type ToggleButton | Where-Object {$psitem -like "WPFTab?BT"}
|
|
$sync.GetEnumerator() | Where-Object {$psitem.Key -in $filter} | ForEach-Object {
|
|
if ($ClickedTab -ne $PSItem.name) {
|
|
$sync[$PSItem.Name].IsChecked = $false
|
|
# $tabNumber = [int]($PSItem.Name -replace "WPFTab","" -replace "BT","") - 1
|
|
# $sync.$tabNav.Items[$tabNumber].IsSelected = $false
|
|
}
|
|
else {
|
|
$sync["$ClickedTab"].IsChecked = $true
|
|
$tabNumber = [int]($ClickedTab-replace "WPFTab","" -replace "BT","") - 1
|
|
$sync.$tabNav.Items[$tabNumber].IsSelected = $true
|
|
}
|
|
}
|
|
}
|
|
function Invoke-WPFToggle {
|
|
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Invokes the scriptblock for the given toggle
|
|
|
|
.PARAMETER Button
|
|
The name of the toggle to invoke
|
|
|
|
#>
|
|
|
|
Param ([string]$Button)
|
|
|
|
# Use this to get the name of the button
|
|
#[System.Windows.MessageBox]::Show("$Button","Chris Titus Tech's Windows Utility","OK","Info")
|
|
|
|
Switch -Wildcard ($Button){
|
|
|
|
"WPFToggleDarkMode" {Invoke-WinUtilDarkMode -DarkMoveEnabled $(Get-WinUtilToggleStatus WPFToggleDarkMode)}
|
|
"WPFToggleBingSearch" {Invoke-WinUtilBingSearch $(Get-WinUtilToggleStatus WPFToggleBingSearch)}
|
|
"WPFToggleNumLock" {Invoke-WinUtilNumLock $(Get-WinUtilToggleStatus WPFToggleNumLock)}
|
|
"WPFToggleVerboseLogon" {Invoke-WinUtilVerboseLogon $(Get-WinUtilToggleStatus WPFToggleVerboseLogon)}
|
|
"WPFToggleShowExt" {Invoke-WinUtilShowExt $(Get-WinUtilToggleStatus WPFToggleShowExt)}
|
|
"WPFToggleMouseAcceleration" {Invoke-WinUtilMouseAcceleration $(Get-WinUtilToggleStatus WPFToggleMouseAcceleration)}
|
|
}
|
|
}
|
|
function Invoke-WPFtweaksbutton {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Invokes the functions associated with each group of checkboxes
|
|
|
|
#>
|
|
|
|
if($sync.ProcessRunning){
|
|
$msg = "Install process is currently running."
|
|
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
|
|
return
|
|
}
|
|
|
|
$Tweaks = Get-WinUtilCheckBoxes -Group "WPFTweaks"
|
|
|
|
Set-WinUtilDNS -DNSProvider $sync["WPFchangedns"].text
|
|
|
|
if ($tweaks.count -eq 0 -and $sync["WPFchangedns"].text -eq "Default"){
|
|
$msg = "Please check the tweaks you wish to perform."
|
|
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
|
|
return
|
|
}
|
|
|
|
Invoke-WPFRunspace -ArgumentList $Tweaks -ScriptBlock {
|
|
param($Tweaks)
|
|
|
|
$sync.ProcessRunning = $true
|
|
|
|
# Executes first if selected
|
|
if ("WPFEssTweaksRestorePoint" -in $Tweaks) {
|
|
Invoke-WinUtilTweaks "WPFEssTweaksRestorePoint"
|
|
}
|
|
|
|
# Execute other selected tweaks
|
|
foreach ($tweak in $tweaks) {
|
|
if ($tweak -ne "WPFEssTweaksRestorePoint") {
|
|
Invoke-WinUtilTweaks $tweak
|
|
}
|
|
}
|
|
|
|
$sync.ProcessRunning = $false
|
|
Write-Host "================================="
|
|
Write-Host "-- Tweaks are Finished ---"
|
|
Write-Host "================================="
|
|
|
|
$ButtonType = [System.Windows.MessageBoxButton]::OK
|
|
$MessageboxTitle = "Tweaks are Finished "
|
|
$Messageboxbody = ("Done")
|
|
$MessageIcon = [System.Windows.MessageBoxImage]::Information
|
|
|
|
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
|
|
}
|
|
}
|
|
Function Invoke-WPFUltimatePerformance {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Creates or removes the Ultimate Performance power scheme
|
|
|
|
.PARAMETER State
|
|
Indicates whether to enable or disable the Ultimate Performance power scheme
|
|
|
|
#>
|
|
param($State)
|
|
Try{
|
|
|
|
if($state -eq "Enabled"){
|
|
# Define the name and GUID of the power scheme
|
|
$powerSchemeName = "Ultimate Performance"
|
|
$powerSchemeGuid = "e9a42b02-d5df-448d-aa00-03f14749eb61"
|
|
|
|
# Get all power schemes
|
|
$schemes = powercfg /list | Out-String -Stream
|
|
|
|
# Check if the power scheme already exists
|
|
$ultimateScheme = $schemes | Where-Object { $_ -match $powerSchemeName }
|
|
|
|
if ($null -eq $ultimateScheme) {
|
|
Write-Host "Power scheme '$powerSchemeName' not found. Adding..."
|
|
|
|
# Add the power scheme
|
|
powercfg /duplicatescheme $powerSchemeGuid
|
|
powercfg -attributes SUB_SLEEP 7bc4a2f9-d8fc-4469-b07b-33eb785aaca0 -ATTRIB_HIDE
|
|
powercfg -setactive $powerSchemeGuid
|
|
powercfg -change -monitor-timeout-ac 0
|
|
|
|
|
|
Write-Host "Power scheme added successfully."
|
|
}
|
|
else {
|
|
Write-Host "Power scheme '$powerSchemeName' already exists."
|
|
}
|
|
}
|
|
elseif($state -eq "Disabled"){
|
|
# Define the name of the power scheme
|
|
$powerSchemeName = "Ultimate Performance"
|
|
|
|
# Get all power schemes
|
|
$schemes = powercfg /list | Out-String -Stream
|
|
|
|
# Find the scheme to be removed
|
|
$ultimateScheme = $schemes | Where-Object { $_ -match $powerSchemeName }
|
|
|
|
# If the scheme exists, remove it
|
|
if ($null -ne $ultimateScheme) {
|
|
# Extract the GUID of the power scheme
|
|
$guid = ($ultimateScheme -split '\s+')[3]
|
|
|
|
if($null -ne $guid){
|
|
Write-Host "Found power scheme '$powerSchemeName' with GUID $guid. Removing..."
|
|
|
|
# Remove the power scheme
|
|
powercfg /delete $guid
|
|
|
|
Write-Host "Power scheme removed successfully."
|
|
}
|
|
else {
|
|
Write-Host "Could not find GUID for power scheme '$powerSchemeName'."
|
|
}
|
|
}
|
|
else {
|
|
Write-Host "Power scheme '$powerSchemeName' not found."
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
Catch{
|
|
Write-Warning $psitem.Exception.Message
|
|
}
|
|
}
|
|
function Invoke-WPFundoall {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Undoes every selected tweak
|
|
|
|
#>
|
|
|
|
if($sync.ProcessRunning){
|
|
$msg = "Install process is currently running."
|
|
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
|
|
return
|
|
}
|
|
|
|
$Tweaks = Get-WinUtilCheckBoxes -Group "WPFTweaks"
|
|
|
|
if ($tweaks.count -eq 0){
|
|
$msg = "Please check the tweaks you wish to undo."
|
|
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
|
|
return
|
|
}
|
|
|
|
Invoke-WPFRunspace -ArgumentList $Tweaks -ScriptBlock {
|
|
param($Tweaks)
|
|
|
|
$sync.ProcessRunning = $true
|
|
|
|
Foreach ($tweak in $tweaks){
|
|
Invoke-WinUtilTweaks $tweak -undo $true
|
|
}
|
|
|
|
$sync.ProcessRunning = $false
|
|
Write-Host "=================================="
|
|
Write-Host "--- Undo Tweaks are Finished ---"
|
|
Write-Host "=================================="
|
|
|
|
$ButtonType = [System.Windows.MessageBoxButton]::OK
|
|
$MessageboxTitle = "Tweaks are Finished "
|
|
$Messageboxbody = ("Done")
|
|
$MessageIcon = [System.Windows.MessageBoxImage]::Information
|
|
|
|
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
|
|
}
|
|
|
|
<#
|
|
|
|
Write-Host "Creating Restore Point in case something bad happens"
|
|
Enable-ComputerRestore -Drive "$env:SystemDrive"
|
|
Checkpoint-Computer -Description "RestorePoint1" -RestorePointType "MODIFY_SETTINGS"
|
|
|
|
Write-Host "Enabling Telemetry..."
|
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\DataCollection" -Name "AllowTelemetry" -Type DWord -Value 1
|
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection" -Name "AllowTelemetry" -Type DWord -Value 1
|
|
Write-Host "Enabling Wi-Fi Sense"
|
|
Set-ItemProperty -Path "HKLM:\Software\Microsoft\PolicyManager\default\WiFi\AllowWiFiHotSpotReporting" -Name "Value" -Type DWord -Value 1
|
|
Set-ItemProperty -Path "HKLM:\Software\Microsoft\PolicyManager\default\WiFi\AllowAutoConnectToWiFiSenseHotspots" -Name "Value" -Type DWord -Value 1
|
|
Write-Host "Enabling Application suggestions..."
|
|
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "ContentDeliveryAllowed" -Type DWord -Value 1
|
|
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "OemPreInstalledAppsEnabled" -Type DWord -Value 1
|
|
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "PreInstalledAppsEnabled" -Type DWord -Value 1
|
|
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "PreInstalledAppsEverEnabled" -Type DWord -Value 1
|
|
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "SilentInstalledAppsEnabled" -Type DWord -Value 1
|
|
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "SubscribedContent-338387Enabled" -Type DWord -Value 1
|
|
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "SubscribedContent-338388Enabled" -Type DWord -Value 1
|
|
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "SubscribedContent-338389Enabled" -Type DWord -Value 1
|
|
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "SubscribedContent-353698Enabled" -Type DWord -Value 1
|
|
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" -Name "SystemPaneSuggestionsEnabled" -Type DWord -Value 1
|
|
If (Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent") {
|
|
Remove-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent" -Recurse -ErrorAction SilentlyContinue
|
|
}
|
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\CloudContent" -Name "DisableWindowsConsumerFeatures" -Type DWord -Value 0
|
|
Write-Host "Enabling Activity History..."
|
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" -Name "EnableActivityFeed" -Type DWord -Value 1
|
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" -Name "PublishUserActivities" -Type DWord -Value 1
|
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" -Name "UploadUserActivities" -Type DWord -Value 1
|
|
Write-Host "Enable Location Tracking..."
|
|
If (Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\location") {
|
|
Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\location" -Recurse -ErrorAction SilentlyContinue
|
|
}
|
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\location" -Name "Value" -Type String -Value "Allow"
|
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Sensor\Overrides\{BFA794E4-F964-4FDB-90F6-51056BFE4B44}" -Name "SensorPermissionState" -Type DWord -Value 1
|
|
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\lfsvc\Service\Configuration" -Name "Status" -Type DWord -Value 1
|
|
Write-Host "Enabling automatic Maps updates..."
|
|
Set-ItemProperty -Path "HKLM:\SYSTEM\Maps" -Name "AutoUpdateEnabled" -Type DWord -Value 1
|
|
Write-Host "Enabling Feedback..."
|
|
If (Test-Path "HKCU:\SOFTWARE\Microsoft\Siuf\Rules") {
|
|
Remove-Item -Path "HKCU:\SOFTWARE\Microsoft\Siuf\Rules" -Recurse -ErrorAction SilentlyContinue
|
|
}
|
|
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Siuf\Rules" -Name "NumberOfSIUFInPeriod" -Type DWord -Value 0
|
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DataCollection" -Name "DoNotShowFeedbackNotifications" -Type DWord -Value 0
|
|
Write-Host "Enabling Tailored Experiences..."
|
|
If (Test-Path "HKCU:\SOFTWARE\Policies\Microsoft\Windows\CloudContent") {
|
|
Remove-Item -Path "HKCU:\SOFTWARE\Policies\Microsoft\Windows\CloudContent" -Recurse -ErrorAction SilentlyContinue
|
|
}
|
|
Set-ItemProperty -Path "HKCU:\SOFTWARE\Policies\Microsoft\Windows\CloudContent" -Name "DisableTailoredExperiencesWithDiagnosticData" -Type DWord -Value 0
|
|
Write-Host "Disabling Advertising ID..."
|
|
If (Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\AdvertisingInfo") {
|
|
Remove-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\AdvertisingInfo" -Recurse -ErrorAction SilentlyContinue
|
|
}
|
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\AdvertisingInfo" -Name "DisabledByGroupPolicy" -Type DWord -Value 0
|
|
Write-Host "Allow Error reporting..."
|
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting" -Name "Disabled" -Type DWord -Value 0
|
|
Write-Host "Allowing Diagnostics Tracking Service..."
|
|
Stop-Service "DiagTrack" -WarningAction SilentlyContinue
|
|
Set-Service "DiagTrack" -StartupType Manual
|
|
Write-Host "Allowing WAP Push Service..."
|
|
Stop-Service "dmwappushservice" -WarningAction SilentlyContinue
|
|
Set-Service "dmwappushservice" -StartupType Manual
|
|
Write-Host "Allowing Home Groups services..."
|
|
Stop-Service "HomeGroupListener" -WarningAction SilentlyContinue
|
|
Set-Service "HomeGroupListener" -StartupType Manual
|
|
Stop-Service "HomeGroupProvider" -WarningAction SilentlyContinue
|
|
Set-Service "HomeGroupProvider" -StartupType Manual
|
|
Write-Host "Enabling Storage Sense..."
|
|
New-Item -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\StorageSense\Parameters\StoragePolicy" | Out-Null
|
|
Write-Host "Allowing Superfetch service..."
|
|
Stop-Service "SysMain" -WarningAction SilentlyContinue
|
|
Set-Service "SysMain" -StartupType Manual
|
|
Write-Host "Setting BIOS time to Local Time instead of UTC..."
|
|
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\TimeZoneInformation" -Name "RealTimeIsUniversal" -Type DWord -Value 0
|
|
Write-Host "Enabling Hibernation..."
|
|
Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Session Manager\Power" -Name "HibernteEnabled" -Type Dword -Value 1
|
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FlyoutMenuSettings" -Name "ShowHibernateOption" -Type Dword -Value 1
|
|
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Personalization" -Name "NoLockScreen" -ErrorAction SilentlyContinue
|
|
|
|
Write-Host "Hiding file operations details..."
|
|
If (Test-Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\OperationStatusManager") {
|
|
Remove-Item -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\OperationStatusManager" -Recurse -ErrorAction SilentlyContinue
|
|
}
|
|
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\OperationStatusManager" -Name "EnthusiastMode" -Type DWord -Value 0
|
|
Write-Host "Showing Task View button..."
|
|
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "ShowTaskViewButton" -Type DWord -Value 1
|
|
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\People" -Name "PeopleBand" -Type DWord -Value 1
|
|
|
|
Write-Host "Changing default Explorer view to Quick Access..."
|
|
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "LaunchTo" -Type DWord -Value 0
|
|
|
|
Write-Host "Unrestricting AutoLogger directory"
|
|
$autoLoggerDir = "$env:PROGRAMDATA\Microsoft\Diagnosis\ETLLogs\AutoLogger"
|
|
icacls $autoLoggerDir /grant:r SYSTEM:`(OI`)`(CI`)F | Out-Null
|
|
|
|
Write-Host "Enabling and starting Diagnostics Tracking Service"
|
|
Set-Service "DiagTrack" -StartupType Automatic
|
|
Start-Service "DiagTrack"
|
|
|
|
Write-Host "Hiding known file extensions"
|
|
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "HideFileExt" -Type DWord -Value 1
|
|
|
|
Write-Host "Reset Local Group Policies to Stock Defaults"
|
|
# cmd /c secedit /configure /cfg %windir%\inf\defltbase.inf /db defltbase.sdb /verbose
|
|
cmd /c RD /S /Q "%WinDir%\System32\GroupPolicyUsers"
|
|
cmd /c RD /S /Q "%WinDir%\System32\GroupPolicy"
|
|
cmd /c gpupdate /force
|
|
# Considered using Invoke-GPUpdate but requires module most people won't have installed
|
|
|
|
Write-Host "Adjusting visual effects for appearance..."
|
|
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "DragFullWindows" -Type String -Value 1
|
|
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "MenuShowDelay" -Type String -Value 400
|
|
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "UserPreferencesMask" -Type Binary -Value ([byte[]](158, 30, 7, 128, 18, 0, 0, 0))
|
|
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop\WindowMetrics" -Name "MinAnimate" -Type String -Value 1
|
|
Set-ItemProperty -Path "HKCU:\Control Panel\Keyboard" -Name "KeyboardDelay" -Type DWord -Value 1
|
|
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "ListviewAlphaSelect" -Type DWord -Value 1
|
|
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "ListviewShadow" -Type DWord -Value 1
|
|
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "TaskbarAnimations" -Type DWord -Value 1
|
|
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects" -Name "VisualFXSetting" -Type DWord -Value 3
|
|
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\DWM" -Name "EnableAeroPeek" -Type DWord -Value 1
|
|
Remove-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "HungAppTimeout" -ErrorAction SilentlyContinue
|
|
Write-Host "Restoring Clipboard History..."
|
|
Remove-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Clipboard" -Name "EnableClipboardHistory" -ErrorAction SilentlyContinue
|
|
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" -Name "AllowClipboardHistory" -ErrorAction SilentlyContinue
|
|
Write-Host "Enabling Notifications and Action Center"
|
|
Remove-Item -Path HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer -Force
|
|
Remove-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\PushNotifications" -Name "ToastEnabled"
|
|
Write-Host "Restoring Default Right Click Menu Layout"
|
|
Remove-Item -Path "HKCU:\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}" -Recurse -Confirm:$false -Force
|
|
|
|
Write-Host "Reset News and Interests"
|
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Windows Feeds" -Name "EnableFeeds" -Type DWord -Value 1
|
|
# Remove "News and Interest" from taskbar
|
|
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Feeds" -Name "ShellFeedsTaskbarViewMode" -Type DWord -Value 0
|
|
Write-Host "Done - Reverted to Stock Settings"
|
|
|
|
Write-Host "Essential Undo Completed"
|
|
|
|
$ButtonType = [System.Windows.MessageBoxButton]::OK
|
|
$MessageboxTitle = "Undo All"
|
|
$Messageboxbody = ("Done")
|
|
$MessageIcon = [System.Windows.MessageBoxImage]::Information
|
|
|
|
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
|
|
|
|
Write-Host "================================="
|
|
Write-Host "--- Undo All is Finished ---"
|
|
Write-Host "================================="
|
|
#>
|
|
}
|
|
function Invoke-WPFUnInstall {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Uninstalls the selected programs
|
|
|
|
#>
|
|
|
|
if($sync.ProcessRunning){
|
|
$msg = "Install process is currently running"
|
|
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
|
|
return
|
|
}
|
|
|
|
$WingetInstall = Get-WinUtilCheckBoxes -Group "WPFInstall"
|
|
|
|
if ($wingetinstall.Count -eq 0) {
|
|
$WarningMsg = "Please select the program(s) to install"
|
|
[System.Windows.MessageBox]::Show($WarningMsg, $AppTitle, [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
|
|
return
|
|
}
|
|
|
|
$ButtonType = [System.Windows.MessageBoxButton]::YesNo
|
|
$MessageboxTitle = "Are you sure?"
|
|
$Messageboxbody = ("This will uninstall the following applications: `n $WingetInstall")
|
|
$MessageIcon = [System.Windows.MessageBoxImage]::Information
|
|
|
|
$confirm = [System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
|
|
|
|
if($confirm -eq "No"){return}
|
|
|
|
Invoke-WPFRunspace -ArgumentList $WingetInstall -scriptblock {
|
|
param($WingetInstall)
|
|
try{
|
|
$sync.ProcessRunning = $true
|
|
|
|
# Install all selected programs in new window
|
|
Install-WinUtilProgramWinget -ProgramsToInstall $WingetInstall -Manage "Uninstalling"
|
|
|
|
$ButtonType = [System.Windows.MessageBoxButton]::OK
|
|
$MessageboxTitle = "Uninstalls are Finished "
|
|
$Messageboxbody = ("Done")
|
|
$MessageIcon = [System.Windows.MessageBoxImage]::Information
|
|
|
|
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
|
|
|
|
Write-Host "==========================================="
|
|
Write-Host "-- Uninstalls have finished ---"
|
|
Write-Host "==========================================="
|
|
}
|
|
Catch {
|
|
Write-Host "==========================================="
|
|
Write-Host "-- Winget failed to install ---"
|
|
Write-Host "==========================================="
|
|
}
|
|
$sync.ProcessRunning = $False
|
|
}
|
|
}
|
|
function Invoke-WPFUpdatesdefault {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Resets Windows Update settings to default
|
|
|
|
#>
|
|
If (!(Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU")) {
|
|
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Force | Out-Null
|
|
}
|
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "NoAutoUpdate" -Type DWord -Value 0
|
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "AUOptions" -Type DWord -Value 3
|
|
If (!(Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config")) {
|
|
New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config" -Force | Out-Null
|
|
}
|
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config" -Name "DODownloadMode" -Type DWord -Value 1
|
|
|
|
$services = @(
|
|
"BITS"
|
|
"wuauserv"
|
|
)
|
|
|
|
foreach ($service in $services) {
|
|
# -ErrorAction SilentlyContinue is so it doesn't write an error to stdout if a service doesn't exist
|
|
|
|
Write-Host "Setting $service StartupType to Automatic"
|
|
Get-Service -Name $service -ErrorAction SilentlyContinue | Set-Service -StartupType Automatic
|
|
}
|
|
Write-Host "Enabling driver offering through Windows Update..."
|
|
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Device Metadata" -Name "PreventDeviceMetadataFromNetwork" -ErrorAction SilentlyContinue
|
|
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DriverSearching" -Name "DontPromptForWindowsUpdate" -ErrorAction SilentlyContinue
|
|
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DriverSearching" -Name "DontSearchWindowsUpdate" -ErrorAction SilentlyContinue
|
|
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DriverSearching" -Name "DriverUpdateWizardWuSearchEnabled" -ErrorAction SilentlyContinue
|
|
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" -Name "ExcludeWUDriversInQualityUpdate" -ErrorAction SilentlyContinue
|
|
Write-Host "Enabling Windows Update automatic restart..."
|
|
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "NoAutoRebootWithLoggedOnUsers" -ErrorAction SilentlyContinue
|
|
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "AUPowerManagement" -ErrorAction SilentlyContinue
|
|
Write-Host "Enabled driver offering through Windows Update"
|
|
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" -Name "BranchReadinessLevel" -ErrorAction SilentlyContinue
|
|
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" -Name "DeferFeatureUpdatesPeriodInDays" -ErrorAction SilentlyContinue
|
|
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" -Name "DeferQualityUpdatesPeriodInDays" -ErrorAction SilentlyContinue
|
|
Write-Host "==================================================="
|
|
Write-Host "--- Windows Update Settings Reset to Default ---"
|
|
Write-Host "==================================================="
|
|
}
|
|
function Invoke-WPFUpdatesdisable {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Disables Windows Update
|
|
|
|
.NOTES
|
|
Disabling Windows Update is not recommended. This is only for advanced users who know what they are doing.
|
|
|
|
#>
|
|
If (!(Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU")) {
|
|
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Force | Out-Null
|
|
}
|
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "NoAutoUpdate" -Type DWord -Value 1
|
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "AUOptions" -Type DWord -Value 1
|
|
If (!(Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config")) {
|
|
New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config" -Force | Out-Null
|
|
}
|
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config" -Name "DODownloadMode" -Type DWord -Value 0
|
|
|
|
$services = @(
|
|
"BITS"
|
|
"wuauserv"
|
|
)
|
|
|
|
foreach ($service in $services) {
|
|
# -ErrorAction SilentlyContinue is so it doesn't write an error to stdout if a service doesn't exist
|
|
|
|
Write-Host "Setting $service StartupType to Disabled"
|
|
Get-Service -Name $service -ErrorAction SilentlyContinue | Set-Service -StartupType Disabled
|
|
}
|
|
Write-Host "================================="
|
|
Write-Host "--- Updates ARE DISABLED ---"
|
|
Write-Host "================================="
|
|
}
|
|
function Invoke-WPFUpdatessecurity {
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
Sets Windows Update to recommended settings
|
|
|
|
.DESCRIPTION
|
|
1. Disables driver offering through Windows Update
|
|
2. Disables Windows Update automatic restart
|
|
3. Sets Windows Update to Semi-Annual Channel (Targeted)
|
|
4. Defers feature updates for 365 days
|
|
5. Defers quality updates for 4 days
|
|
|
|
#>
|
|
Write-Host "Disabling driver offering through Windows Update..."
|
|
If (!(Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Device Metadata")) {
|
|
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Device Metadata" -Force | Out-Null
|
|
}
|
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Device Metadata" -Name "PreventDeviceMetadataFromNetwork" -Type DWord -Value 1
|
|
If (!(Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DriverSearching")) {
|
|
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DriverSearching" -Force | Out-Null
|
|
}
|
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DriverSearching" -Name "DontPromptForWindowsUpdate" -Type DWord -Value 1
|
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DriverSearching" -Name "DontSearchWindowsUpdate" -Type DWord -Value 1
|
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DriverSearching" -Name "DriverUpdateWizardWuSearchEnabled" -Type DWord -Value 0
|
|
If (!(Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate")) {
|
|
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" | Out-Null
|
|
}
|
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" -Name "ExcludeWUDriversInQualityUpdate" -Type DWord -Value 1
|
|
Write-Host "Disabling Windows Update automatic restart..."
|
|
If (!(Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU")) {
|
|
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Force | Out-Null
|
|
}
|
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "NoAutoRebootWithLoggedOnUsers" -Type DWord -Value 1
|
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "AUPowerManagement" -Type DWord -Value 0
|
|
Write-Host "Disabled driver offering through Windows Update"
|
|
If (!(Test-Path "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings")) {
|
|
New-Item -Path "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" -Force | Out-Null
|
|
}
|
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" -Name "BranchReadinessLevel" -Type DWord -Value 20
|
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" -Name "DeferFeatureUpdatesPeriodInDays" -Type DWord -Value 365
|
|
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" -Name "DeferQualityUpdatesPeriodInDays" -Type DWord -Value 4
|
|
|
|
$ButtonType = [System.Windows.MessageBoxButton]::OK
|
|
$MessageboxTitle = "Set Security Updates"
|
|
$Messageboxbody = ("Recommended Update settings loaded")
|
|
$MessageIcon = [System.Windows.MessageBoxImage]::Information
|
|
|
|
[System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon)
|
|
Write-Host "================================="
|
|
Write-Host "-- Updates Set to Recommended ---"
|
|
Write-Host "================================="
|
|
}
|
|
$inputXML = '<Window x:Class="WinUtility.MainWindow"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
xmlns:local="clr-namespace:WinUtility"
|
|
mc:Ignorable="d"
|
|
Background="{MainBackgroundColor}"
|
|
WindowStartupLocation="CenterScreen"
|
|
WindowStyle="None"
|
|
Title="Chris Titus Tech''s Windows Utility" Height="800" Width="1280">
|
|
<WindowChrome.WindowChrome>
|
|
<WindowChrome CaptionHeight="0" CornerRadius="10"/>
|
|
</WindowChrome.WindowChrome>
|
|
<Window.Resources>
|
|
|
|
<Storyboard x:Key="FireworksAnimation">
|
|
<!-- Firework Burst -->
|
|
<DoubleAnimation Storyboard.TargetName="FireworkBurst" Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:0.5"/>
|
|
<DoubleAnimation Storyboard.TargetName="FireworkBurst" Storyboard.TargetProperty="ScaleX" From="0" To="1" Duration="0:0:0.5"/>
|
|
<DoubleAnimation Storyboard.TargetName="FireworkBurst" Storyboard.TargetProperty="ScaleY" From="0" To="1" Duration="0:0:0.5"/>
|
|
<ColorAnimation Storyboard.TargetName="FireworkBurst" Storyboard.TargetProperty="(Path.Fill).(SolidColorBrush.Color)" To="Red" Duration="0:0:0.5"/>
|
|
</Storyboard>
|
|
|
|
<!--Scrollbar Thumbs-->
|
|
<Style x:Key="ScrollThumbs" TargetType="{x:Type Thumb}">
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="{x:Type Thumb}">
|
|
<Grid x:Name="Grid">
|
|
<Rectangle HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto" Height="Auto" Fill="Transparent" />
|
|
<Border x:Name="Rectangle1" CornerRadius="5" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto" Height="Auto" Background="{TemplateBinding Background}" />
|
|
</Grid>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="Tag" Value="Horizontal">
|
|
<Setter TargetName="Rectangle1" Property="Width" Value="Auto" />
|
|
<Setter TargetName="Rectangle1" Property="Height" Value="7" />
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
|
|
<Style TargetType="TextBlock" x:Key="HoverTextBlockStyle">
|
|
<Setter Property="Foreground" Value="{LinkForegroundColor}" />
|
|
<Setter Property="TextDecorations" Value="Underline" />
|
|
<Style.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Foreground" Value="{LinkHoverForegroundColor}" />
|
|
<Setter Property="TextDecorations" Value="Underline" />
|
|
<Setter Property="Cursor" Value="Hand" />
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
|
|
<!--ScrollBars-->
|
|
<Style x:Key="{x:Type ScrollBar}" TargetType="{x:Type ScrollBar}">
|
|
<Setter Property="Stylus.IsFlicksEnabled" Value="false" />
|
|
<Setter Property="Foreground" Value="{MainForegroundColor}" />
|
|
<Setter Property="Background" Value="{MainBackgroundColor}" />
|
|
<Setter Property="Width" Value="6" />
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="{x:Type ScrollBar}">
|
|
<Grid x:Name="GridRoot" Width="7" Background="{TemplateBinding Background}" >
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="0.00001*" />
|
|
</Grid.RowDefinitions>
|
|
|
|
<Track x:Name="PART_Track" Grid.Row="0" IsDirectionReversed="true" Focusable="false">
|
|
<Track.Thumb>
|
|
<Thumb x:Name="Thumb" Background="{TemplateBinding Foreground}" Style="{DynamicResource ScrollThumbs}" />
|
|
</Track.Thumb>
|
|
<Track.IncreaseRepeatButton>
|
|
<RepeatButton x:Name="PageUp" Command="ScrollBar.PageDownCommand" Opacity="0" Focusable="false" />
|
|
</Track.IncreaseRepeatButton>
|
|
<Track.DecreaseRepeatButton>
|
|
<RepeatButton x:Name="PageDown" Command="ScrollBar.PageUpCommand" Opacity="0" Focusable="false" />
|
|
</Track.DecreaseRepeatButton>
|
|
</Track>
|
|
</Grid>
|
|
|
|
<ControlTemplate.Triggers>
|
|
<Trigger SourceName="Thumb" Property="IsMouseOver" Value="true">
|
|
<Setter Value="{ButtonBackgroundMouseoverColor}" TargetName="Thumb" Property="Background" />
|
|
</Trigger>
|
|
<Trigger SourceName="Thumb" Property="IsDragging" Value="true">
|
|
<Setter Value="{ButtonBackgroundSelectedColor}" TargetName="Thumb" Property="Background" />
|
|
</Trigger>
|
|
|
|
<Trigger Property="IsEnabled" Value="false">
|
|
<Setter TargetName="Thumb" Property="Visibility" Value="Collapsed" />
|
|
</Trigger>
|
|
<Trigger Property="Orientation" Value="Horizontal">
|
|
<Setter TargetName="GridRoot" Property="LayoutTransform">
|
|
<Setter.Value>
|
|
<RotateTransform Angle="-90" />
|
|
</Setter.Value>
|
|
</Setter>
|
|
<Setter TargetName="PART_Track" Property="LayoutTransform">
|
|
<Setter.Value>
|
|
<RotateTransform Angle="-90" />
|
|
</Setter.Value>
|
|
</Setter>
|
|
<Setter Property="Width" Value="Auto" />
|
|
<Setter Property="Height" Value="8" />
|
|
<Setter TargetName="Thumb" Property="Tag" Value="Horizontal" />
|
|
<Setter TargetName="PageDown" Property="Command" Value="ScrollBar.PageLeftCommand" />
|
|
<Setter TargetName="PageUp" Property="Command" Value="ScrollBar.PageRightCommand" />
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
<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="Transparent"
|
|
HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2"
|
|
/>
|
|
</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 HorizontalAlignment="Center" VerticalAlignment="Center" Margin="2"/>
|
|
</ScrollViewer>
|
|
</Border>
|
|
</Popup>
|
|
</Grid>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
<Style TargetType="Label">
|
|
<Setter Property="Foreground" Value="{LabelboxForegroundColor}"/>
|
|
<Setter Property="Background" Value="{LabelBackgroundColor}"/>
|
|
</Style>
|
|
<!-- TextBlock template -->
|
|
<Style TargetType="TextBlock">
|
|
<Setter Property="Foreground" Value="{LabelboxForegroundColor}"/>
|
|
<Setter Property="Background" Value="{LabelBackgroundColor}"/>
|
|
</Style>
|
|
<!-- Toggle button template x:Key="TabToggleButton" -->
|
|
<Style TargetType="{x:Type ToggleButton}">
|
|
<Setter Property="Margin" Value="{ButtonMargin}"/>
|
|
<Setter Property="Content" Value=""/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="ToggleButton">
|
|
<Grid>
|
|
<Border x:Name="ButtonGlow"
|
|
Background="{TemplateBinding Background}"
|
|
BorderBrush="{ButtonForegroundColor}"
|
|
BorderThickness="{ButtonBorderThickness}"
|
|
CornerRadius="{ButtonCornerRadius}">
|
|
<Grid>
|
|
<Border x:Name="BackgroundBorder"
|
|
Background="{TemplateBinding Background}"
|
|
BorderBrush="{ButtonBackgroundColor}"
|
|
BorderThickness="{ButtonBorderThickness}"
|
|
CornerRadius="{ButtonCornerRadius}">
|
|
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"
|
|
Margin="10,2,10,2"/>
|
|
</Border>
|
|
</Grid>
|
|
</Border>
|
|
</Grid>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter TargetName="BackgroundBorder" Property="Background" Value="{ButtonBackgroundMouseoverColor}"/>
|
|
<Setter Property="Effect">
|
|
<Setter.Value>
|
|
<DropShadowEffect Opacity="1" ShadowDepth="5" Color="Gold" Direction="-100" BlurRadius="45"/>
|
|
</Setter.Value>
|
|
</Setter>
|
|
<Setter Property="Panel.ZIndex" Value="2000"/>
|
|
</Trigger>
|
|
<Trigger Property="IsChecked" Value="True">
|
|
<Setter Property="BorderBrush" Value="Pink"/>
|
|
<Setter Property="BorderThickness" Value="2"/>
|
|
<Setter TargetName="BackgroundBorder" Property="Background" Value="{ButtonBackgroundSelectedColor}"/>
|
|
<Setter Property="Effect">
|
|
<Setter.Value>
|
|
<DropShadowEffect Opacity="1" ShadowDepth="2" Color="Gold" Direction="-111" BlurRadius="25"/>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Trigger>
|
|
<Trigger Property="IsChecked" Value="False">
|
|
<Setter Property="BorderBrush" Value="Transparent"/>
|
|
<Setter Property="BorderThickness" Value="{ButtonBorderThickness}"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
<!-- Button Template -->
|
|
<Style TargetType="Button">
|
|
<Setter Property="Margin" Value="{ButtonMargin}"/>
|
|
<Setter Property="Foreground" Value="{ButtonForegroundColor}"/>
|
|
<Setter Property="Background" Value="{ButtonBackgroundColor}"/>
|
|
<Setter Property="Height" Value="{ToggleButtonHeight}"/>
|
|
<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" Margin="10,2,10,2"/>
|
|
</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="{ButtonBackgroundSelectedColor}"/>
|
|
<Setter Property="Foreground" Value="DimGray"/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
<Style x:Key="ClearButtonStyle" TargetType="Button">
|
|
<Setter Property="FontFamily" Value="Arial"/>
|
|
<Setter Property="FontSize" Value="14"/>
|
|
<Setter Property="Content" Value="X"/>
|
|
<Setter Property="Height" Value="14"/>
|
|
<Setter Property="Width" Value="14"/>
|
|
<Setter Property="Background" Value="Transparent"/>
|
|
<Setter Property="Foreground" Value="{MainForegroundColor}"/>
|
|
<Setter Property="Padding" Value="0"/>
|
|
<Setter Property="BorderBrush" Value="Transparent"/>
|
|
<Setter Property="BorderThickness" Value="0"/>
|
|
<Setter Property="Cursor" Value="Hand"/>
|
|
<Style.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Foreground" Value="Red"/>
|
|
<Setter Property="Background" Value="Transparent"/>
|
|
<Setter Property="BorderThickness" Value="10"/>
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
<!-- Checkbox template -->
|
|
<Style TargetType="CheckBox">
|
|
<Setter Property="Foreground" Value="{MainForegroundColor}"/>
|
|
<Setter Property="Background" Value="{MainBackgroundColor}"/>
|
|
<Setter Property="FontSize" Value="14" />
|
|
<Setter Property="TextElement.FontFamily" Value="Arial, sans-serif"/>
|
|
<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>
|
|
<ControlTemplate TargetType="CheckBox">
|
|
<StackPanel>
|
|
<Grid>
|
|
<Border Width="45"
|
|
Height="20"
|
|
Background="#555555"
|
|
CornerRadius="10"
|
|
Margin="5,0"
|
|
/>
|
|
<Border Name="WPFToggleSwitchButton"
|
|
Width="25"
|
|
Height="25"
|
|
Background="Black"
|
|
CornerRadius="12.5"
|
|
HorizontalAlignment="Left"
|
|
/>
|
|
<ContentPresenter Name="WPFToggleSwitchContent"
|
|
Margin="10,0,0,0"
|
|
Content="{TemplateBinding Content}"
|
|
VerticalAlignment="Center"
|
|
/>
|
|
</Grid>
|
|
</StackPanel>
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="IsChecked" Value="false">
|
|
<Trigger.ExitActions>
|
|
<RemoveStoryboard BeginStoryboardName="WPFToggleSwitchLeft" />
|
|
<BeginStoryboard x:Name="WPFToggleSwitchRight">
|
|
<Storyboard>
|
|
<ThicknessAnimation Storyboard.TargetProperty="Margin"
|
|
Storyboard.TargetName="WPFToggleSwitchButton"
|
|
Duration="0:0:0:0"
|
|
From="0,0,0,0"
|
|
To="28,0,0,0">
|
|
</ThicknessAnimation>
|
|
</Storyboard>
|
|
</BeginStoryboard>
|
|
</Trigger.ExitActions>
|
|
<Setter TargetName="WPFToggleSwitchButton"
|
|
Property="Background"
|
|
Value="#fff9f4f4"
|
|
/>
|
|
</Trigger>
|
|
<Trigger Property="IsChecked" Value="true">
|
|
<Trigger.ExitActions>
|
|
<RemoveStoryboard BeginStoryboardName="WPFToggleSwitchRight" />
|
|
<BeginStoryboard x:Name="WPFToggleSwitchLeft">
|
|
<Storyboard>
|
|
<ThicknessAnimation Storyboard.TargetProperty="Margin"
|
|
Storyboard.TargetName="WPFToggleSwitchButton"
|
|
Duration="0:0:0:0"
|
|
From="28,0,0,0"
|
|
To="0,0,0,0">
|
|
</ThicknessAnimation>
|
|
</Storyboard>
|
|
</BeginStoryboard>
|
|
</Trigger.ExitActions>
|
|
<Setter TargetName="WPFToggleSwitchButton"
|
|
Property="Background"
|
|
Value="#ff060600"
|
|
/>
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
<Style x:Key="ColorfulToggleSwitchStyle" TargetType="{x:Type CheckBox}">
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="{x:Type ToggleButton}">
|
|
<Grid x:Name="toggleSwitch">
|
|
<Border x:Name="Border" CornerRadius="10"
|
|
Background="#FFFFFFFF"
|
|
Width="70" Height="25">
|
|
<Border.Effect>
|
|
<DropShadowEffect ShadowDepth="0.5" Direction="0" Opacity="0.3" />
|
|
</Border.Effect>
|
|
<Ellipse x:Name="Ellipse" Fill="#FFFFFFFF" Stretch="Uniform"
|
|
Margin="2 2 2 1"
|
|
Stroke="Gray" StrokeThickness="0.2"
|
|
HorizontalAlignment="Left" Width="22">
|
|
<Ellipse.Effect>
|
|
<DropShadowEffect BlurRadius="10" ShadowDepth="1" Opacity="0.3" Direction="260" />
|
|
</Ellipse.Effect>
|
|
</Ellipse>
|
|
</Border>
|
|
|
|
<TextBlock x:Name="txtDisable" Text="Disable " VerticalAlignment="Center" FontWeight="DemiBold" HorizontalAlignment="Right" Foreground="White" FontSize="12" />
|
|
<TextBlock x:Name="txtEnable" Text=" Enable" VerticalAlignment="Center" FontWeight="DemiBold" Foreground="White" HorizontalAlignment="Left" FontSize="12" />
|
|
</Grid>
|
|
|
|
<ControlTemplate.Triggers>
|
|
<Trigger Property="ToggleButton.IsChecked" Value="False">
|
|
<Setter TargetName="Border" Property="Background" Value="#C2283B" />
|
|
<Setter TargetName="Ellipse" Property="Margin" Value="2 2 2 1" />
|
|
<Setter TargetName="txtDisable" Property="Opacity" Value="1.0" />
|
|
<Setter TargetName="txtEnable" Property="Opacity" Value="0.0" />
|
|
</Trigger>
|
|
|
|
<Trigger Property="ToggleButton.IsChecked" Value="True">
|
|
<Trigger.EnterActions>
|
|
<BeginStoryboard>
|
|
<Storyboard>
|
|
<ColorAnimation Storyboard.TargetName="Border"
|
|
Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)"
|
|
To="#34A543" Duration="0:0:0.1" />
|
|
|
|
<ThicknessAnimation Storyboard.TargetName="Ellipse"
|
|
Storyboard.TargetProperty="Margin"
|
|
To="46 2 2 1" Duration="0:0:0.1" />
|
|
|
|
<DoubleAnimation Storyboard.TargetName="txtDisable"
|
|
Storyboard.TargetProperty="(TextBlock.Opacity)"
|
|
To="0.0" Duration="0:0:0:0.1" />
|
|
|
|
<DoubleAnimation Storyboard.TargetName="txtEnable"
|
|
Storyboard.TargetProperty="(TextBlock.Opacity)"
|
|
To="1.0" Duration="0:0:0:0.1" />
|
|
</Storyboard>
|
|
</BeginStoryboard>
|
|
</Trigger.EnterActions>
|
|
|
|
<!-- Some out fading -->
|
|
<Trigger.ExitActions>
|
|
<BeginStoryboard>
|
|
<Storyboard>
|
|
<ColorAnimation Storyboard.TargetName="Border"
|
|
Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)"
|
|
To="#C2283B" Duration="0:0:0.1" />
|
|
|
|
<ThicknessAnimation Storyboard.TargetName="Ellipse"
|
|
Storyboard.TargetProperty="Margin"
|
|
To="2 2 2 1" Duration="0:0:0.1" />
|
|
|
|
<DoubleAnimation Storyboard.TargetName="txtDisable"
|
|
Storyboard.TargetProperty="(TextBlock.Opacity)"
|
|
To="1.0" Duration="0:0:0:0.1" />
|
|
|
|
<DoubleAnimation Storyboard.TargetName="txtEnable"
|
|
Storyboard.TargetProperty="(TextBlock.Opacity)"
|
|
To="0.0" Duration="0:0:0:0.1" />
|
|
</Storyboard>
|
|
</BeginStoryboard>
|
|
</Trigger.ExitActions>
|
|
|
|
<Setter Property="Foreground" Value="{DynamicResource IdealForegroundColorBrush}" />
|
|
</Trigger>
|
|
</ControlTemplate.Triggers>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
<Setter Property="VerticalContentAlignment" Value="Center" />
|
|
</Style>
|
|
<Style x:Key="labelfortweaks" TargetType="{x:Type Label}">
|
|
<Setter Property="Foreground" Value="{MainForegroundColor}" />
|
|
<Setter Property="Background" Value="{MainBackgroundColor}" />
|
|
<Style.Triggers>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
|
<Setter Property="Foreground" Value="White" />
|
|
</Trigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
|
|
<Style TargetType="Border">
|
|
<Setter Property="Background" Value="{MainBackgroundColor}"/>
|
|
<Setter Property="BorderBrush" Value="{BorderColor}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="CornerRadius" Value="5"/>
|
|
<Setter Property="Padding" Value="5"/>
|
|
<Setter Property="Margin" Value="5"/>
|
|
<Setter Property="Effect">
|
|
<Setter.Value>
|
|
<DropShadowEffect ShadowDepth="5" BlurRadius="5" Opacity="{BorderOpacity}" Color="{BorderColor}"/>
|
|
</Setter.Value>
|
|
</Setter>
|
|
<Style.Triggers>
|
|
<EventTrigger RoutedEvent="Loaded">
|
|
<BeginStoryboard>
|
|
<Storyboard RepeatBehavior="Forever">
|
|
<!-- <DoubleAnimation
|
|
Storyboard.TargetProperty="Effect.(DropShadowEffect.ShadowDepth)"
|
|
From="6" To="15" Duration="{ShadowPulse}" AutoReverse="True"/> -->
|
|
<!-- <DoubleAnimation
|
|
Storyboard.TargetProperty="Effect.(DropShadowEffect.Direction)"
|
|
From="0" To="360" Duration="Forever"/> -->
|
|
<DoubleAnimation
|
|
Storyboard.TargetProperty="Effect.(DropShadowEffect.Opacity)"
|
|
From="0.5" To="0.94" Duration="{ShadowPulse}" AutoReverse="True"/>
|
|
<DoubleAnimation
|
|
Storyboard.TargetProperty="Effect.(DropShadowEffect.BlurRadius)"
|
|
From="5" To="15" Duration="{ShadowPulse}" AutoReverse="True"/>
|
|
</Storyboard>
|
|
</BeginStoryboard>
|
|
</EventTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
|
|
<Style TargetType="TextBox">
|
|
<Setter Property="Background" Value="{MainBackgroundColor}"/>
|
|
<Setter Property="BorderBrush" Value="{MainForegroundColor}"/>
|
|
<Setter Property="BorderThickness" Value="1"/>
|
|
<Setter Property="Foreground" Value="{MainForegroundColor}"/>
|
|
<Setter Property="Padding" Value="5"/>
|
|
<Setter Property="HorizontalAlignment" Value="Stretch"/>
|
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
|
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
|
|
<Setter Property="Template">
|
|
<Setter.Value>
|
|
<ControlTemplate TargetType="TextBox">
|
|
<Border Background="{TemplateBinding Background}"
|
|
BorderBrush="{TemplateBinding BorderBrush}"
|
|
BorderThickness="{TemplateBinding BorderThickness}"
|
|
CornerRadius="5">
|
|
<Grid>
|
|
<ScrollViewer x:Name="PART_ContentHost" />
|
|
</Grid>
|
|
</Border>
|
|
</ControlTemplate>
|
|
</Setter.Value>
|
|
</Setter>
|
|
<Setter Property="Effect">
|
|
<Setter.Value>
|
|
<DropShadowEffect ShadowDepth="5" BlurRadius="5" Opacity="{BorderOpacity}" Color="{BorderColor}"/>
|
|
</Setter.Value>
|
|
</Setter>
|
|
</Style>
|
|
</Window.Resources>
|
|
<Grid Background="{MainBackgroundColor}" ShowGridLines="False" Name="WPFMainGrid" Width="Auto" Height="Auto" HorizontalAlignment="Stretch">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="50px"/>
|
|
<RowDefinition Height=".9*"/>
|
|
</Grid.RowDefinitions>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<DockPanel HorizontalAlignment="Stretch" Background="{MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Row="0" Width="Auto">
|
|
<Image Height="{ToggleButtonHeight}" Width="{ToggleButtonHeight}" Name="WPFIcon"
|
|
SnapsToDevicePixels="True" Source="https://christitus.com/images/logo-full.png" Margin="10"/>
|
|
<ToggleButton HorizontalAlignment="Left" Height="{ToggleButtonHeight}" Width="100"
|
|
Background="{ButtonInstallBackgroundColor}" Foreground="white" FontWeight="Bold" Name="WPFTab1BT">
|
|
<ToggleButton.Content>
|
|
<TextBlock Background="Transparent" Foreground="{ButtonInstallForegroundColor}" >
|
|
<Underline>I</Underline>nstall
|
|
</TextBlock>
|
|
</ToggleButton.Content>
|
|
</ToggleButton>
|
|
<ToggleButton HorizontalAlignment="Left" Height="{ToggleButtonHeight}" Width="100"
|
|
Background="{ButtonTweaksBackgroundColor}" Foreground="{ButtonTweaksForegroundColor}" FontWeight="Bold" Name="WPFTab2BT">
|
|
<ToggleButton.Content>
|
|
<TextBlock Background="Transparent" Foreground="{ButtonTweaksForegroundColor}">
|
|
<Underline>T</Underline>weaks
|
|
</TextBlock>
|
|
</ToggleButton.Content>
|
|
</ToggleButton>
|
|
<ToggleButton HorizontalAlignment="Left" Height="{ToggleButtonHeight}" Width="100"
|
|
Background="{ButtonConfigBackgroundColor}" Foreground="{ButtonConfigForegroundColor}" FontWeight="Bold" Name="WPFTab3BT">
|
|
<ToggleButton.Content>
|
|
<TextBlock Background="Transparent" Foreground="{ButtonConfigForegroundColor}">
|
|
<Underline>C</Underline>onfig
|
|
</TextBlock>
|
|
</ToggleButton.Content>
|
|
</ToggleButton>
|
|
<ToggleButton HorizontalAlignment="Left" Height="{ToggleButtonHeight}" Width="100"
|
|
Background="{ButtonUpdatesBackgroundColor}" Foreground="{ButtonUpdatesForegroundColor}" FontWeight="Bold" Name="WPFTab4BT">
|
|
<ToggleButton.Content>
|
|
<TextBlock Background="Transparent" Foreground="{ButtonUpdatesForegroundColor}">
|
|
<Underline>U</Underline>pdates
|
|
</TextBlock>
|
|
</ToggleButton.Content>
|
|
</ToggleButton>
|
|
<ToggleButton HorizontalAlignment="Left" Height="{ToggleButtonHeight}" Width="100"
|
|
Background="{ButtonUpdatesBackgroundColor}" Foreground="{ButtonUpdatesForegroundColor}" FontWeight="Bold" Name="WPFTab5BT">
|
|
<ToggleButton.Content>
|
|
<TextBlock Background="Transparent" Foreground="{ButtonUpdatesForegroundColor}">
|
|
<Underline>M</Underline>icroWin
|
|
</TextBlock>
|
|
</ToggleButton.Content>
|
|
</ToggleButton>
|
|
<Grid>
|
|
<TextBox Width="200"
|
|
FontSize="14"
|
|
VerticalAlignment="Center" HorizontalAlignment="Left"
|
|
Height="25" Margin="10,0,0,0" BorderThickness="1" Padding="22,2,2,2"
|
|
Name="CheckboxFilter"
|
|
Foreground="{MainForegroundColor}" Background="{MainBackgroundColor}"
|
|
ToolTip="Press Ctrl-F and type app name to filter application list below. Press Esc to reset the filter">
|
|
</TextBox>
|
|
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Left" FontFamily="Segoe MDL2 Assets"
|
|
FontSize="14" Margin="16,0,0,0"></TextBlock>
|
|
|
|
<Button Name="CheckboxFilterClear" Style="{StaticResource ClearButtonStyle}" Margin="184,0,0,0" Visibility="Collapsed"/>
|
|
</Grid>
|
|
<TextBlock Text="Version: 24.01.12" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="10,0,0,0"/>
|
|
<Button Content="×" BorderThickness="0"
|
|
BorderBrush="Transparent"
|
|
Background="{MainBackgroundColor}"
|
|
HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,5,5,0"
|
|
FontFamily="Arial"
|
|
Foreground="{MainForegroundColor}" FontSize="18" Name="WPFCloseButton" />
|
|
|
|
</DockPanel>
|
|
|
|
<TabControl Name="WPFTabNav" Background="Transparent" Width="Auto" Height="Auto" BorderBrush="Transparent" BorderThickness="0" Grid.Row="1" Grid.Column="0" Padding="-1">
|
|
<TabItem Header="Install" Visibility="Collapsed" Name="WPFTab1">
|
|
<Grid Background="Transparent" >
|
|
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="45px"/>
|
|
<RowDefinition Height="0.95*"/>
|
|
</Grid.RowDefinitions>
|
|
<StackPanel Background="{MainBackgroundColor}" Orientation="Horizontal" Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="Top" Grid.Column="0" Grid.ColumnSpan="3" Margin="5">
|
|
<Button Name="WPFinstall" Content=" Install Selected" Margin="2" />
|
|
<Button Name="WPFInstallUpgrade" Content=" Upgrade All" Margin="2"/>
|
|
<Button Name="WPFuninstall" Content=" Uninstall Selection" Margin="2"/>
|
|
<Button Name="WPFGetInstalled" Content=" Get Installed" Margin="2"/>
|
|
<Button Name="WPFclearWinget" Content=" Clear Selection" Margin="2"/>
|
|
|
|
<Label Content="Configuration:" FontSize="15" VerticalAlignment="Center"/>
|
|
<Button Name="WPFimportWinget" Content=" Import " Margin="1"/>
|
|
<Button Name="WPFexportWinget" Content=" Export " Margin="1"/>
|
|
</StackPanel>
|
|
|
|
<ScrollViewer Grid.Row="1" Grid.Column="0" Padding="-1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"
|
|
BorderBrush="Transparent" BorderThickness="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
|
|
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<Border Grid.Row="1" Grid.Column="0">
|
|
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
|
|
{{InstallPanel0}}
|
|
</StackPanel>
|
|
</Border>
|
|
<Border Grid.Row="1" Grid.Column="1">
|
|
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True" >
|
|
{{InstallPanel1}}
|
|
</StackPanel>
|
|
</Border>
|
|
<Border Grid.Row="1" Grid.Column="2">
|
|
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
|
|
{{InstallPanel2}}
|
|
</StackPanel>
|
|
</Border>
|
|
<Border Grid.Row="1" Grid.Column="3">
|
|
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
|
|
{{InstallPanel3}}
|
|
</StackPanel>
|
|
</Border>
|
|
<Border Grid.Row="1" Grid.Column="4">
|
|
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
|
|
{{InstallPanel4}}
|
|
</StackPanel>
|
|
</Border>
|
|
</Grid>
|
|
</ScrollViewer>
|
|
|
|
</Grid>
|
|
</TabItem>
|
|
<TabItem Header="Tweaks" Visibility="Collapsed" Name="WPFTab2">
|
|
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
|
<Grid Background="Transparent">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width=".50*"/>
|
|
<ColumnDefinition Width=".50*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="55"/>
|
|
<RowDefinition Height=".70*"/>
|
|
<RowDefinition Height=".10*"/>
|
|
</Grid.RowDefinitions>
|
|
<StackPanel Background="{MainBackgroundColor}" Orientation="Horizontal" HorizontalAlignment="Left" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Margin="10">
|
|
<Label Content="Recommended Selections:" FontSize="14" VerticalAlignment="Center"/>
|
|
<Button Name="WPFdesktop" Content=" Desktop " Margin="1"/>
|
|
<Button Name="WPFlaptop" Content=" Laptop " Margin="1"/>
|
|
<Button Name="WPFminimal" Content=" Minimal " Margin="1"/>
|
|
<Button Name="WPFclear" Content=" Clear " Margin="1"/>
|
|
<Button Name="WPFGetInstalledTweaks" Content=" Get Installed " Margin="1"/>
|
|
</StackPanel>
|
|
<StackPanel Background="{MainBackgroundColor}" Orientation="Horizontal" HorizontalAlignment="Left" Grid.Row="0" Grid.Column="1" Margin="10">
|
|
<Label Content="Configuration File:" FontSize="14" VerticalAlignment="Center"/>
|
|
<Button Name="WPFimport" Content=" Import " Margin="1"/>
|
|
<Button Name="WPFexport" Content=" Export " Margin="1"/>
|
|
</StackPanel>
|
|
<Border Grid.ColumnSpan="2" Grid.Row="2" Grid.Column="0">
|
|
<StackPanel Background="{MainBackgroundColor}" Orientation="Horizontal" HorizontalAlignment="Left">
|
|
<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>
|
|
</Border>
|
|
|
|
<Border Grid.Row="1" Grid.Column="0">
|
|
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
|
|
<Label FontSize="16" Content="Essential Tweaks"/>
|
|
<CheckBox Name="WPFEssTweaksRestorePoint" Content="Create Restore Point" Margin="5,0" ToolTip="Creates a restore point at runtime in case a revert is needed from WinUtil modifications" IsChecked="True"/>
|
|
<CheckBox Name="WPFEssTweaksOO" Content="Run OO Shutup" Margin="5,0" ToolTip="Runs OO Shutup from https://www.oo-software.com/en/shutup10"/>
|
|
<CheckBox Name="WPFEssTweaksTele" Content="Disable Telemetry" Margin="5,0" ToolTip="Disables Microsoft Telemetry. Note: This will lock many Edge Browser settings. Microsoft spies heavily on you when using the Edge browser."/>
|
|
<CheckBox Name="WPFEssTweaksWifi" Content="Disable Wifi-Sense" Margin="5,0" ToolTip="Wifi Sense is a spying service that phones home all nearby scanned wifi networks and your current geo location."/>
|
|
<CheckBox Name="WPFEssTweaksAH" Content="Disable Activity History" Margin="5,0" ToolTip="This erases recent docs, clipboard, and run history."/>
|
|
<CheckBox Name="WPFEssTweaksDeleteTempFiles" Content="Delete Temporary Files" Margin="5,0" ToolTip="Erases TEMP Folders"/>
|
|
<CheckBox Name="WPFEssTweaksDiskCleanup" Content="Run Disk Cleanup" Margin="5,0" ToolTip="Runs Disk Cleanup on Drive C: and removes old Windows Updates."/>
|
|
<CheckBox Name="WPFEssTweaksLoc" Content="Disable Location Tracking" Margin="5,0" ToolTip="Disables Location Tracking...DUH!"/>
|
|
<CheckBox Name="WPFEssTweaksHome" Content="Disable Homegroup" Margin="5,0" ToolTip="Disables HomeGroup - Windows 11 doesn''t have this, it was awful."/>
|
|
<CheckBox Name="WPFEssTweaksStorage" Content="Disable Storage Sense" Margin="5,0" ToolTip="Storage Sense deletes temp files automatically."/>
|
|
<CheckBox Name="WPFEssTweaksHiber" Content="Disable Hibernation" Margin="5,0" ToolTip="Hibernation is really meant for laptops as it saves what''s in memory before turning the pc off. It really should never be used, but some people are lazy and rely on it. Don''t be like Bob. Bob likes hibernation."/>
|
|
<CheckBox Name="WPFEssTweaksDVR" Content="Disable GameDVR" Margin="5,0" ToolTip="GameDVR is a Windows App that is a dependency for some Store Games. I''ve never met someone that likes it, but it''s there for the XBOX crowd."/>
|
|
<CheckBox Name="WPFEssTweaksTeredo" Content="Disable Teredo" Margin="5,0" ToolTip="Teredo network tunneling is a ipv6 feature that can cause additional latancy."/>
|
|
<CheckBox Name="WPFEssTweaksServices" Content="Set Services to Manual" Margin="5,0" ToolTip="Turns a bunch of system services to manual that don''t need to be running all the time. This is pretty harmless as if the service is needed, it will simply start on demand."/>
|
|
|
|
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
|
|
<Label FontSize="16" Content="Advanced Tweaks - CAUTION"/>
|
|
<CheckBox Name="WPFMiscTweaksDisplay" Content="Set Display for Performance" Margin="5,0" ToolTip="Sets the system preferences to performance. You can do this manually with sysdm.cpl as well."/>
|
|
<CheckBox Name="WPFMiscTweaksUTC" Content="Set Time to UTC (Dual Boot)" Margin="5,0" ToolTip="Essential for computers that are dual booting. Fixes the time sync with Linux Systems."/>
|
|
<CheckBox Name="WPFMiscTweaksDisableUAC" Content="Disable UAC" Margin="5,0" ToolTip="Disables User Account Control. Only recommended for Expert Users."/>
|
|
<CheckBox Name="WPFMiscTweaksDisableNotifications" Content="Disable Notification Tray/Calendar" Margin="5,0" ToolTip="Disables all Notifications INCLUDING Calendar"/>
|
|
<CheckBox Name="WPFEssTweaksDeBloat" Content="Remove ALL MS Store Apps - NOT RECOMMENDED" Margin="5,0" ToolTip="USE WITH CAUTION!!!!! This will remove ALL Microsoft store apps other than the essentials to make winget work. Games installed by MS Store ARE INCLUDED!"/>
|
|
<CheckBox Name="WPFEssTweaksRemoveEdge" Content="Remove Microsoft Edge - NOT RECOMMENDED" Margin="5,0" ToolTip="Removes MS Edge when it gets reinstalled by updates."/>
|
|
<CheckBox Name="WPFEssTweaksRemoveOnedrive" Content="Remove OneDrive" Margin="5,0" ToolTip="Copies OneDrive files to Default Home Folders and Uninstalls it."/>
|
|
<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="WPFMiscTweaksDisableipsix" Content="Disable IPv6" Margin="5,0" ToolTip="Disables IPv6."/>
|
|
<CheckBox Name="WPFMiscTweaksEnableipsix" Content="Enable IPv6" Margin="5,0" ToolTip="Enables IPv6."/>
|
|
|
|
<StackPanel Orientation="Horizontal" Margin="0,5,0,0">
|
|
<Label Content="DNS" HorizontalAlignment="Left" VerticalAlignment="Center"/>
|
|
<ComboBox Name="WPFchangedns" Height="32" Width="186" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="5,5">
|
|
<ComboBoxItem IsSelected="True" Content = "Default"/>
|
|
<ComboBoxItem Content = "DHCP"/>
|
|
<ComboBoxItem Content = "Google"/>
|
|
<ComboBoxItem Content = "Cloudflare"/>
|
|
<ComboBoxItem Content = "Cloudflare_Malware"/>
|
|
<ComboBoxItem Content = "Cloudflare_Malware_Adult"/>
|
|
<ComboBoxItem Content = "Level3"/>
|
|
<ComboBoxItem Content = "Open_DNS"/>
|
|
<ComboBoxItem Content = "Quad9"/>
|
|
</ComboBox>
|
|
</StackPanel>
|
|
|
|
<Button Name="WPFtweaksbutton" Content="Run Tweaks" HorizontalAlignment = "Left" Width="160" Margin="0,15,0,0"/>
|
|
<Button Name="WPFundoall" Content="Undo Selected Tweaks" HorizontalAlignment = "Left" Width="160" Margin="0,10,0,0"/>
|
|
|
|
</StackPanel>
|
|
|
|
</StackPanel>
|
|
</Border>
|
|
|
|
<Border Grid.Row="1" Grid.Column="1">
|
|
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
|
|
<Label FontSize="16" Content="Customize Preferences"/>
|
|
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
|
|
<Label Content="Dark Theme" Style="{StaticResource labelfortweaks}" ToolTip="Enable/Disable Dark Mode." />
|
|
<CheckBox Name="WPFToggleDarkMode" Style="{StaticResource ColorfulToggleSwitchStyle}" Margin="2.5,0"/>
|
|
</StackPanel>
|
|
|
|
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
|
|
<Label Content="Bing Search in Start Menu" Style="{StaticResource labelfortweaks}" ToolTip= "If enable then includes web search results from Bing in your Start Menu search." />
|
|
<CheckBox Name="WPFToggleBingSearch" Style="{StaticResource ColorfulToggleSwitchStyle}" Margin="2.5,0"/>
|
|
</StackPanel>
|
|
|
|
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
|
|
<Label Content="NumLock on Startup" Style="{StaticResource labelfortweaks}" ToolTip= "Toggle the Num Lock key state when your computer starts."/>
|
|
<CheckBox Name="WPFToggleNumLock" Style="{StaticResource ColorfulToggleSwitchStyle}" Margin="2.5,0"/>
|
|
</StackPanel>
|
|
|
|
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
|
|
<Label Content="Verbose Logon Messages" Style="{StaticResource labelfortweaks}" ToolTip="Show detailed messages during the login process for troubleshooting and diagnostics."/>
|
|
<CheckBox Name="WPFToggleVerboseLogon" Style="{StaticResource ColorfulToggleSwitchStyle}" Margin="2.5,0"/>
|
|
</StackPanel>
|
|
|
|
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
|
|
<Label Content="Show File Extensions" Style="{StaticResource labelfortweaks}" ToolTip="If enabled then File extensions (e.g., .txt, .jpg) are visible." />
|
|
<CheckBox Name="WPFToggleShowExt" Style="{StaticResource ColorfulToggleSwitchStyle}" Margin="2.5,0"/>
|
|
</StackPanel>
|
|
|
|
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
|
|
<Label Content="Mouse Acceleration" Style="{StaticResource labelfortweaks}" ToolTip="If Enabled then Cursor movement is affected by the speed of your physical mouse movements."/>
|
|
<CheckBox Name="WPFToggleMouseAcceleration" Style="{StaticResource ColorfulToggleSwitchStyle}" Margin="2.5,0"/>
|
|
</StackPanel>
|
|
|
|
<Label FontSize="16" Content="Performance Plans" />
|
|
<Button Name="WPFAddUltPerf" Content="Add and Activate 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 FontSize="16" Content="Shortcuts" />
|
|
<Button Name="WPFWinUtilShortcut" Content="Create WinUtil Shortcut" HorizontalAlignment = "Left" Margin="5,0" Padding="20,5" Width="300"/>
|
|
|
|
|
|
</StackPanel> <!-- End of Customize Preferences Section -->
|
|
</Border>
|
|
</Grid>
|
|
</ScrollViewer>
|
|
</TabItem>
|
|
<TabItem Header="Config" Visibility="Collapsed" Name="WPFTab3">
|
|
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
|
<Grid Background="Transparent">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<Border Grid.Row="0" Grid.Column="0">
|
|
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
|
|
<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"/>
|
|
<CheckBox Name="WPFFeaturesandbox" Content="Windows Sandbox" Margin="5,0"/>
|
|
<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" Content="Set Up Autologin" HorizontalAlignment = "Left" Margin="5,2" Padding="20,5" Width="300"/>
|
|
<Button Name="WPFFixesUpdate" FontSize="14" Content="Reset Windows Update" HorizontalAlignment = "Left" Margin="5,2" Padding="20,5" Width="300"/>
|
|
<Button Name="WPFFixesNetwork" FontSize="14" Content="Reset Network" HorizontalAlignment = "Left" Margin="5,2" Padding="20,5" Width="300"/>
|
|
<Button Name="WPFPanelDISM" FontSize="14" Content="System Corruption Scan" HorizontalAlignment = "Left" Margin="5,2" Padding="20,5" Width="300"/>
|
|
<Button Name="WPFFixesWinget" FontSize="14" Content="WinGet Reinstall" HorizontalAlignment = "Left" Margin="5,2" Padding="20,5" Width="300"/>
|
|
</StackPanel>
|
|
</Border>
|
|
<Border Grid.Row="0" Grid.Column="1">
|
|
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
|
|
<Label Content="Legacy Windows Panels" FontSize="16"/>
|
|
<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="WPFPanelregion" FontSize="14" Content="Region" 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>
|
|
</Border>
|
|
</Grid>
|
|
</ScrollViewer>
|
|
</TabItem>
|
|
<TabItem Header="Updates" Visibility="Collapsed" Name="WPFTab4">
|
|
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
|
<Grid Background="Transparent">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<Border Grid.Row="0" Grid.Column="0">
|
|
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
|
|
<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>
|
|
</Border>
|
|
<Border Grid.Row="0" Grid.Column="1">
|
|
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
|
|
<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>
|
|
</Border>
|
|
<Border Grid.Row="0" Grid.Column="2">
|
|
<StackPanel Background="{MainBackgroundColor}" SnapsToDevicePixels="True">
|
|
<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"/>
|
|
</StackPanel>
|
|
</Border>
|
|
</Grid>
|
|
</ScrollViewer>
|
|
</TabItem>
|
|
<TabItem Header="MicroWin" Visibility="Collapsed" Name="WPFTab5" Width="Auto" Height="Auto">
|
|
<ScrollViewer VerticalScrollBarVisibility="Auto">
|
|
<Grid Width="Auto" Height="Auto">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="3*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="*" />
|
|
</Grid.RowDefinitions>
|
|
<Border Grid.Row="0" Grid.Column="0"
|
|
VerticalAlignment="Stretch"
|
|
HorizontalAlignment="Stretch">
|
|
<StackPanel Name="MicrowinMain" Background="{MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Column="0" Grid.Row="0">
|
|
<StackPanel Background="Transparent" SnapsToDevicePixels="True" Margin="1">
|
|
<CheckBox x:Name="WPFMicrowinDownloadFromGitHub" Content="Download oscdimg.exe from CTT Github repo" IsChecked="False" Margin="1" />
|
|
<TextBlock Margin="5" Padding="1" TextWrapping="Wrap" Foreground="{ComboBoxForegroundColor}">
|
|
Choose a Windows ISO file that you''ve downloaded <LineBreak/>
|
|
Check the status in the console
|
|
</TextBlock>
|
|
<TextBox Name="MicrowinFinalIsoLocation" Background="Transparent" BorderBrush="{MainForegroundColor}"
|
|
Text="ISO location will be printed here"
|
|
Margin="2"
|
|
IsReadOnly="True"
|
|
TextWrapping="Wrap"
|
|
Foreground="{LabelboxForegroundColor}"
|
|
/>
|
|
<Button Name="WPFGetIso" Margin="2" Padding="15">
|
|
<Button.Content>
|
|
<TextBlock Background="Transparent" Foreground="{ButtonForegroundColor}">
|
|
Select Windows <Underline>I</Underline>SO
|
|
</TextBlock>
|
|
</Button.Content>
|
|
</Button>
|
|
</StackPanel>
|
|
<!-- Visibility="Hidden" -->
|
|
<StackPanel Name="MicrowinOptionsPanel" HorizontalAlignment="Left" SnapsToDevicePixels="True" Margin="1" Visibility="Hidden">
|
|
<TextBlock Margin="6" Padding="1" TextWrapping="Wrap">Choose Windows SKU</TextBlock>
|
|
<ComboBox x:Name = "MicrowinWindowsFlavors" Margin="1" />
|
|
<TextBlock Margin="6" Padding="1" TextWrapping="Wrap">Choose Windows features you want to remove from the ISO</TextBlock>
|
|
<CheckBox Name="WPFMicrowinKeepProvisionedPackages" Content="Keep Provisioned Packages" Margin="5,0" ToolTip="Do not remove Microsoft Provisioned packages from the ISO."/>
|
|
<CheckBox Name="WPFMicrowinKeepAppxPackages" Content="Keep Appx Packages" Margin="5,0" ToolTip="Do not remove Microsoft Appx packages from the ISO."/>
|
|
<CheckBox Name="WPFMicrowinKeepDefender" Content="Keep Defender" Margin="5,0" IsChecked="True" ToolTip="Do not remove Microsoft Antivirus from the ISO."/>
|
|
<CheckBox Name="WPFMicrowinKeepEdge" Content="Keep Edge" Margin="5,0" IsChecked="True" ToolTip="Do not remove Microsoft Edge from the ISO."/>
|
|
<Rectangle Fill="{MainForegroundColor}" Height="2" HorizontalAlignment="Stretch" Margin="0,10,0,10"/>
|
|
<CheckBox Name="MicrowinInjectDrivers" Content="Inject drivers (I KNOW WHAT I''M DOING)" Margin="5,0" IsChecked="False" ToolTip="Path to unpacked drivers all sys and inf files for devices that need drivers"/>
|
|
<TextBox Name="MicrowinDriverLocation" Background="Transparent" BorderThickness="1" BorderBrush="{MainForegroundColor}"
|
|
Margin="6"
|
|
Text=""
|
|
IsReadOnly="False"
|
|
TextWrapping="Wrap"
|
|
Foreground="{LabelboxForegroundColor}"
|
|
ToolTip="Path to unpacked drivers all sys and inf files for devices that need drivers"
|
|
/>
|
|
<Rectangle Fill="{MainForegroundColor}" Height="2" HorizontalAlignment="Stretch" Margin="0,10,0,10"/>
|
|
<CheckBox Name="WPFMicrowinCopyToUsb" Content="Copy to Ventoy" Margin="5,0" IsChecked="False" ToolTip="Copy to USB disk with a label Ventoy"/>
|
|
<Rectangle Fill="{MainForegroundColor}" Height="2" HorizontalAlignment="Stretch" Margin="0,10,0,10"/>
|
|
<Button Name="WPFMicrowin" Content="Start the process" Margin="2" Padding="15"/>
|
|
</StackPanel>
|
|
<StackPanel HorizontalAlignment="Left" SnapsToDevicePixels="True" Margin="1" Visibility="Collapsed">
|
|
<TextBlock Name="MicrowinIsoDrive" VerticalAlignment="Center" Margin="1" Padding="1" TextWrapping="WrapWithOverflow" Foreground="{ComboBoxForegroundColor}"/>
|
|
<TextBlock Name="MicrowinIsoLocation" VerticalAlignment="Center" Margin="1" Padding="1" TextWrapping="WrapWithOverflow" Foreground="{ComboBoxForegroundColor}"/>
|
|
<TextBlock Name="MicrowinMountDir" VerticalAlignment="Center" Margin="1" Padding="1" TextWrapping="WrapWithOverflow" Foreground="{ComboBoxForegroundColor}"/>
|
|
<TextBlock Name="MicrowinScratchDir" VerticalAlignment="Center" Margin="1" Padding="1" TextWrapping="WrapWithOverflow" Foreground="{ComboBoxForegroundColor}"/>
|
|
</StackPanel>
|
|
</StackPanel>
|
|
</Border>
|
|
<Border
|
|
VerticalAlignment="Stretch"
|
|
HorizontalAlignment="Stretch"
|
|
Grid.Row="0" Grid.Column="1">
|
|
<StackPanel HorizontalAlignment="Left" Background="{MainBackgroundColor}" SnapsToDevicePixels="True" Visibility="Visible">
|
|
|
|
<TextBlock x:Name = "asciiTextBlock"
|
|
xml:space ="preserve"
|
|
HorizontalAlignment = "Center"
|
|
Margin = "0"
|
|
VerticalAlignment = "Top"
|
|
Height = "Auto"
|
|
Width = "Auto"
|
|
FontSize = "10"
|
|
FontFamily = "Courier New"
|
|
>
|
|
/\/\ (_) ___ _ __ ___ / / /\ \ \(_) _ __
|
|
/ \ | | / __|| ''__| / _ \ \ \/ \/ /| || ''_ \
|
|
/ /\/\ \| || (__ | | | (_) | \ /\ / | || | | |
|
|
\/ \/|_| \___||_| \___/ \/ \/ |_||_| |_|
|
|
</TextBlock>
|
|
|
|
<TextBlock Margin="15,15,15,0"
|
|
Padding="8,8,8,0"
|
|
VerticalAlignment="Center"
|
|
TextWrapping="WrapWithOverflow"
|
|
Height = "Auto"
|
|
Width = "Auto"
|
|
Foreground="{ComboBoxForegroundColor}">
|
|
<Bold>MicroWin features:</Bold><LineBreak/>
|
|
- Remove Telemetry and Tracking <LineBreak/>
|
|
- Add ability to use local accounts <LineBreak/>
|
|
- Remove Wifi requirement to finish install <LineBreak/>
|
|
- Ability to remove Edge <LineBreak/>
|
|
- Ability to remove Defender <LineBreak/>
|
|
- Remove Teams <LineBreak/>
|
|
- Apps debloat <LineBreak/>
|
|
<LineBreak/>
|
|
<LineBreak/>
|
|
|
|
<Bold>INSTRUCTIONS</Bold> <LineBreak/>
|
|
- Download the latest Windows 11 image from Microsoft <LineBreak/>
|
|
LINK: https://www.microsoft.com/software-download/windows11 <LineBreak/>
|
|
May take several minutes to process the ISO depending on your machine and connection <LineBreak/>
|
|
- Put it somewhere on the C:\ drive so it is easily accessible <LineBreak/>
|
|
- Launch WinUtil and MicroWin <LineBreak/>
|
|
- Click on the "Select Windows ISO" button and wait for WinUtil to process the image <LineBreak/>
|
|
It will be processed and unpacked which may take some time <LineBreak/>
|
|
- Once complete, choose which Windows flavor you want to base your image on <LineBreak/>
|
|
- Choose which features you want to keep <LineBreak/>
|
|
- Click the "Start Process" button <LineBreak/>
|
|
The process of creating the Windows image may take some time, please check the console and wait for it to say "Done" <LineBreak/>
|
|
- Once complete, the target ISO file will be in the directory you have specified <LineBreak/>
|
|
- Copy this image to your Ventoy USB Stick, boot to this image, gg
|
|
<LineBreak/>
|
|
If you are injecting drivers ensure you put all your inf, sys, and dll files for each driver into a separate directory
|
|
</TextBlock>
|
|
<TextBlock Margin="15,0,15,15"
|
|
Padding = "1"
|
|
TextWrapping="WrapWithOverflow"
|
|
Height = "Auto"
|
|
Width = "Auto"
|
|
VerticalAlignment = "Top"
|
|
Foreground = "{ComboBoxForegroundColor}"
|
|
xml:space = "preserve"
|
|
>
|
|
<Bold>Example:</Bold>
|
|
C:\drivers\
|
|
|-- Driver1\
|
|
| |-- Driver1.inf
|
|
| |-- Driver1.sys
|
|
|-- Driver2\
|
|
| |-- Driver2.inf
|
|
| |-- Driver2.sys
|
|
|-- OtherFiles...
|
|
</TextBlock>
|
|
</StackPanel>
|
|
</Border>
|
|
</Grid>
|
|
</ScrollViewer>
|
|
</TabItem>
|
|
</TabControl>
|
|
</Grid>
|
|
</Window>'
|
|
$sync.configs.applications = '{
|
|
"WPFInstallbrave": {
|
|
"winget": "Brave.Brave",
|
|
"choco": "brave",
|
|
"category": "Browsers",
|
|
"panel": "0",
|
|
"content": "Brave",
|
|
"link": "https://www.brave.com",
|
|
"description": "Brave is a privacy-focused web browser that blocks ads and trackers, offering a faster and safer browsing experience."
|
|
},
|
|
"WPFInstallchrome": {
|
|
"winget": "Google.Chrome",
|
|
"choco": "googlechrome",
|
|
"category": "Browsers",
|
|
"panel": "0",
|
|
"content": "Chrome",
|
|
"link": "https://www.google.com/chrome/",
|
|
"description": "Google Chrome is a widely used web browser known for its speed, simplicity, and seamless integration with Google services."
|
|
},
|
|
"WPFInstallchromium": {
|
|
"winget": "Hibbiki.Chromium",
|
|
"choco": "chromium",
|
|
"category": "Browsers",
|
|
"panel": "0",
|
|
"content": "Chromium",
|
|
"link": "https://github.com/Hibbiki/chromium-win64",
|
|
"description": "Chromium is the open-source project that serves as the foundation for various web browsers, including Chrome."
|
|
},
|
|
"WPFInstalledge": {
|
|
"winget": "Microsoft.Edge",
|
|
"choco": "microsoft-edge",
|
|
"category": "Browsers",
|
|
"panel": "0",
|
|
"content": "Edge",
|
|
"link": "https://www.microsoft.com/edge",
|
|
"description": "Microsoft Edge is a modern web browser built on Chromium, offering performance, security, and integration with Microsoft services."
|
|
},
|
|
"WPFInstallfalkon": {
|
|
"winget": "KDE.Falkon",
|
|
"choco": "falkon",
|
|
"category": "Browsers",
|
|
"panel": "0",
|
|
"content": "Falkon",
|
|
"link": "https://www.falkon.org/",
|
|
"description": "Falkon is a lightweight and fast web browser with a focus on user privacy and efficiency."
|
|
},
|
|
"WPFInstallfirefox": {
|
|
"winget": "Mozilla.Firefox",
|
|
"choco": "firefox",
|
|
"category": "Browsers",
|
|
"panel": "0",
|
|
"content": "Firefox",
|
|
"link": "https://www.mozilla.org/en-US/firefox/new/",
|
|
"description": "Mozilla Firefox is an open-source web browser known for its customization options, privacy features, and extensions."
|
|
},
|
|
"WPFInstallfloorp": {
|
|
"winget": "Ablaze.Floorp",
|
|
"choco": "na",
|
|
"category": "Browsers",
|
|
"panel": "0",
|
|
"content": "Floorp",
|
|
"link": "https://github.com/Floorp-Projects/Floorp",
|
|
"description": "Floorp is an open-source web browser project that aims to provide a simple and fast browsing experience."
|
|
},
|
|
"WPFInstalllibrewolf": {
|
|
"winget": "LibreWolf.LibreWolf",
|
|
"choco": "librewolf",
|
|
"category": "Browsers",
|
|
"panel": "0",
|
|
"content": "LibreWolf",
|
|
"link": "https://librewolf-community.gitlab.io/",
|
|
"description": "LibreWolf is a privacy-focused web browser based on Firefox, with additional privacy and security enhancements."
|
|
},
|
|
"WPFInstalltor": {
|
|
"winget": "TorProject.TorBrowser",
|
|
"choco": "tor-browser",
|
|
"category": "Browsers",
|
|
"panel": "0",
|
|
"content": "Tor Browser",
|
|
"link": "https://www.torproject.org/",
|
|
"description": "Tor Browser is designed for anonymous web browsing, utilizing the Tor network to protect user privacy and security."
|
|
},
|
|
"WPFInstallungoogled": {
|
|
"winget": "eloston.ungoogled-chromium",
|
|
"choco": "ungoogled-chromium",
|
|
"category": "Browsers",
|
|
"panel": "0",
|
|
"content": "Ungoogled",
|
|
"link": "https://github.com/Eloston/ungoogled-chromium",
|
|
"description": "Ungoogled Chromium is a version of Chromium without Google''s integration for enhanced privacy and control."
|
|
},
|
|
"WPFInstallvivaldi": {
|
|
"winget": "VivaldiTechnologies.Vivaldi",
|
|
"choco": "vivaldi",
|
|
"category": "Browsers",
|
|
"panel": "0",
|
|
"content": "Vivaldi",
|
|
"link": "https://vivaldi.com/",
|
|
"description": "Vivaldi is a highly customizable web browser with a focus on user personalization and productivity features."
|
|
},
|
|
"WPFInstallwaterfox": {
|
|
"winget": "Waterfox.Waterfox",
|
|
"choco": "waterfox",
|
|
"category": "Browsers",
|
|
"panel": "0",
|
|
"content": "Waterfox",
|
|
"link": "https://www.waterfox.net/",
|
|
"description": "Waterfox is a fast, privacy-focused web browser based on Firefox, designed to preserve user choice and privacy."
|
|
},
|
|
"WPFInstallchatterino": {
|
|
"winget": "ChatterinoTeam.Chatterino",
|
|
"choco": "chatterino",
|
|
"category": "Communications",
|
|
"panel": "0",
|
|
"content": "Chatterino",
|
|
"link": "https://www.chatterino.com/",
|
|
"description": "Chatterino is a chat client for Twitch chat that offers a clean and customizable interface for a better streaming experience."
|
|
},
|
|
"WPFInstalldiscord": {
|
|
"winget": "Discord.Discord",
|
|
"choco": "discord",
|
|
"category": "Communications",
|
|
"panel": "0",
|
|
"content": "Discord",
|
|
"link": "https://discord.com/",
|
|
"description": "Discord is a popular communication platform with voice, video, and text chat, designed for gamers but used by a wide range of communities."
|
|
},
|
|
"WPFInstallferdium": {
|
|
"winget": "Ferdium.Ferdium",
|
|
"choco": "ferdium",
|
|
"category": "Communications",
|
|
"panel": "0",
|
|
"content": "Ferdium",
|
|
"link": "https://www.ferdiapp.com/",
|
|
"description": "Ferdium is a messaging application that combines multiple messaging services into a single app for easy management."
|
|
},
|
|
"WPFInstallguilded": {
|
|
"winget": "Guilded.Guilded",
|
|
"choco": "na",
|
|
"category": "Communications",
|
|
"panel": "0",
|
|
"content": "Guilded",
|
|
"link": "https://www.guilded.gg/",
|
|
"description": "Guilded is a communication and productivity platform that includes chat, scheduling, and collaborative tools for gaming and communities."
|
|
},
|
|
"WPFInstallhexchat": {
|
|
"winget": "HexChat.HexChat",
|
|
"choco": "hexchat",
|
|
"category": "Communications",
|
|
"panel": "0",
|
|
"content": "Hexchat",
|
|
"link": "https://hexchat.github.io/",
|
|
"description": "HexChat is a free, open-source IRC (Internet Relay Chat) client with a graphical interface for easy communication."
|
|
},
|
|
"WPFInstalljami": {
|
|
"winget": "SFLinux.Jami",
|
|
"choco": "jami",
|
|
"category": "Communications",
|
|
"panel": "0",
|
|
"content": "Jami",
|
|
"link": "https://jami.net/",
|
|
"description": "Jami is a secure and privacy-focused communication platform that offers audio and video calls, messaging, and file sharing."
|
|
},
|
|
"WPFInstalllinphone": {
|
|
"winget": "BelledonneCommunications.Linphone",
|
|
"choco": "linphone",
|
|
"category": "Communications",
|
|
"panel": "0",
|
|
"content": "Linphone",
|
|
"link": "https://www.linphone.org/",
|
|
"description": "Linphone is an open-source voice over IP (VoIPservice that allows for audio and video calls, messaging, and more."
|
|
},
|
|
"WPFInstallmatrix": {
|
|
"winget": "Element.Element",
|
|
"choco": "element-desktop",
|
|
"category": "Communications",
|
|
"panel": "0",
|
|
"content": "Matrix",
|
|
"link": "https://element.io/",
|
|
"description": "Matrix is an open network for secure, decentralized communication with features like chat, VoIP, and collaboration tools."
|
|
},
|
|
"WPFInstallsession": {
|
|
"winget": "Oxen.Session",
|
|
"choco": "session",
|
|
"category": "Communications",
|
|
"panel": "0",
|
|
"content": "Session",
|
|
"link": "https://getsession.org/",
|
|
"description": "Session is a private and secure messaging app built on a decentralized network for user privacy and data protection."
|
|
},
|
|
"WPFInstallqtox": {
|
|
"winget": "Tox.qTox",
|
|
"choco": "qtox",
|
|
"category": "Communications",
|
|
"panel": "0",
|
|
"content": "QTox",
|
|
"link": "https://qtox.github.io/",
|
|
"description": "QTox is a free and open-source messaging app that prioritizes user privacy and security in its design."
|
|
},
|
|
"WPFInstallsignal": {
|
|
"winget": "OpenWhisperSystems.Signal",
|
|
"choco": "signal",
|
|
"category": "Communications",
|
|
"panel": "0",
|
|
"content": "Signal",
|
|
"link": "https://signal.org/",
|
|
"description": "Signal is a privacy-focused messaging app that offers end-to-end encryption for secure and private communication."
|
|
},
|
|
"WPFInstallskype": {
|
|
"winget": "Microsoft.Skype",
|
|
"choco": "skype",
|
|
"category": "Communications",
|
|
"panel": "0",
|
|
"content": "Skype",
|
|
"link": "https://www.skype.com/",
|
|
"description": "Skype is a widely used communication platform offering video calls, voice calls, and instant messaging services."
|
|
},
|
|
"WPFInstallslack": {
|
|
"winget": "SlackTechnologies.Slack",
|
|
"choco": "slack",
|
|
"category": "Communications",
|
|
"panel": "0",
|
|
"content": "Slack",
|
|
"link": "https://slack.com/",
|
|
"description": "Slack is a collaboration hub that connects teams and facilitates communication through channels, messaging, and file sharing."
|
|
},
|
|
"WPFInstallteams": {
|
|
"winget": "Microsoft.Teams",
|
|
"choco": "microsoft-teams",
|
|
"category": "Communications",
|
|
"panel": "0",
|
|
"content": "Teams",
|
|
"link": "https://www.microsoft.com/en-us/microsoft-teams/group-chat-software",
|
|
"description": "Microsoft Teams is a collaboration platform that integrates with Office 365 and offers chat, video conferencing, file sharing, and more."
|
|
},
|
|
"WPFInstalltelegram": {
|
|
"winget": "Telegram.TelegramDesktop",
|
|
"choco": "telegram",
|
|
"category": "Communications",
|
|
"panel": "0",
|
|
"content": "Telegram",
|
|
"link": "https://telegram.org/",
|
|
"description": "Telegram is a cloud-based instant messaging app known for its security features, speed, and simplicity."
|
|
},
|
|
"WPFInstallthunderbird": {
|
|
"winget": "Mozilla.Thunderbird",
|
|
"choco": "thunderbird",
|
|
"category": "Communications",
|
|
"panel": "0",
|
|
"content": "Thunderbird",
|
|
"link": "https://www.thunderbird.net/",
|
|
"description": "Mozilla Thunderbird is a free and open-source email client, news client, and chat client with advanced features."
|
|
},
|
|
"WPFInstallviber": {
|
|
"winget": "Viber.Viber",
|
|
"choco": "viber",
|
|
"category": "Communications",
|
|
"panel": "0",
|
|
"content": "Viber",
|
|
"link": "https://www.viber.com/",
|
|
"description": "Viber is a free messaging and calling app with features like group chats, video calls, and more."
|
|
},
|
|
"WPFInstallzoom": {
|
|
"winget": "Zoom.Zoom",
|
|
"choco": "zoom",
|
|
"category": "Communications",
|
|
"panel": "0",
|
|
"content": "Zoom",
|
|
"link": "https://zoom.us/",
|
|
"description": "Zoom is a popular video conferencing and web conferencing service for online meetings, webinars, and collaborative projects."
|
|
},
|
|
"WPFInstallzulip": {
|
|
"winget": "Zulip.Zulip",
|
|
"choco": "zulip",
|
|
"category": "Communications",
|
|
"panel": "0",
|
|
"content": "Zulip",
|
|
"link": "https://zulipchat.com/",
|
|
"description": "Zulip is an open-source team collaboration tool with chat streams for productive and organized communication."
|
|
},
|
|
"WPFInstalljava20": {
|
|
"winget": "Azul.Zulu.20.JDK",
|
|
"choco": "na",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "Azul Zulu JDK 20",
|
|
"link": "https://www.azul.com/downloads/zulu-community/",
|
|
"description": "Azul Zulu JDK 20 is a distribution of the OpenJDK with long-term support, performance enhancements, and security updates."
|
|
},
|
|
"WPFInstalljava21": {
|
|
"winget": "Azul.Zulu.21.JDK",
|
|
"choco": "na",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "Azul Zulu JDK 21",
|
|
"link": "https://www.azul.com/downloads/zulu-community/",
|
|
"description": "Azul Zulu JDK 21 is a distribution of the OpenJDK with long-term support, performance enhancements, and security updates."
|
|
},
|
|
"WPFInstallclink": {
|
|
"winget": "chrisant996.Clink",
|
|
"choco": "clink",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "Clink",
|
|
"link": "https://mridgers.github.io/clink/",
|
|
"description": "Clink is a powerful Bash-compatible command-line interface (CLIenhancement for Windows, adding features like syntax highlighting and improved history)."
|
|
},
|
|
"WPFInstalldockerdesktop": {
|
|
"winget": "Docker.DockerDesktop",
|
|
"choco": "docker-desktop",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "Docker Desktop",
|
|
"link": "https://www.docker.com/products/docker-desktop",
|
|
"description": "Docker Desktop is a powerful tool for containerized application development and deployment."
|
|
},
|
|
"WPFInstallgit": {
|
|
"winget": "Git.Git",
|
|
"choco": "git",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "Git",
|
|
"link": "https://git-scm.com/",
|
|
"description": "Git is a distributed version control system widely used for tracking changes in source code during software development."
|
|
},
|
|
"WPFInstallgitextensions": {
|
|
"winget": "Git.Git;GitExtensionsTeam.GitExtensions",
|
|
"choco": "git;gitextensions",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "Git Extensions",
|
|
"link": "https://gitextensions.github.io/",
|
|
"description": "Git Extensions is a graphical user interface for Git, providing additional features for easier source code management."
|
|
},
|
|
"WPFInstallgithubdesktop": {
|
|
"winget": "Git.Git;GitHub.GitHubDesktop",
|
|
"choco": "git;github-desktop",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "GitHub Desktop",
|
|
"link": "https://desktop.github.com/",
|
|
"description": "GitHub Desktop is a visual Git client that simplifies collaboration on GitHub repositories with an easy-to-use interface."
|
|
},
|
|
"WPFInstallgolang": {
|
|
"winget": "GoLang.Go",
|
|
"choco": "golang",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "GoLang",
|
|
"link": "https://golang.org/",
|
|
"description": "GoLang (or Golangis a statically typed, compiled programming language designed for simplicity, reliability, and efficiency."
|
|
},
|
|
"WPFInstalljetbrains": {
|
|
"winget": "JetBrains.Toolbox",
|
|
"choco": "jetbrainstoolbox",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "Jetbrains Toolbox",
|
|
"link": "https://www.jetbrains.com/toolbox/",
|
|
"description": "Jetbrains Toolbox is a platform for easy installation and management of JetBrains developer tools."
|
|
},
|
|
"WPFInstallnano": {
|
|
"winget": "GNU.Nano",
|
|
"choco": "nano",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "Nano",
|
|
"link": "https://www.nano-editor.org/",
|
|
"description": "Nano is a text editor for Unix-like computing systems or operating environments using a command-line interface."
|
|
},
|
|
"WPFInstallneovim": {
|
|
"winget": "Neovim.Neovim",
|
|
"choco": "neovim",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "Neovim",
|
|
"link": "https://neovim.io/",
|
|
"description": "Neovim is a highly extensible text editor and an improvement over the original Vim editor."
|
|
},
|
|
"WPFInstallnodejs": {
|
|
"winget": "OpenJS.NodeJS",
|
|
"choco": "nodejs",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "NodeJS",
|
|
"link": "https://nodejs.org/",
|
|
"description": "NodeJS is a JavaScript runtime built on Chrome''s V8 JavaScript engine for building server-side and networking applications."
|
|
},
|
|
"WPFInstallnodejslts": {
|
|
"winget": "OpenJS.NodeJS.LTS",
|
|
"choco": "nodejs-lts",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "NodeJS LTS",
|
|
"link": "https://nodejs.org/",
|
|
"description": "NodeJS LTS provides Long-Term Support releases for stable and reliable server-side JavaScript development."
|
|
},
|
|
"WPFInstallnvm": {
|
|
"winget": "CoreyButler.NVMforWindows",
|
|
"choco": "nvm",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "Node Version Manager",
|
|
"link": "https://github.com/coreybutler/nvm-windows",
|
|
"description": "Node Version Manager (NVM) for Windows allows you to easily switch between multiple Node.js versions."
|
|
},
|
|
"WPFInstalljava8": {
|
|
"winget": "EclipseAdoptium.Temurin.8.JRE",
|
|
"choco": "temurin8jre",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "OpenJDK Java 8",
|
|
"link": "https://adoptopenjdk.net/",
|
|
"description": "OpenJDK Java 8 is an open-source implementation of the Java Platform, Standard Edition."
|
|
},
|
|
"WPFInstalljava16": {
|
|
"winget": "AdoptOpenJDK.OpenJDK.16",
|
|
"choco": "temurin16jre",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "OpenJDK Java 16",
|
|
"link": "https://adoptopenjdk.net/",
|
|
"description": "OpenJDK Java 16 is the latest version of the open-source Java development kit."
|
|
},
|
|
"WPFInstalljava18": {
|
|
"winget": "EclipseAdoptium.Temurin.18.JRE",
|
|
"choco": "temurin18jre",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "Oracle Java 18",
|
|
"link": "https://www.oracle.com/java/",
|
|
"description": "Oracle Java 18 is the latest version of the official Java development kit from Oracle."
|
|
},
|
|
"WPFInstallposh": {
|
|
"winget": "JanDeDobbeleer.OhMyPosh",
|
|
"choco": "oh-my-posh",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "Oh My Posh (Prompt)",
|
|
"link": "https://ohmyposh.dev/",
|
|
"description": "Oh My Posh is a cross-platform prompt theme engine for any shell."
|
|
},
|
|
"WPFInstallpython3": {
|
|
"winget": "Python.Python.3.12",
|
|
"choco": "python",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "Python3",
|
|
"link": "https://www.python.org/",
|
|
"description": "Python is a versatile programming language used for web development, data analysis, artificial intelligence, and more."
|
|
},
|
|
"WPFInstallpostman": {
|
|
"winget": "Postman.Postman",
|
|
"choco": "postman",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "Postman",
|
|
"link": "https://www.postman.com/",
|
|
"description": "Postman is a collaboration platform for API development that simplifies the process of developing APIs."
|
|
},
|
|
"WPFInstallrustlang": {
|
|
"winget": "Rustlang.Rust.MSVC",
|
|
"choco": "rust",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "Rust",
|
|
"link": "https://www.rust-lang.org/",
|
|
"description": "Rust is a programming language designed for safety and performance, particularly focused on systems programming."
|
|
},
|
|
"WPFInstallstarship": {
|
|
"winget": "starship",
|
|
"choco": "starship",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "Starship (Shell Prompt)",
|
|
"link": "https://starship.rs/",
|
|
"description": "Starship is a minimal, fast, and customizable prompt for any shell."
|
|
},
|
|
"WPFInstallsublimemerge": {
|
|
"winget": "SublimeHQ.SublimeMerge",
|
|
"choco": "sublimemerge",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "Sublime Merge",
|
|
"link": "https://www.sublimemerge.com/",
|
|
"description": "Sublime Merge is a Git client with advanced features and a beautiful interface."
|
|
},
|
|
"WPFInstallsublimetext": {
|
|
"winget": "SublimeHQ.SublimeText.4",
|
|
"choco": "sublimetext4",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "Sublime Text",
|
|
"link": "https://www.sublimetext.com/",
|
|
"description": "Sublime Text is a sophisticated text editor for code, markup, and prose."
|
|
},
|
|
"WPFInstallunity": {
|
|
"winget": "Unity.UnityHub",
|
|
"choco": "unityhub",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "Unity Game Engine",
|
|
"link": "https://unity.com/",
|
|
"description": "Unity is a powerful game development platform for creating 2D, 3D, augmented reality, and virtual reality games."
|
|
},
|
|
"WPFInstallvisualstudio": {
|
|
"winget": "Microsoft.VisualStudio.2022.Community",
|
|
"choco": "visualstudio2022community",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "Visual Studio 2022",
|
|
"link": "https://visualstudio.microsoft.com/",
|
|
"description": "Visual Studio 2022 is an integrated development environment (IDE) for building, debugging, and deploying applications."
|
|
},
|
|
"WPFInstallvagrant": {
|
|
"winget": "Hashicorp.Vagrant",
|
|
"choco": "vagrant",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "Vagrant",
|
|
"link": "https://www.vagrantup.com/",
|
|
"description": "Vagrant is an open-source tool for building and managing virtualized development environments."
|
|
},
|
|
"WPFInstallvscode": {
|
|
"winget": "Git.Git;Microsoft.VisualStudioCode",
|
|
"choco": "vscode",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "VS Code",
|
|
"link": "https://code.visualstudio.com/",
|
|
"description": "Visual Studio Code is a free, open-source code editor with support for multiple programming languages."
|
|
},
|
|
"WPFInstallvscodium": {
|
|
"winget": "Git.Git;VSCodium.VSCodium",
|
|
"choco": "vscodium",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "VS Codium",
|
|
"link": "https://vscodium.com/",
|
|
"description": "VSCodium is a community-driven, freely-licensed binary distribution of Microsoft''s VS Code."
|
|
},
|
|
"WPFInstallyarn": {
|
|
"winget": "Yarn.Yarn",
|
|
"choco": "yarn",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "Yarn",
|
|
"link": "https://yarnpkg.com/",
|
|
"description": "Yarn is a fast, reliable, and secure dependency management tool for JavaScript projects."
|
|
},
|
|
"WPFInstallxeheditor": {
|
|
"winget": "MHNexus.HxD",
|
|
"choco": "HxD",
|
|
"category": "Development",
|
|
"panel": "1",
|
|
"content": "HxD Hex Editor",
|
|
"link": "https://mh-nexus.de/en/hxd/",
|
|
"description": "HxD is a free hex editor that allows you to edit, view, search, and analyze binary files."
|
|
},
|
|
"WPFInstallanki": {
|
|
"winget": "Anki.Anki",
|
|
"choco": "anki",
|
|
"category": "Document",
|
|
"panel": "1",
|
|
"content": "Anki",
|
|
"link": "https://apps.ankiweb.net/",
|
|
"description": "Anki is a flashcard application that helps you memorize information with intelligent spaced repetition."
|
|
},
|
|
"WPFInstalladobe": {
|
|
"winget": "Adobe.Acrobat.Reader.64-bit",
|
|
"choco": "adobereader",
|
|
"category": "Document",
|
|
"panel": "1",
|
|
"content": "Adobe Reader DC",
|
|
"link": "https://acrobat.adobe.com/",
|
|
"description": "Adobe Reader DC is a free PDF viewer with essential features for viewing, printing, and annotating PDF documents."
|
|
},
|
|
"WPFInstallopenoffice": {
|
|
"winget": "Apache.OpenOffice",
|
|
"choco": "openoffice",
|
|
"category": "Document",
|
|
"panel": "1",
|
|
"content": "Apache OpenOffice",
|
|
"link": "https://www.openoffice.org/",
|
|
"description": "Apache OpenOffice is an open-source office software suite for word processing, spreadsheets, presentations, and more."
|
|
},
|
|
"WPFInstallcalibre": {
|
|
"winget": "calibre.calibre",
|
|
"choco": "calibre",
|
|
"category": "Document",
|
|
"panel": "1",
|
|
"content": "Calibre",
|
|
"link": "https://calibre-ebook.com/",
|
|
"description": "Calibre is a powerful and easy-to-use e-book manager, viewer, and converter."
|
|
},
|
|
"WPFInstallfoxpdf": {
|
|
"winget": "Foxit.PhantomPDF",
|
|
"choco": "na",
|
|
"category": "Document",
|
|
"panel": "1",
|
|
"content": "Foxit PDF",
|
|
"link": "https://www.foxitsoftware.com/",
|
|
"description": "Foxit PDF is a feature-rich PDF editor and viewer with a familiar ribbon-style interface."
|
|
},
|
|
"WPFInstalljoplin": {
|
|
"winget": "Joplin.Joplin",
|
|
"choco": "joplin",
|
|
"category": "Document",
|
|
"panel": "1",
|
|
"content": "Joplin (FOSS Notes)",
|
|
"link": "https://joplinapp.org/",
|
|
"description": "Joplin is an open-source note-taking and to-do application with synchronization capabilities."
|
|
},
|
|
"WPFInstalllibreoffice": {
|
|
"winget": "TheDocumentFoundation.LibreOffice",
|
|
"choco": "libreoffice-fresh",
|
|
"category": "Document",
|
|
"panel": "1",
|
|
"content": "LibreOffice",
|
|
"link": "https://www.libreoffice.org/",
|
|
"description": "LibreOffice is a powerful and free office suite, compatible with other major office suites."
|
|
},
|
|
"WPFInstallmasscode": {
|
|
"winget": "antonreshetov.massCode",
|
|
"choco": "na",
|
|
"category": "Document",
|
|
"panel": "1",
|
|
"content": "massCode (Snippet Manager)",
|
|
"link": "https://masscode.io/",
|
|
"description": "massCode is a fast and efficient open-source code snippet manager for developers."
|
|
},
|
|
"WPFInstallnaps2": {
|
|
"winget": "Cyanfish.NAPS2",
|
|
"choco": "naps2",
|
|
"category": "Document",
|
|
"panel": "1",
|
|
"content": "NAPS2 (Document Scanner)",
|
|
"link": "https://www.naps2.com/",
|
|
"description": "NAPS2 is a document scanning application that simplifies the process of creating electronic documents."
|
|
},
|
|
"WPFInstallnotepadplus": {
|
|
"winget": "Notepad++.Notepad++",
|
|
"choco": "notepadplusplus",
|
|
"category": "Document",
|
|
"panel": "1",
|
|
"content": "Notepad++",
|
|
"link": "https://notepad-plus-plus.org/",
|
|
"description": "Notepad++ is a free, open-source code editor and Notepad replacement with support for multiple languages."
|
|
},
|
|
"WPFInstalllogseq": {
|
|
"winget": "Logseq.Logseq",
|
|
"choco": "logseq",
|
|
"category": "Document",
|
|
"panel": "1",
|
|
"content": "Logseq",
|
|
"link": "https://github.com/logseq/logseq/releases",
|
|
"description": "Logseq is a versatile knowledge management and note-taking application designed for the digital thinker. With a focus on the interconnectedness of ideas, Logseq allows users to seamlessly organize their thoughts through a combination of hierarchical outlines and bi-directional linking. It supports both structured and unstructured content, enabling users to create a personalized knowledge graph that adapts to their evolving ideas and insights."
|
|
},
|
|
"WPFInstallobsidian": {
|
|
"winget": "Obsidian.Obsidian",
|
|
"choco": "obsidian",
|
|
"category": "Document",
|
|
"panel": "1",
|
|
"content": "Obsidian",
|
|
"link": "https://obsidian.md/",
|
|
"description": "Obsidian is a powerful note-taking and knowledge management application."
|
|
},
|
|
"WPFInstallokular": {
|
|
"winget": "KDE.Okular",
|
|
"choco": "okular",
|
|
"category": "Document",
|
|
"panel": "1",
|
|
"content": "Okular",
|
|
"link": "https://okular.kde.org/",
|
|
"description": "Okular is a versatile document viewer with advanced features."
|
|
},
|
|
"WPFInstallonlyoffice": {
|
|
"winget": "ONLYOFFICE.DesktopEditors",
|
|
"choco": "onlyoffice",
|
|
"category": "Document",
|
|
"panel": "1",
|
|
"content": "ONLYOffice Desktop",
|
|
"link": "https://www.onlyoffice.com/desktop.aspx",
|
|
"description": "ONLYOffice Desktop is a comprehensive office suite for document editing and collaboration."
|
|
},
|
|
"WPFInstallpdfsam": {
|
|
"winget": "PDFsam.PDFsam",
|
|
"choco": "pdfsam",
|
|
"category": "Document",
|
|
"panel": "1",
|
|
"content": "PDFsam Basic",
|
|
"link": "https://pdfsam.org/",
|
|
"description": "PDFsam Basic is a free and open-source tool for splitting, merging, and rotating PDF files."
|
|
},
|
|
"WPFInstallsumatra": {
|
|
"winget": "SumatraPDF.SumatraPDF",
|
|
"choco": "sumatrapdf",
|
|
"category": "Document",
|
|
"panel": "1",
|
|
"content": "Sumatra PDF",
|
|
"link": "https://www.sumatrapdfreader.org/free-pdf-reader.html",
|
|
"description": "Sumatra PDF is a lightweight and fast PDF viewer with minimalistic design."
|
|
},
|
|
"WPFInstallwinmerge": {
|
|
"winget": "WinMerge.WinMerge",
|
|
"choco": "winmerge",
|
|
"category": "Document",
|
|
"panel": "1",
|
|
"content": "WinMerge",
|
|
"link": "https://winmerge.org/",
|
|
"description": "WinMerge is a visual text file and directory comparison tool for Windows."
|
|
},
|
|
"WPFInstallxournal": {
|
|
"winget": "Xournal++.Xournal++",
|
|
"choco": "xournalplusplus",
|
|
"category": "Document",
|
|
"panel": "1",
|
|
"content": "Xournal++",
|
|
"link": "https://xournalpp.github.io/",
|
|
"description": "Xournal++ is an open-source handwriting notetaking software with PDF annotation capabilities."
|
|
},
|
|
"WPFInstallzim": {
|
|
"winget": "Zimwiki.Zim",
|
|
"choco": "zim",
|
|
"category": "Document",
|
|
"panel": "1",
|
|
"content": "Zim Desktop Wiki",
|
|
"link": "https://zim-wiki.org/",
|
|
"description": "Zim Desktop Wiki is a graphical text editor used to maintain a collection of wiki pages."
|
|
},
|
|
"WPFInstallznote": {
|
|
"winget": "alagrede.znote",
|
|
"choco": "na",
|
|
"category": "Document",
|
|
"panel": "1",
|
|
"content": "Znote",
|
|
"link": "https://znote.io/",
|
|
"description": "Znote is a note-taking application."
|
|
},
|
|
"WPFInstallzotero": {
|
|
"winget": "DigitalScholar.Zotero",
|
|
"choco": "zotero",
|
|
"category": "Document",
|
|
"panel": "1",
|
|
"content": "Zotero",
|
|
"link": "https://www.zotero.org/",
|
|
"description": "Zotero is a free, easy-to-use tool to help you collect, organize, cite, and share your research materials."
|
|
},
|
|
"WPFInstallbluestacks": {
|
|
"winget": "BlueStack.BlueStacks",
|
|
"choco": "bluestacks",
|
|
"category": "Games",
|
|
"panel": "2",
|
|
"content": "Bluestacks",
|
|
"link": "https://www.bluestacks.com/",
|
|
"description": "Bluestacks is an Android emulator for running mobile apps and games on a PC."
|
|
},
|
|
"WPFInstallcemu": {
|
|
"winget": "Cemu.Cemu",
|
|
"choco": "cemu",
|
|
"category": "Games",
|
|
"panel": "2",
|
|
"content": "Cemu",
|
|
"link": "https://cemu.info/",
|
|
"description": "Cemu is a highly experimental software to emulate Wii U applications on PC."
|
|
},
|
|
"WPFInstallclonehero": {
|
|
"winget": "CloneHeroTeam.CloneHero",
|
|
"choco": "na",
|
|
"category": "Games",
|
|
"panel": "2",
|
|
"content": "Clone Hero",
|
|
"link": "https://clonehero.net/",
|
|
"description": "Clone Hero is a free rhythm game, which can be played with any 5 or 6 button guitar controller."
|
|
},
|
|
"WPFInstalleaapp": {
|
|
"winget": "ElectronicArts.EADesktop",
|
|
"choco": "ea-app",
|
|
"category": "Games",
|
|
"panel": "2",
|
|
"content": "EA App",
|
|
"link": "https://www.ea.com/",
|
|
"description": "EA App is a platform for accessing and playing Electronic Arts games."
|
|
},
|
|
"WPFInstallemulationstation": {
|
|
"winget": "Emulationstation.Emulationstation",
|
|
"choco": "emulationstation",
|
|
"category": "Games",
|
|
"panel": "2",
|
|
"content": "Emulation Station",
|
|
"link": "https://emulationstation.org/",
|
|
"description": "Emulation Station is a graphical and themeable emulator front-end that allows you to access all your favorite games in one place."
|
|
},
|
|
"WPFInstallepicgames": {
|
|
"winget": "EpicGames.EpicGamesLauncher",
|
|
"choco": "epicgameslauncher",
|
|
"category": "Games",
|
|
"panel": "2",
|
|
"content": "Epic Games Launcher",
|
|
"link": "https://www.epicgames.com/store/en-US/",
|
|
"description": "Epic Games Launcher is the client for accessing and playing games from the Epic Games Store."
|
|
},
|
|
"WPFInstallgeforcenow": {
|
|
"winget": "Nvidia.GeForceNow",
|
|
"choco": "nvidia-geforce-now",
|
|
"category": "Games",
|
|
"panel": "2",
|
|
"content": "GeForce NOW",
|
|
"link": "https://www.nvidia.com/en-us/geforce-now/",
|
|
"description": "GeForce NOW is a cloud gaming service that allows you to play high-quality PC games on your device."
|
|
},
|
|
"WPFInstallgog": {
|
|
"winget": "GOG.Galaxy",
|
|
"choco": "goggalaxy",
|
|
"category": "Games",
|
|
"panel": "2",
|
|
"content": "GOG Galaxy",
|
|
"link": "https://www.gog.com/galaxy",
|
|
"description": "GOG Galaxy is a gaming client that offers DRM-free games, additional content, and more."
|
|
},
|
|
"WPFInstallheroiclauncher": {
|
|
"winget": "HeroicGamesLauncher.HeroicGamesLauncher",
|
|
"choco": "na",
|
|
"category": "Games",
|
|
"panel": "2",
|
|
"content": "Heroic Games Launcher",
|
|
"link": "https://heroicgameslauncher.com/",
|
|
"description": "Heroic Games Launcher is an open-source alternative game launcher for Epic Games Store."
|
|
},
|
|
"WPFInstallitch": {
|
|
"winget": "ItchIo.Itch",
|
|
"choco": "itch",
|
|
"category": "Games",
|
|
"panel": "2",
|
|
"content": "Itch.io",
|
|
"link": "https://itch.io/",
|
|
"description": "Itch.io is a digital distribution platform for indie games and creative projects."
|
|
},
|
|
"WPFInstallmoonlight": {
|
|
"winget": "MoonlightGameStreamingProject.Moonlight",
|
|
"choco": "moonlight-qt",
|
|
"category": "Games",
|
|
"panel": "2",
|
|
"content": "Moonlight/GameStream Client",
|
|
"link": "https://moonlight-stream.org/",
|
|
"description": "Moonlight/GameStream Client allows you to stream PC games to other devices over your local network."
|
|
},
|
|
"WPFInstallplaynite": {
|
|
"winget": "Playnite.Playnite",
|
|
"choco": "playnite",
|
|
"category": "Games",
|
|
"panel": "2",
|
|
"content": "Playnite",
|
|
"description": "Playnite is an open-source video game library manager with one simple goal: To provide a unified interface for all of your games.",
|
|
"link": "https://playnite.link/"
|
|
},
|
|
"WPFInstallprismlauncher": {
|
|
"winget": "PrismLauncher.PrismLauncher",
|
|
"choco": "prismlauncher",
|
|
"category": "Games",
|
|
"panel": "2",
|
|
"content": "Prism Launcher",
|
|
"description": "Prism Launcher is a game launcher and manager designed to provide a clean and intuitive interface for organizing and launching your games.",
|
|
"link": "https://prismlauncher.com/"
|
|
},
|
|
"WPFInstallsidequest": {
|
|
"winget": "SideQuestVR.SideQuest",
|
|
"choco": "sidequest",
|
|
"category": "Games",
|
|
"panel": "2",
|
|
"content": "SideQuestVR",
|
|
"description": "SideQuestVR is a community-driven platform that enables users to discover, install, and manage virtual reality content on Oculus Quest devices.",
|
|
"link": "https://sidequestvr.com/"
|
|
},
|
|
"WPFInstallsteam": {
|
|
"winget": "Valve.Steam",
|
|
"choco": "steam-client",
|
|
"category": "Games",
|
|
"panel": "2",
|
|
"content": "Steam",
|
|
"description": "Steam is a digital distribution platform for purchasing and playing video games, offering multiplayer gaming, video streaming, and more.",
|
|
"link": "https://store.steampowered.com/"
|
|
},
|
|
"WPFInstallsunshine": {
|
|
"winget": "LizardByte.Sunshine",
|
|
"choco": "sunshine",
|
|
"category": "Games",
|
|
"panel": "2",
|
|
"content": "Sunshine/GameStream Server",
|
|
"description": "Sunshine is a GameStream server that allows you to remotely play PC games on Android devices, offering low-latency streaming.",
|
|
"link": "https://github.com/LoLBoy25/Sunshine"
|
|
},
|
|
"WPFInstallubisoft": {
|
|
"winget": "Ubisoft.Connect",
|
|
"choco": "ubisoft-connect",
|
|
"category": "Games",
|
|
"panel": "2",
|
|
"content": "Ubisoft Connect",
|
|
"description": "Ubisoft Connect is Ubisoft''s digital distribution and online gaming service, providing access to Ubisoft''s games and services.",
|
|
"link": "https://ubisoftconnect.com/"
|
|
},
|
|
"WPFInstallxemu": {
|
|
"winget": "xemu-project.xemu",
|
|
"choco": "na",
|
|
"category": "Games",
|
|
"panel": "2",
|
|
"content": "XEMU",
|
|
"description": "XEMU is an open-source Xbox emulator that allows you to play Xbox games on your PC, aiming for accuracy and compatibility.",
|
|
"link": "https://xemu.app/"
|
|
},
|
|
"WPFInstallpsremoteplay": {
|
|
"winget": "PlayStation.PSRemotePlay",
|
|
"choco": "ps-remote-play",
|
|
"category": "Games",
|
|
"panel": "2",
|
|
"content": "PS Remote Play",
|
|
"link": "https://remoteplay.dl.playstation.net/remoteplay/lang/gb/",
|
|
"description": "PS Remote Play is a free application that allows you to stream games from your PlayStation console to a PC or mobile device."
|
|
},
|
|
"WPFInstallvrdesktopstreamer": {
|
|
"winget": "VirtualDesktop.Streamer",
|
|
"choco": "na",
|
|
"category": "Games",
|
|
"panel": "2",
|
|
"content": "Virtual Desktop Streamer",
|
|
"link": "https://www.vrdesktop.net/",
|
|
"description": "Virtual Desktop Streamer is a tool that allows you to stream your desktop screen to VR devices."
|
|
},
|
|
"WPFInstalldotnet3": {
|
|
"winget": "Microsoft.DotNet.DesktopRuntime.3_1",
|
|
"choco": "dotnetcore3-desktop-runtime",
|
|
"category": "Microsoft Tools",
|
|
"panel": "2",
|
|
"content": ".NET Desktop Runtime 3.1",
|
|
"description": ".NET Desktop Runtime 3.1 is a runtime environment required for running applications developed with .NET Core 3.1.",
|
|
"link": "https://dotnet.microsoft.com/download/dotnet/3.1"
|
|
},
|
|
"WPFInstalldotnet5": {
|
|
"winget": "Microsoft.DotNet.DesktopRuntime.5",
|
|
"choco": "dotnet-5.0-runtime",
|
|
"category": "Microsoft Tools",
|
|
"panel": "2",
|
|
"content": ".NET Desktop Runtime 5",
|
|
"description": ".NET Desktop Runtime 5 is a runtime environment required for running applications developed with .NET 5.",
|
|
"link": "https://dotnet.microsoft.com/download/dotnet/5.0"
|
|
},
|
|
"WPFInstalldotnet6": {
|
|
"winget": "Microsoft.DotNet.DesktopRuntime.6",
|
|
"choco": "dotnet-6.0-runtime",
|
|
"category": "Microsoft Tools",
|
|
"panel": "2",
|
|
"content": ".NET Desktop Runtime 6",
|
|
"description": ".NET Desktop Runtime 6 is a runtime environment required for running applications developed with .NET 6.",
|
|
"link": "https://dotnet.microsoft.com/download/dotnet/6.0"
|
|
},
|
|
"WPFInstalldotnet7": {
|
|
"winget": "Microsoft.DotNet.DesktopRuntime.7",
|
|
"choco": "dotnet-7.0-runtime",
|
|
"category": "Microsoft Tools",
|
|
"panel": "2",
|
|
"content": ".NET Desktop Runtime 7",
|
|
"description": ".NET Desktop Runtime 7 is a runtime environment required for running applications developed with .NET 7.",
|
|
"link": "https://dotnet.microsoft.com/download/dotnet/7.0"
|
|
},
|
|
"WPFInstallnuget": {
|
|
"winget": "Microsoft.NuGet",
|
|
"choco": "nuget.commandline",
|
|
"category": "Microsoft Tools",
|
|
"panel": "2",
|
|
"content": "NuGet",
|
|
"description": "NuGet is a package manager for the .NET framework, enabling developers to manage and share libraries in their .NET applications.",
|
|
"link": "https://www.nuget.org/"
|
|
},
|
|
"WPFInstallonedrive": {
|
|
"winget": "Microsoft.OneDrive",
|
|
"choco": "onedrive",
|
|
"category": "Microsoft Tools",
|
|
"panel": "2",
|
|
"content": "OneDrive",
|
|
"description": "OneDrive is a cloud storage service provided by Microsoft, allowing users to store and share files securely across devices.",
|
|
"link": "https://onedrive.live.com/"
|
|
},
|
|
"WPFInstallpowershell": {
|
|
"winget": "Microsoft.PowerShell",
|
|
"choco": "powershell-core",
|
|
"category": "Microsoft Tools",
|
|
"panel": "2",
|
|
"content": "PowerShell",
|
|
"description": "PowerShell is a task automation framework and scripting language designed for system administrators, offering powerful command-line capabilities.",
|
|
"link": "https://github.com/PowerShell/PowerShell"
|
|
},
|
|
"WPFInstallpowertoys": {
|
|
"winget": "Microsoft.PowerToys",
|
|
"choco": "powertoys",
|
|
"category": "Microsoft Tools",
|
|
"panel": "2",
|
|
"content": "Powertoys",
|
|
"description": "PowerToys is a set of utilities for power users to enhance productivity, featuring tools like FancyZones, PowerRename, and more.",
|
|
"link": "https://github.com/microsoft/PowerToys"
|
|
},
|
|
"WPFInstallprocessmonitor": {
|
|
"winget": "Microsoft.Sysinternals.ProcessMonitor",
|
|
"choco": "procexp",
|
|
"category": "Microsoft Tools",
|
|
"panel": "2",
|
|
"content": "SysInternals Process Monitor",
|
|
"description": "SysInternals Process Monitor is an advanced monitoring tool that shows real-time file system, registry, and process/thread activity.",
|
|
"link": "https://docs.microsoft.com/en-us/sysinternals/downloads/procmon"
|
|
},
|
|
"WPFInstalltcpview": {
|
|
"winget": "Microsoft.Sysinternals.TCPView",
|
|
"choco": "tcpview",
|
|
"category": "Microsoft Tools",
|
|
"panel": "2",
|
|
"content": "SysInternals TCPView",
|
|
"description": "SysInternals TCPView is a network monitoring tool that displays a detailed list of all TCP and UDP endpoints on your system.",
|
|
"link": "https://docs.microsoft.com/en-us/sysinternals/downloads/tcpview"
|
|
},
|
|
"WPFInstallvc2015_64": {
|
|
"winget": "Microsoft.VCRedist.2015+.x64",
|
|
"choco": "na",
|
|
"category": "Microsoft Tools",
|
|
"panel": "2",
|
|
"content": "Visual C++ 2015-2022 64-bit",
|
|
"description": "Visual C++ 2015-2022 64-bit redistributable package installs runtime components of Visual C++ libraries required to run 64-bit applications.",
|
|
"link": "https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads"
|
|
},
|
|
"WPFInstallvc2015_32": {
|
|
"winget": "Microsoft.VCRedist.2015+.x86",
|
|
"choco": "na",
|
|
"category": "Microsoft Tools",
|
|
"panel": "2",
|
|
"content": "Visual C++ 2015-2022 32-bit",
|
|
"description": "Visual C++ 2015-2022 32-bit redistributable package installs runtime components of Visual C++ libraries required to run 32-bit applications.",
|
|
"link": "https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads"
|
|
},
|
|
"WPFInstallterminal": {
|
|
"winget": "Microsoft.WindowsTerminal",
|
|
"choco": "microsoft-windows-terminal",
|
|
"category": "Microsoft Tools",
|
|
"panel": "2",
|
|
"content": "Windows Terminal",
|
|
"description": "Windows Terminal is a modern, fast, and efficient terminal application for command-line users, supporting multiple tabs, panes, and more.",
|
|
"link": "https://aka.ms/terminal"
|
|
},
|
|
"WPFInstallaimp": {
|
|
"winget": "AIMP.AIMP",
|
|
"choco": "aimp",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "AIMP (Music Player)",
|
|
"description": "AIMP is a feature-rich music player with support for various audio formats, playlists, and customizable user interface.",
|
|
"link": "https://www.aimp.ru/"
|
|
},
|
|
"WPFInstallaudacity": {
|
|
"winget": "Audacity.Audacity",
|
|
"choco": "audacity",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "Audacity",
|
|
"description": "Audacity is a free and open-source audio editing software known for its powerful recording and editing capabilities.",
|
|
"link": "https://www.audacityteam.org/"
|
|
},
|
|
"WPFInstallblender": {
|
|
"winget": "BlenderFoundation.Blender",
|
|
"choco": "blender",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "Blender (3D Graphics)",
|
|
"description": "Blender is a powerful open-source 3D creation suite, offering modeling, sculpting, animation, and rendering tools.",
|
|
"link": "https://www.blender.org/"
|
|
},
|
|
"WPFInstallcider": {
|
|
"winget": "CiderCollective.Cider",
|
|
"choco": "cider",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "Cider (FOSS Music Player)",
|
|
"description": "Cider is a free and open-source music player that focuses on simplicity, providing a clean interface for enjoying your music.",
|
|
"link": "https://getcider.io/"
|
|
},
|
|
"WPFInstallclementine": {
|
|
"winget": "Clementine.Clementine",
|
|
"choco": "clementine",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "Clementine",
|
|
"description": "Clementine is a modern music player and library organizer, supporting various audio formats and online radio services.",
|
|
"link": "https://www.clementine-player.org/"
|
|
},
|
|
"WPFInstallclipgrab": {
|
|
"winget": "na",
|
|
"choco": "clipgrab",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "Clipgrab",
|
|
"description": "Clipgrab is a free downloader and converter for YouTube, Vimeo, Facebook, and many other online video sites.",
|
|
"link": "https://clipgrab.org/"
|
|
},
|
|
"WPFInstallcopyq": {
|
|
"winget": "hluk.CopyQ",
|
|
"choco": "copyq",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "Copyq (Clipboard Manager)",
|
|
"description": "Copyq is a clipboard manager with advanced features, allowing you to store, edit, and retrieve clipboard history.",
|
|
"link": "https://copyq.readthedocs.io/"
|
|
},
|
|
"WPFInstalldigikam": {
|
|
"winget": "KDE.digikam",
|
|
"choco": "digikam",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "DigiKam",
|
|
"description": "DigiKam is an advanced open-source photo management software with features for organizing, editing, and sharing photos.",
|
|
"link": "https://www.digikam.org/"
|
|
},
|
|
"WPFInstalleartrumpet": {
|
|
"winget": "File-New-Project.EarTrumpet",
|
|
"choco": "eartrumpet",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "Eartrumpet (Audio)",
|
|
"description": "Eartrumpet is an audio control app for Windows, providing a simple and intuitive interface for managing sound settings.",
|
|
"link": "https://eartrumpet.app/"
|
|
},
|
|
"WPFInstallfreecad": {
|
|
"winget": "FreeCAD.FreeCAD",
|
|
"choco": "freecad",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "FreeCAD",
|
|
"description": "FreeCAD is a parametric 3D CAD modeler, designed for product design and engineering tasks, with a focus on flexibility and extensibility.",
|
|
"link": "https://www.freecadweb.org/"
|
|
},
|
|
"WPFInstallfirealpaca": {
|
|
"winget": "FireAlpaca.FireAlpaca",
|
|
"choco": "firealpaca",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "Fire Alpaca",
|
|
"description": "Fire Alpaca is a free digital painting software that provides a wide range of drawing tools and a user-friendly interface.",
|
|
"link": "https://firealpaca.com/"
|
|
},
|
|
"WPFInstallflameshot": {
|
|
"winget": "Flameshot.Flameshot",
|
|
"choco": "flameshot",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "Flameshot (Screenshots)",
|
|
"description": "Flameshot is a powerful yet simple to use screenshot software, offering annotation and editing features.",
|
|
"link": "https://flameshot.org/"
|
|
},
|
|
"WPFInstallfoobar": {
|
|
"winget": "PeterPawlowski.foobar2000",
|
|
"choco": "foobar2000",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "Foobar2000 (Music Player)",
|
|
"description": "Foobar2000 is a highly customizable and extensible music player for Windows, known for its modular design and advanced features.",
|
|
"link": "https://www.foobar2000.org/"
|
|
},
|
|
"WPFInstallgimp": {
|
|
"winget": "GIMP.GIMP",
|
|
"choco": "gimp",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "GIMP (Image Editor)",
|
|
"description": "GIMP is a versatile open-source raster graphics editor used for tasks such as photo retouching, image editing, and image composition.",
|
|
"link": "https://www.gimp.org/"
|
|
},
|
|
"WPFInstallgreenshot": {
|
|
"winget": "Greenshot.Greenshot",
|
|
"choco": "greenshot",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "Greenshot (Screenshots)",
|
|
"description": "Greenshot is a light-weight screenshot software tool with built-in image editor and customizable capture options.",
|
|
"link": "https://getgreenshot.org/"
|
|
},
|
|
"WPFInstallhandbrake": {
|
|
"winget": "HandBrake.HandBrake",
|
|
"choco": "handbrake",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "HandBrake",
|
|
"description": "HandBrake is an open-source video transcoder, allowing you to convert video from nearly any format to a selection of widely supported codecs.",
|
|
"link": "https://handbrake.fr/"
|
|
},
|
|
"WPFInstallimageglass": {
|
|
"winget": "DuongDieuPhap.ImageGlass",
|
|
"choco": "imageglass",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "ImageGlass (Image Viewer)",
|
|
"description": "ImageGlass is a versatile image viewer with support for various image formats and a focus on simplicity and speed.",
|
|
"link": "https://imageglass.org/"
|
|
},
|
|
"WPFInstallimgburn": {
|
|
"winget": "LIGHTNINGUK.ImgBurn",
|
|
"choco": "imgburn",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "ImgBurn",
|
|
"description": "ImgBurn is a lightweight CD, DVD, HD-DVD, and Blu-ray burning application with advanced features for creating and burning disc images.",
|
|
"link": "http://www.imgburn.com/"
|
|
},
|
|
"WPFInstallinkscape": {
|
|
"winget": "Inkscape.Inkscape",
|
|
"choco": "inkscape",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "Inkscape",
|
|
"description": "Inkscape is a powerful open-source vector graphics editor, suitable for tasks such as illustrations, icons, logos, and more.",
|
|
"link": "https://inkscape.org/"
|
|
},
|
|
"WPFInstallitunes": {
|
|
"winget": "Apple.iTunes",
|
|
"choco": "itunes",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "iTunes",
|
|
"description": "iTunes is a media player, media library, and online radio broadcaster application developed by Apple Inc.",
|
|
"link": "https://www.apple.com/itunes/"
|
|
},
|
|
"WPFInstalljellyfinmediaplayer": {
|
|
"winget": "Jellyfin.JellyfinMediaPlayer",
|
|
"choco": "jellyfin-media-player",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "Jellyfin Media Player",
|
|
"description": "Jellyfin Media Player is a client application for the Jellyfin media server, providing access to your media library.",
|
|
"link": "https://jellyfin.org/"
|
|
},
|
|
"WPFInstalljellyfinserver": {
|
|
"winget": "Jellyfin.Server",
|
|
"choco": "jellyfin",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "Jellyfin Server",
|
|
"description": "Jellyfin Server is an open-source media server software, allowing you to organize and stream your media library.",
|
|
"link": "https://jellyfin.org/"
|
|
},
|
|
"WPFInstallkdenlive": {
|
|
"winget": "KDE.Kdenlive",
|
|
"choco": "kdenlive",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "Kdenlive (Video Editor)",
|
|
"description": "Kdenlive is an open-source video editing software with powerful features for creating and editing professional-quality videos.",
|
|
"link": "https://kdenlive.org/"
|
|
},
|
|
"WPFInstallkodi": {
|
|
"winget": "XBMCFoundation.Kodi",
|
|
"choco": "kodi",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "Kodi Media Center",
|
|
"description": "Kodi is an open-source media center application that allows you to play and view most videos, music, podcasts, and other digital media files.",
|
|
"link": "https://kodi.tv/"
|
|
},
|
|
"WPFInstallklite": {
|
|
"winget": "CodecGuide.K-LiteCodecPack.Standard",
|
|
"choco": "k-litecodecpack-standard",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "K-Lite Codec Standard",
|
|
"description": "K-Lite Codec Pack Standard is a collection of audio and video codecs and related tools, providing essential components for media playback.",
|
|
"link": "https://www.codecguide.com/"
|
|
},
|
|
"WPFInstallkrita": {
|
|
"winget": "KDE.Krita",
|
|
"choco": "krita",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "Krita (Image Editor)",
|
|
"link": "https://krita.org/en/download/krita-desktop/",
|
|
"description": "Krita is a powerful open-source painting application. It is designed for concept artists, illustrators, matte and texture artists, and the VFX industry."
|
|
},
|
|
"WPFInstallmusicbee": {
|
|
"winget": "MusicBee.MusicBee",
|
|
"choco": "musicbee",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "MusicBee (Music Player)",
|
|
"link": "https://getmusicbee.com/",
|
|
"description": "MusicBee is a customizable music player with support for various audio formats. It includes features like an integrated search function, tag editing, and more."
|
|
},
|
|
"WPFInstallmpc": {
|
|
"winget": "clsid2.mpc-hc",
|
|
"choco": "mpc-hc",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "Media Player Classic (Video Player)",
|
|
"link": "https://mpc-hc.org/",
|
|
"description": "Media Player Classic is a lightweight, open-source media player that supports a wide range of audio and video formats. It includes features like customizable toolbars and support for subtitles."
|
|
},
|
|
"WPFInstallnglide": {
|
|
"winget": "ZeusSoftware.nGlide",
|
|
"choco": "na",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "nGlide (3dfx compatibility)",
|
|
"link": "http://www.zeus-software.com/downloads/nglide",
|
|
"description": "nGlide is a 3Dfx Voodoo Glide wrapper. It allows you to play games that use Glide API on modern graphics cards without the need for a 3Dfx Voodoo graphics card."
|
|
},
|
|
"WPFInstallnomacs": {
|
|
"winget": "nomacs.nomacs",
|
|
"choco": "nomacs",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "Nomacs (Image viewer)",
|
|
"link": "https://github.com/nomacs/nomacs/releases/",
|
|
"description": "Nomacs is a free, open-source image viewer that supports multiple platforms. It features basic image editing capabilities and supports a variety of image formats."
|
|
},
|
|
"WPFInstalldarktable": {
|
|
"winget": "darktable.darktable",
|
|
"choco": "darktable",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "DarkTable",
|
|
"link": "https://www.darktable.org/install/",
|
|
"description": "Open-source photo editing tool, offering an intuitive interface, advanced editing capabilities, and a non-destructive workflow for seamless image enhancement."
|
|
},
|
|
"WPFInstallobs": {
|
|
"winget": "OBSProject.OBSStudio",
|
|
"choco": "obs-studio",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "OBS Studio",
|
|
"link": "https://obsproject.com/",
|
|
"description": "OBS Studio is a free and open-source software for video recording and live streaming. It supports real-time video/audio capturing and mixing, making it popular among content creators."
|
|
},
|
|
"WPFInstallPaintdotnet": {
|
|
"winget": "dotPDNLLC.paintdotnet",
|
|
"choco": "paint.net",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "Paint.net",
|
|
"link": "https://www.getpaint.net/",
|
|
"description": "Paint.net is a free image and photo editing software for Windows. It features an intuitive user interface and supports a wide range of powerful editing tools."
|
|
},
|
|
"WPFInstallopenscad": {
|
|
"winget": "OpenSCAD.OpenSCAD",
|
|
"choco": "openscad",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "OpenSCAD",
|
|
"link": "https://www.openscad.org/",
|
|
"description": "OpenSCAD is a free and open-source script-based 3D CAD modeler. It is especially useful for creating parametric designs for 3D printing."
|
|
},
|
|
"WPFInstallsharex": {
|
|
"winget": "ShareX.ShareX",
|
|
"choco": "sharex",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "ShareX (Screenshots)",
|
|
"link": "https://getsharex.com/",
|
|
"description": "ShareX is a free and open-source screen capture and file sharing tool. It supports various capture methods and offers advanced features for editing and sharing screenshots."
|
|
},
|
|
"WPFInstallstrawberry": {
|
|
"winget": "StrawberryMusicPlayer.Strawberry",
|
|
"choco": "strawberrymusicplayer",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "Strawberry (Music Player)",
|
|
"link": "https://strawberry.rocks/",
|
|
"description": "Strawberry is an open-source music player that focuses on music collection management and audio quality. It supports various audio formats and features a clean user interface."
|
|
},
|
|
"WPFInstalltidal": {
|
|
"winget": "9NNCB5BS59PH",
|
|
"choco": "na",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "Tidal",
|
|
"link": "https://tidal.com/",
|
|
"description": "Tidal is a music streaming service known for its high-fidelity audio quality and exclusive content. It offers a vast library of songs and curated playlists."
|
|
},
|
|
"WPFInstallvlc": {
|
|
"winget": "VideoLAN.VLC",
|
|
"choco": "vlc",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "VLC (Video Player)",
|
|
"link": "https://www.videolan.org/vlc/",
|
|
"description": "VLC Media Player is a free and open-source multimedia player that supports a wide range of audio and video formats. It is known for its versatility and cross-platform compatibility."
|
|
},
|
|
"WPFInstallvoicemeeter": {
|
|
"winget": "VB-Audio.Voicemeeter",
|
|
"choco": "voicemeeter",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "Voicemeeter (Audio)",
|
|
"link": "https://www.vb-audio.com/Voicemeeter/",
|
|
"description": "Voicemeeter is a virtual audio mixer that allows you to manage and enhance audio streams on your computer. It is commonly used for audio recording and streaming purposes."
|
|
},
|
|
"WPFInstallplex": {
|
|
"winget": "Plex.PlexMediaServer",
|
|
"choco": "plexmediaserver",
|
|
"category": "Multimedia Tools",
|
|
"panel": "3",
|
|
"content": "Plex Media Server",
|
|
"link": "https://www.plex.tv/your-media/",
|
|
"description": "Plex Media Server is a media server software that allows you to organize and stream your media library. It supports various media formats and offers a wide range of features."
|
|
},
|
|
"WPFInstalladvancedip": {
|
|
"winget": "Famatech.AdvancedIPScanner",
|
|
"choco": "advanced-ip-scanner",
|
|
"category": "Pro Tools",
|
|
"panel": "3",
|
|
"content": "Advanced IP Scanner",
|
|
"link": "https://www.advanced-ip-scanner.com/",
|
|
"description": "Advanced IP Scanner is a fast and easy-to-use network scanner. It is designed to analyze LAN networks and provides information about connected devices."
|
|
},
|
|
"WPFInstallangryipscanner": {
|
|
"winget": "angryziber.AngryIPScanner",
|
|
"choco": "angryip",
|
|
"category": "Pro Tools",
|
|
"panel": "3",
|
|
"content": "Angry IP Scanner",
|
|
"link": "https://angryip.org/",
|
|
"description": "Angry IP Scanner is an open-source and cross-platform network scanner. It is used to scan IP addresses and ports, providing information about network connectivity."
|
|
},
|
|
"WPFInstallefibooteditor": {
|
|
"winget": "EFIBootEditor.EFIBootEditor",
|
|
"choco": "na",
|
|
"category": "Pro Tools",
|
|
"panel": "3",
|
|
"content": "EFI Boot Editor",
|
|
"link": "https://www.easyuefi.com/",
|
|
"description": "EFI Boot Editor is a tool for managing the EFI/UEFI boot entries on your system. It allows you to customize the boot configuration of your computer."
|
|
},
|
|
"WPFInstallheidisql": {
|
|
"winget": "HeidiSQL.HeidiSQL",
|
|
"choco": "heidisql",
|
|
"category": "Pro Tools",
|
|
"panel": "3",
|
|
"content": "HeidiSQL",
|
|
"link": "https://www.heidisql.com/",
|
|
"description": "HeidiSQL is a powerful and easy-to-use client for MySQL, MariaDB, Microsoft SQL Server, and PostgreSQL databases. It provides tools for database management and development."
|
|
},
|
|
"WPFInstallmremoteng": {
|
|
"winget": "mRemoteNG.mRemoteNG",
|
|
"choco": "mremoteng",
|
|
"category": "Pro Tools",
|
|
"panel": "3",
|
|
"content": "mRemoteNG",
|
|
"link": "https://mremoteng.org/",
|
|
"description": "mRemoteNG is a free and open-source remote connections manager. It allows you to view and manage multiple remote sessions in a single interface."
|
|
},
|
|
"WPFInstallnmap": {
|
|
"winget": "Insecure.Nmap",
|
|
"choco": "nmap",
|
|
"category": "Pro Tools",
|
|
"panel": "3",
|
|
"content": "Nmap",
|
|
"link": "https://nmap.org/",
|
|
"description": "Nmap (Network Mapper) is an open-source tool for network exploration and security auditing. It discovers devices on a network and provides information about their ports and services."
|
|
},
|
|
"WPFInstallOpenVPN": {
|
|
"winget": "OpenVPNTechnologies.OpenVPNConnect",
|
|
"choco": "openvpn-connect",
|
|
"category": "Pro Tools",
|
|
"panel": "3",
|
|
"content": "OpenVPN Connect",
|
|
"link": "https://openvpn.net/",
|
|
"description": "OpenVPN Connect is an open-source VPN client that allows you to connect securely to a VPN server. It provides a secure and encrypted connection for protecting your online privacy."
|
|
},
|
|
"WPFInstallportmaster": {
|
|
"winget": "portmaster",
|
|
"choco": "portmaster",
|
|
"category": "Pro Tools",
|
|
"panel": "3",
|
|
"content": "Portmaster",
|
|
"link": "https://github.com/freebsd/portmaster",
|
|
"description": "Portmaster is a FreeBSD package management tool. It simplifies the process of managing software packages and dependencies on FreeBSD systems."
|
|
},
|
|
"WPFInstallputty": {
|
|
"winget": "PuTTY.PuTTY",
|
|
"choco": "putty",
|
|
"category": "Pro Tools",
|
|
"panel": "3",
|
|
"content": "Putty",
|
|
"link": "https://www.putty.org/",
|
|
"description": "PuTTY is a free and open-source terminal emulator, serial console, and network file transfer application. It supports various network protocols such as SSH, Telnet, and SCP."
|
|
},
|
|
"WPFInstallrustdesk": {
|
|
"winget": "RustDesk.RustDesk",
|
|
"choco": "rustdesk.portable",
|
|
"category": "Pro Tools",
|
|
"panel": "3",
|
|
"content": "Rust Remote Desktop (FOSS)",
|
|
"link": "https://rustdesk.com/",
|
|
"description": "RustDesk is a free and open-source remote desktop application. It provides a secure way to connect to remote machines and access desktop environments."
|
|
},
|
|
"WPFInstallsimplewall": {
|
|
"winget": "Henry++.simplewall",
|
|
"choco": "simplewall",
|
|
"category": "Pro Tools",
|
|
"panel": "3",
|
|
"content": "SimpleWall",
|
|
"link": "https://www.henrypp.org/product/simplewall",
|
|
"description": "SimpleWall is a free and open-source firewall application for Windows. It allows users to control and manage the inbound and outbound network traffic of applications."
|
|
},
|
|
"WPFInstallventoy": {
|
|
"winget": "Ventoy.Ventoy",
|
|
"choco": "ventoy",
|
|
"category": "Pro Tools",
|
|
"panel": "3",
|
|
"content": "Ventoy",
|
|
"link": "https://www.ventoy.net/",
|
|
"description": "Ventoy is an open-source tool for creating bootable USB drives. It supports multiple ISO files on a single USB drive, making it a versatile solution for installing operating systems."
|
|
},
|
|
"WPFInstallwinscp": {
|
|
"winget": "WinSCP.WinSCP",
|
|
"choco": "winscp",
|
|
"category": "Pro Tools",
|
|
"panel": "3",
|
|
"content": "WinSCP",
|
|
"link": "https://winscp.net/",
|
|
"description": "WinSCP is a popular open-source SFTP, FTP, and SCP client for Windows. It allows secure file transfers between a local and a remote computer."
|
|
},
|
|
"WPFInstallwireguard": {
|
|
"winget": "WireGuard.WireGuard",
|
|
"choco": "wireguard",
|
|
"category": "Pro Tools",
|
|
"panel": "3",
|
|
"content": "WireGuard",
|
|
"link": "https://www.wireguard.com/",
|
|
"description": "WireGuard is a fast and modern VPN (Virtual Private Network) protocol. It aims to be simpler and more efficient than other VPN protocols, providing secure and reliable connections."
|
|
},
|
|
"WPFInstallwireshark": {
|
|
"winget": "WiresharkFoundation.Wireshark",
|
|
"choco": "wireshark",
|
|
"category": "Pro Tools",
|
|
"panel": "3",
|
|
"content": "WireShark",
|
|
"link": "https://www.wireshark.org/",
|
|
"description": "Wireshark is a widely-used open-source network protocol analyzer. It allows users to capture and analyze network traffic in real-time, providing detailed insights into network activities."
|
|
},
|
|
"WPFInstallxpipe": {
|
|
"winget": "xpipe-io.xpipe",
|
|
"choco": "xpipe",
|
|
"category": "Pro Tools",
|
|
"panel": "3",
|
|
"content": "X-Pipe",
|
|
"link": "https://xpipe.io/",
|
|
"description": "X-Pipe is an open-source tool for orchestrating containerized applications. It simplifies the deployment and management of containerized services in a distributed environment."
|
|
},
|
|
"WPFInstall7zip": {
|
|
"winget": "7zip.7zip",
|
|
"choco": "7zip",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "7-Zip",
|
|
"link": "https://www.7-zip.org/",
|
|
"description": "7-Zip is a free and open-source file archiver utility. It supports several compression formats and provides a high compression ratio, making it a popular choice for file compression."
|
|
},
|
|
"WPFInstallalacritty": {
|
|
"winget": "Alacritty.Alacritty",
|
|
"choco": "alacritty",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Alacritty Terminal",
|
|
"link": "https://github.com/alacritty/alacritty",
|
|
"description": "Alacritty is a fast, cross-platform, and GPU-accelerated terminal emulator. It is designed for performance and aims to be the fastest terminal emulator available."
|
|
},
|
|
"WPFInstallanydesk": {
|
|
"winget": "AnyDeskSoftwareGmbH.AnyDesk",
|
|
"choco": "anydesk",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "AnyDesk",
|
|
"link": "https://anydesk.com/",
|
|
"description": "AnyDesk is a remote desktop software that enables users to access and control computers remotely. It is known for its fast connection and low latency."
|
|
},
|
|
"WPFInstallautohotkey": {
|
|
"winget": "AutoHotkey.AutoHotkey",
|
|
"choco": "autohotkey",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "AutoHotkey",
|
|
"link": "https://www.autohotkey.com/",
|
|
"description": "AutoHotkey is a scripting language for Windows that allows users to create custom automation scripts and macros. It is often used for automating repetitive tasks and customizing keyboard shortcuts."
|
|
},
|
|
"WPFInstallbarrier": {
|
|
"winget": "DebaucheeOpenSourceGroup.Barrier",
|
|
"choco": "barrier",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Barrier",
|
|
"link": "https://github.com/debauchee/barrier",
|
|
"description": "Barrier is an open-source software KVM (keyboard, video, and mouseswitch). It allows users to control multiple computers with a single keyboard and mouse, even if they have different operating systems."
|
|
},
|
|
"WPFInstallbat": {
|
|
"winget": "sharkdp.bat",
|
|
"choco": "bat",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Bat (Cat)",
|
|
"link": "https://github.com/sharkdp/bat",
|
|
"description": "Bat is a cat command clone with syntax highlighting. It provides a user-friendly and feature-rich alternative to the traditional cat command for viewing and concatenating files."
|
|
},
|
|
"WPFInstallbitwarden": {
|
|
"winget": "Bitwarden.Bitwarden",
|
|
"choco": "bitwarden",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Bitwarden",
|
|
"link": "https://bitwarden.com/",
|
|
"description": "Bitwarden is an open-source password management solution. It allows users to store and manage their passwords in a secure and encrypted vault, accessible across multiple devices."
|
|
},
|
|
"WPFInstallbulkcrapuninstaller": {
|
|
"winget": "Klocman.BulkCrapUninstaller",
|
|
"choco": "bulk-crap-uninstaller",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Bulk Crap Uninstaller",
|
|
"link": "https://www.bcuninstaller.com/",
|
|
"description": "Bulk Crap Uninstaller is a free and open-source uninstaller utility for Windows. It helps users remove unwanted programs and clean up their system by uninstalling multiple applications at once."
|
|
},
|
|
"WPFInstallcarnac": {
|
|
"winget": "code52.Carnac",
|
|
"choco": "carnac",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Carnac",
|
|
"link": "https://github.com/Code52/carnac",
|
|
"description": "Carnac is a keystroke visualizer for Windows. It displays keystrokes in an overlay, making it useful for presentations, tutorials, and live demonstrations."
|
|
},
|
|
"WPFInstallcpuz": {
|
|
"winget": "CPUID.CPU-Z",
|
|
"choco": "cpu-z",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "CPU-Z",
|
|
"link": "https://www.cpuid.com/softwares/cpu-z.html",
|
|
"description": "CPU-Z is a system monitoring and diagnostic tool for Windows. It provides detailed information about the computer''s hardware components, including the CPU, memory, and motherboard."
|
|
},
|
|
"WPFInstallcrystaldiskinfo": {
|
|
"winget": "CrystalDewWorld.CrystalDiskInfo",
|
|
"choco": "crystaldiskinfo",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Crystal Disk Info",
|
|
"link": "https://crystalmark.info/en/software/crystaldiskinfo/",
|
|
"description": "Crystal Disk Info is a disk health monitoring tool that provides information about the status and performance of hard drives. It helps users anticipate potential issues and monitor drive health."
|
|
},
|
|
"WPFInstallcrystaldiskmark": {
|
|
"winget": "CrystalDewWorld.CrystalDiskMark",
|
|
"choco": "crystaldiskmark",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Crystal Disk Mark",
|
|
"link": "https://crystalmark.info/en/software/crystaldiskmark/",
|
|
"description": "Crystal Disk Mark is a disk benchmarking tool that measures the read and write speeds of storage devices. It helps users assess the performance of their hard drives and SSDs."
|
|
},
|
|
"WPFInstallddu": {
|
|
"winget": "ddu",
|
|
"choco": "ddu",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Display Driver Uninstaller",
|
|
"link": "https://www.wagnardsoft.com/",
|
|
"description": "Display Driver Uninstaller (DDU) is a tool for completely uninstalling graphics drivers from NVIDIA, AMD, and Intel. It is useful for troubleshooting graphics driver-related issues."
|
|
},
|
|
"WPFInstalldeluge": {
|
|
"winget": "DelugeTeam.Deluge",
|
|
"choco": "deluge",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Deluge",
|
|
"link": "https://deluge-torrent.org/",
|
|
"description": "Deluge is a free and open-source BitTorrent client. It features a user-friendly interface, support for plugins, and the ability to manage torrents remotely."
|
|
},
|
|
"WPFInstalldolphin": {
|
|
"winget": "KDE.Dolphin",
|
|
"choco": "na",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Dolphin File manager",
|
|
"link": "https://apps.kde.org/en/dolphin/",
|
|
"description": "Dolphin is a file manager for the KDE desktop environment. It provides a powerful and intuitive interface for managing files and folders on Linux systems."
|
|
},
|
|
"WPFInstallduplicati": {
|
|
"winget": "Duplicati.Duplicati",
|
|
"choco": "duplicati",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Duplicati 2",
|
|
"link": "https://www.duplicati.com/",
|
|
"description": "Duplicati is an open-source backup solution that supports encrypted, compressed, and incremental backups. It is designed to securely store data on cloud storage services."
|
|
},
|
|
"WPFInstalldevtoys": {
|
|
"winget": "devtoys",
|
|
"choco": "devToys",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Devtoys",
|
|
"link": "https://dev.to/devtoys",
|
|
"description": "Devtoys is a collection of development-related utilities and tools for Windows. It includes tools for file management, code formatting, and productivity enhancements for developers."
|
|
},
|
|
"WPFInstallerrorlookup": {
|
|
"winget": "Henry++.ErrorLookup",
|
|
"choco": "na",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Windows Error Code Lookup",
|
|
"link": "https://github.com/HenryPP/ErrorLookup",
|
|
"description": "ErrorLookup is a tool for looking up Windows error codes and their descriptions."
|
|
},
|
|
"WPFInstalletcher": {
|
|
"winget": "Balena.Etcher",
|
|
"choco": "etcher",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Etcher USB Creator",
|
|
"link": "https://www.balena.io/etcher/",
|
|
"description": "Etcher is a powerful tool for creating bootable USB drives with ease."
|
|
},
|
|
"WPFInstallesearch": {
|
|
"winget": "voidtools.Everything",
|
|
"choco": "everything",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Everything Search",
|
|
"link": "https://www.voidtools.com/",
|
|
"description": "Everything Search is a fast and efficient file search utility for Windows."
|
|
},
|
|
"WPFInstallfiles": {
|
|
"winget": "YairAichenbaum.Files",
|
|
"choco": "files",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Files File Explorer",
|
|
"link": "https://www.yairaichenbaum.com/files",
|
|
"description": "Files is a feature-rich file explorer providing a user-friendly interface for file management."
|
|
},
|
|
"WPFInstallflux": {
|
|
"winget": "flux.flux",
|
|
"choco": "flux",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "f.lux Redshift",
|
|
"link": "https://justgetflux.com/",
|
|
"description": "f.lux Redshift adjusts the color temperature of your screen to reduce eye strain during nighttime use."
|
|
},
|
|
"WPFInstallglaryutilities": {
|
|
"winget": "Glarysoft.GlaryUtilities",
|
|
"choco": "glaryutilities-free",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Glary Utilities",
|
|
"link": "https://www.glarysoft.com/glary-utilities/",
|
|
"description": "Glary Utilities is a comprehensive system optimization and maintenance tool for Windows."
|
|
},
|
|
"WPFInstallgpuz": {
|
|
"winget": "TechPowerUp.GPU-Z",
|
|
"choco": "gpu-z",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "GPU-Z",
|
|
"link": "https://www.techpowerup.com/gpuz/",
|
|
"description": "GPU-Z provides detailed information about your graphics card and GPU."
|
|
},
|
|
"WPFInstallgsudo": {
|
|
"winget": "gerardog.gsudo",
|
|
"choco": "gsudo",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Gsudo",
|
|
"link": "https://github.com/gerardog/gsudo",
|
|
"description": "Gsudo is a sudo implementation for Windows, allowing elevated privilege execution."
|
|
},
|
|
"WPFInstallhwinfo": {
|
|
"winget": "REALiX.HWiNFO",
|
|
"choco": "hwinfo",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "HWInfo",
|
|
"link": "https://www.hwinfo.com/",
|
|
"description": "HWInfo provides comprehensive hardware information and diagnostics for Windows."
|
|
},
|
|
"WPFInstalljdownloader": {
|
|
"winget": "AppWork.JDownloader",
|
|
"choco": "jdownloader",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "J Download Manager",
|
|
"link": "http://jdownloader.org/",
|
|
"description": "JDownloader is a feature-rich download manager with support for various file hosting services."
|
|
},
|
|
"WPFInstallkdeconnect": {
|
|
"winget": "KDE.KDEConnect",
|
|
"choco": "kdeconnect-kde",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "KDE Connect",
|
|
"link": "https://community.kde.org/KDEConnect",
|
|
"description": "KDE Connect allows seamless integration between your KDE desktop and mobile devices."
|
|
},
|
|
"WPFInstallkeepass": {
|
|
"winget": "KeePassXCTeam.KeePassXC",
|
|
"choco": "keepassxc",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "KeePassXC",
|
|
"link": "https://keepassxc.org/",
|
|
"description": "KeePassXC is a cross-platform, open-source password manager with strong encryption features."
|
|
},
|
|
"WPFInstallmalwarebytes": {
|
|
"winget": "Malwarebytes.Malwarebytes",
|
|
"choco": "malwarebytes",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "MalwareBytes",
|
|
"link": "https://www.malwarebytes.com/",
|
|
"description": "MalwareBytes is an anti-malware software that provides real-time protection against threats."
|
|
},
|
|
"WPFInstallmeld": {
|
|
"winget": "Meld.Meld",
|
|
"choco": "meld",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Meld",
|
|
"link": "https://meldmerge.org/",
|
|
"description": "Meld is a visual diff and merge tool for files and directories."
|
|
},
|
|
"WPFInstallmonitorian": {
|
|
"winget": "emoacht.Monitorian",
|
|
"choco": "monitorian",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Monitorian",
|
|
"link": "https://www.monitorian.com/",
|
|
"description": "Monitorian is a utility for adjusting monitor brightness and contrast on Windows."
|
|
},
|
|
"WPFInstallmsiafterburner": {
|
|
"winget": "Guru3D.Afterburner",
|
|
"choco": "msiafterburner",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "MSI Afterburner",
|
|
"link": "https://www.msi.com/Landing/afterburner",
|
|
"description": "MSI Afterburner is a graphics card overclocking utility with advanced features."
|
|
},
|
|
"WPFInstallnanazip": {
|
|
"winget": "M2Team.NanaZip",
|
|
"choco": "nanazip",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "NanaZip",
|
|
"link": "https://nanazip.codeplex.com/",
|
|
"description": "NanaZip is a fast and efficient file compression and decompression tool."
|
|
},
|
|
"WPFInstallneofetchwin": {
|
|
"winget": "nepnep.neofetch-win",
|
|
"choco": "na",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Neofetch",
|
|
"link": "https://github.com/dylanaraps/neofetch",
|
|
"description": "Neofetch is a command-line utility for displaying system information in a visually appealing way."
|
|
},
|
|
"WPFInstallnextclouddesktop": {
|
|
"winget": "Nextcloud.NextcloudDesktop",
|
|
"choco": "nextcloud-client",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Nextcloud Desktop",
|
|
"link": "https://nextcloud.com/install/#install-clients",
|
|
"description": "Nextcloud Desktop is the official desktop client for the Nextcloud file synchronization and sharing platform."
|
|
},
|
|
"WPFInstallnushell": {
|
|
"winget": "Nushell.Nushell",
|
|
"choco": "nushell",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Nushell",
|
|
"link": "https://www.nushell.sh/",
|
|
"description": "Nushell is a new shell that takes advantage of modern hardware and systems to provide a powerful, expressive, and fast experience."
|
|
},
|
|
"WPFInstallnvclean": {
|
|
"winget": "TechPowerUp.NVCleanstall",
|
|
"choco": "na",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "NVCleanstall",
|
|
"link": "https://www.techpowerup.com/nvcleanstall/",
|
|
"description": "NVCleanstall is a tool designed to customize NVIDIA driver installations, allowing advanced users to control more aspects of the installation process."
|
|
},
|
|
"WPFInstallOVirtualBox": {
|
|
"winget": "Oracle.VirtualBox",
|
|
"choco": "virtualbox",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Oracle VirtualBox",
|
|
"link": "https://www.virtualbox.org/",
|
|
"description": "Oracle VirtualBox is a powerful and free open-source virtualization tool for x86 and AMD64/Intel64 architectures."
|
|
},
|
|
"WPFInstallopenrgb": {
|
|
"winget": "CalcProgrammer1.OpenRGB",
|
|
"choco": "openrgb",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "OpenRGB",
|
|
"link": "https://openrgb.org/",
|
|
"description": "OpenRGB is an open-source RGB lighting control software designed to manage and control RGB lighting for various components and peripherals."
|
|
},
|
|
"WPFInstallopenshell": {
|
|
"winget": "Open-Shell.Open-Shell-Menu",
|
|
"choco": "open-shell",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Open Shell (Start Menu)",
|
|
"link": "https://github.com/Open-Shell/Open-Shell-Menu",
|
|
"description": "Open Shell is a Windows Start Menu replacement with enhanced functionality and customization options."
|
|
},
|
|
"WPFInstallownclouddesktop": {
|
|
"winget": "ownCloud.ownCloudDesktop",
|
|
"choco": "owncloud-client",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "ownCloud Desktop",
|
|
"link": "https://owncloud.com/desktop-app/",
|
|
"description": "ownCloud Desktop is the official desktop client for the ownCloud file synchronization and sharing platform."
|
|
},
|
|
"WPFInstallpeazip": {
|
|
"winget": "Giorgiotani.Peazip",
|
|
"choco": "peazip",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Peazip",
|
|
"link": "https://peazip.github.io/",
|
|
"description": "Peazip is a free, open-source file archiver utility that supports multiple archive formats and provides encryption features."
|
|
},
|
|
"WPFInstallprocesslasso": {
|
|
"winget": "BitSum.ProcessLasso",
|
|
"choco": "plasso",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Process Lasso",
|
|
"link": "https://bitsum.com/",
|
|
"description": "Process Lasso is a system optimization and automation tool that improves system responsiveness and stability by adjusting process priorities and CPU affinities."
|
|
},
|
|
"WPFInstallprucaslicer": {
|
|
"winget": "Prusa3d.PrusaSlicer",
|
|
"choco": "prusaslicer",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Prusa Slicer",
|
|
"link": "https://www.prusa3d.com/prusaslicer/",
|
|
"description": "Prusa Slicer is a powerful and easy-to-use slicing software for 3D printing with Prusa 3D printers."
|
|
},
|
|
"WPFInstallqbittorrent": {
|
|
"winget": "qBittorrent.qBittorrent",
|
|
"choco": "qbittorrent",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "qBittorrent",
|
|
"link": "https://www.qbittorrent.org/",
|
|
"description": "qBittorrent is a free and open-source BitTorrent client that aims to provide a feature-rich and lightweight alternative to other torrent clients."
|
|
},
|
|
"WPFInstallrainmeter": {
|
|
"winget": "Rainmeter.Rainmeter",
|
|
"choco": "na",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Rainmeter",
|
|
"link": "https://www.rainmeter.net/",
|
|
"description": "Rainmeter is a desktop customization tool that allows you to create and share customizable skins for your desktop."
|
|
},
|
|
"WPFInstallrevo": {
|
|
"winget": "RevoUninstaller.RevoUninstaller",
|
|
"choco": "revo-uninstaller",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "RevoUninstaller",
|
|
"link": "https://www.revouninstaller.com/",
|
|
"description": "RevoUninstaller is an advanced uninstaller tool that helps you remove unwanted software and clean up your system."
|
|
},
|
|
"WPFInstallrufus": {
|
|
"winget": "Rufus.Rufus",
|
|
"choco": "rufus",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Rufus Imager",
|
|
"link": "https://rufus.ie/",
|
|
"description": "Rufus is a utility that helps format and create bootable USB drives, such as USB keys or pen drives."
|
|
},
|
|
"WPFInstallsandboxie": {
|
|
"winget": "Sandboxie.Plus",
|
|
"choco": "sandboxie",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Sandboxie Plus",
|
|
"link": "https://www.sandboxie.com/",
|
|
"description": "Sandboxie Plus is a sandbox-based isolation program that provides enhanced security by running applications in an isolated environment."
|
|
},
|
|
"WPFInstallshell": {
|
|
"winget": "Nilesoft.Shell",
|
|
"choco": "nilesoft-shell",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Shell (Expanded Context Menu)",
|
|
"link": "https://www.nilesoft.com/shell/",
|
|
"description": "Shell is an expanded context menu tool that adds extra functionality and customization options to the Windows context menu."
|
|
},
|
|
"WPFInstallsdio": {
|
|
"winget": "GlennDelahoy.SnappyDriverInstallerOrigin",
|
|
"choco": "sdio",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Snappy Driver Installer Origin",
|
|
"link": "https://github.com/snappy-driver/snappy-driver-installer",
|
|
"description": "Snappy Driver Installer Origin is a free and open-source driver updater with a vast driver database for Windows."
|
|
},
|
|
"WPFInstallspacedrive": {
|
|
"winget": "spacedrive.Spacedrive",
|
|
"choco": "na",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Spacedrive File Manager",
|
|
"link": "https://spacedrive.org/",
|
|
"description": "Spacedrive is a file manager that offers cloud storage integration and file synchronization across devices."
|
|
},
|
|
"WPFInstallsuperf4": {
|
|
"winget": "StefanSundin.Superf4",
|
|
"choco": "superf4",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "SuperF4",
|
|
"link": "https://stefansundin.github.io/superf4/",
|
|
"description": "SuperF4 is a utility that allows you to terminate programs instantly by pressing a customizable hotkey."
|
|
},
|
|
"WPFInstalltailscale": {
|
|
"winget": "tailscale.tailscale",
|
|
"choco": "tailscale",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Tailscale",
|
|
"link": "https://tailscale.com/",
|
|
"description": "Tailscale is a secure and easy-to-use VPN solution for connecting your devices and networks."
|
|
},
|
|
"WPFInstallteamviewer": {
|
|
"winget": "TeamViewer.TeamViewer",
|
|
"choco": "teamviewer9",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "TeamViewer",
|
|
"link": "https://www.teamviewer.com/",
|
|
"description": "TeamViewer is a popular remote access and support software that allows you to connect to and control remote devices."
|
|
},
|
|
"WPFInstallttaskbar": {
|
|
"winget": "9PF4KZ2VN4W9",
|
|
"choco": "translucenttb",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Translucent Taskbar",
|
|
"link": "https://github.com/TranslucentTB/TranslucentTB",
|
|
"description": "Translucent Taskbar is a tool that allows you to customize the transparency of the Windows taskbar."
|
|
},
|
|
"WPFInstalltreesize": {
|
|
"winget": "JAMSoftware.TreeSize.Free",
|
|
"choco": "treesizefree",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "TreeSize Free",
|
|
"link": "https://www.jam-software.com/treesize_free/",
|
|
"description": "TreeSize Free is a disk space manager that helps you analyze and visualize the space usage on your drives."
|
|
},
|
|
"WPFInstalltwinkletray": {
|
|
"winget": "xanderfrangos.twinkletray",
|
|
"choco": "na",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Twinkle Tray",
|
|
"link": "https://github.com/xanderfrangos/TwinkleTray",
|
|
"description": "Twinkle Tray is a small utility that allows you to customize the system tray icons on your Windows taskbar."
|
|
},
|
|
"WPFInstallwindirstat": {
|
|
"winget": "WinDirStat.WinDirStat",
|
|
"choco": "windirstat",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "WinDirStat",
|
|
"link": "https://windirstat.net/",
|
|
"description": "WinDirStat is a disk usage statistics viewer and cleanup tool for Windows."
|
|
},
|
|
"WPFInstallwingetui": {
|
|
"winget": "SomePythonThings.WingetUIStore",
|
|
"choco": "na",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "WingetUI",
|
|
"link": "https://github.com/lostindark/WingetUIStore",
|
|
"description": "WingetUI is a graphical user interface for Microsoft''s Windows Package Manager (winget)."
|
|
},
|
|
"WPFInstallwiztree": {
|
|
"winget": "AntibodySoftware.WizTree",
|
|
"choco": "wiztree",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "WizTree",
|
|
"link": "https://wiztreefree.com/",
|
|
"description": "WizTree is a fast disk space analyzer that helps you quickly find the files and folders consuming the most space on your hard drive."
|
|
},
|
|
"WPFInstallwinrar": {
|
|
"winget": "RARLab.WinRAR",
|
|
"choco": "winrar",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "WinRAR",
|
|
"link": "https://www.win-rar.com/",
|
|
"description": "WinRAR is a powerful archive manager that allows you to create, manage, and extract compressed files."
|
|
},
|
|
"WPFInstallwinpaletter": {
|
|
"winget": "Abdelrhman-AK.WinPaletter",
|
|
"choco": "WinPaletter",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "WinPaletter",
|
|
"link": "https://github.com/Abdelrhman-AK/WinPaletter",
|
|
"description": "WinPaletter is a tool for adjusting the color palette of Windows 10, providing customization options for window colors."
|
|
},
|
|
"WPFInstallwisetoys": {
|
|
"winget": "WiseCleaner.WiseToys",
|
|
"choco": "na",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "WiseToys",
|
|
"link": "https://www.wisecleaner.com/wisetoys.html",
|
|
"description": "WiseToys is a set of utilities and tools designed to enhance and optimize your Windows experience."
|
|
},
|
|
"WPFInstallxdm": {
|
|
"winget": "subhra74.XtremeDownloadManager",
|
|
"choco": "xdm",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Xtreme Download Manager",
|
|
"link": "https://github.com/subhra74/xdm",
|
|
"description": "Xtreme Download Manager is an advanced download manager with support for various protocols and browsers."
|
|
},
|
|
"WPFInstallzerotierone": {
|
|
"winget": "ZeroTier.ZeroTierOne",
|
|
"choco": "zerotier-one",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "ZeroTier One",
|
|
"link": "https://zerotier.com/",
|
|
"description": "ZeroTier One is a software-defined networking tool that allows you to create secure and scalable networks."
|
|
},
|
|
"WPFInstallzoxide": {
|
|
"winget": "ajeetdsouza.zoxide",
|
|
"choco": "zoxide",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Zoxide",
|
|
"link": "https://github.com/ajeetdsouza/zoxide",
|
|
"description": "Zoxide is a fast and efficient directory changer (cd) that helps you navigate your file system with ease."
|
|
},
|
|
"WPFInstallwindowspchealth": {
|
|
"winget": "Microsoft.WindowsPCHealthCheck",
|
|
"choco": "na",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Windows PC Health Check",
|
|
"link": "https://support.microsoft.com/en-us/windows/how-to-use-the-pc-health-check-app-9c8abd9b-03ba-4e67-81ef-36f37caa7844",
|
|
"description": "Windows PC Health Check is a tool that helps you check if your PC meets the system requirements for Windows 11."
|
|
},
|
|
"WPFInstallsamsungmagician": {
|
|
"winget": "Samsung.SamsungMagician",
|
|
"choco": "samsung-magician",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Samsung Magician",
|
|
"link": "https://semiconductor.samsung.com/consumer-storage/magician/",
|
|
"description": "Samsung Magician is a utility for managing and optimizing Samsung SSDs."
|
|
},
|
|
"WPFInstallbitcomet": {
|
|
"winget": "CometNetwork.BitComet",
|
|
"choco": "bitcomet",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "BitComet",
|
|
"link": "https://www.bitcomet.com/",
|
|
"description": "BitComet is a free and open-source BitTorrent client that supports HTTP/FTP downloads and provides download management features."
|
|
},
|
|
"WPFInstallpiimager": {
|
|
"winget": "RaspberryPiFoundation.RaspberryPiImager",
|
|
"choco": "rpi-imager",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Raspberry Pi Imager",
|
|
"link": "https://www.raspberrypi.com/software/",
|
|
"description": "Raspberry Pi Imager is a utility for writing operating system images to SD cards for Raspberry Pi devices."
|
|
},
|
|
"WPFInstall1password": {
|
|
"winget": "AgileBits.1Password",
|
|
"choco": "1password",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "1Password",
|
|
"link": "https://1password.com/",
|
|
"description": "1Password is a password manager that allows you to store and manage your passwords securely."
|
|
},
|
|
"WPFInstalltotalcommander": {
|
|
"winget": "Ghisler.TotalCommander",
|
|
"choco": "TotalCommander",
|
|
"category": "Utilities",
|
|
"panel": "4",
|
|
"content": "Total Commander",
|
|
"link": "https://www.ghisler.com/",
|
|
"description": "Total Commander is a file manager for Windows that provides a powerful and intuitive interface for file management."
|
|
}
|
|
}' | convertfrom-json
|
|
$sync.configs.dns = '{
|
|
"Google":{
|
|
"Primary": "8.8.8.8",
|
|
"Secondary": "8.8.4.4"
|
|
},
|
|
"Cloudflare":{
|
|
"Primary": "1.1.1.1",
|
|
"Secondary": "1.0.0.1"
|
|
},
|
|
"Cloudflare_Malware":{
|
|
"Primary": "1.1.1.2",
|
|
"Secondary": "1.0.0.2"
|
|
},
|
|
"Cloudflare_Malware_Adult":{
|
|
"Primary": "1.1.1.3",
|
|
"Secondary": "1.0.0.3"
|
|
},
|
|
"Level3":{
|
|
"Primary": "4.2.2.2",
|
|
"Secondary": "4.2.2.1"
|
|
},
|
|
"Open_DNS":{
|
|
"Primary": "208.67.222.222",
|
|
"Secondary": "208.67.220.220"
|
|
},
|
|
"Quad9":{
|
|
"Primary": "9.9.9.9",
|
|
"Secondary": "149.112.112.112"
|
|
}
|
|
}' | convertfrom-json
|
|
$sync.configs.feature = '{
|
|
"WPFFeaturesdotnet": {
|
|
"feature": [
|
|
"NetFx4-AdvSrvs",
|
|
"NetFx3"
|
|
],
|
|
"InvokeScript": [
|
|
|
|
]
|
|
},
|
|
"WPFFeatureshyperv": {
|
|
"feature": [
|
|
"HypervisorPlatform",
|
|
"Microsoft-Hyper-V-All",
|
|
"Microsoft-Hyper-V",
|
|
"Microsoft-Hyper-V-Tools-All",
|
|
"Microsoft-Hyper-V-Management-PowerShell",
|
|
"Microsoft-Hyper-V-Hypervisor",
|
|
"Microsoft-Hyper-V-Services",
|
|
"Microsoft-Hyper-V-Management-Clients"
|
|
],
|
|
"InvokeScript": [
|
|
"Start-Process -FilePath cmd.exe -ArgumentList ''/c bcdedit /set hypervisorschedulertype classic'' -Wait"
|
|
]
|
|
},
|
|
"WPFFeatureslegacymedia": {
|
|
"feature": [
|
|
"WindowsMediaPlayer",
|
|
"MediaPlayback",
|
|
"DirectPlay",
|
|
"LegacyComponents"
|
|
],
|
|
"InvokeScript": [
|
|
|
|
]
|
|
},
|
|
"WPFFeaturewsl": {
|
|
"feature": [
|
|
"VirtualMachinePlatform",
|
|
"Microsoft-Windows-Subsystem-Linux"
|
|
],
|
|
"InvokeScript": [
|
|
|
|
]
|
|
},
|
|
"WPFFeaturenfs": {
|
|
"feature": [
|
|
"ServicesForNFS-ClientOnly",
|
|
"ClientForNFS-Infrastructure",
|
|
"NFS-Administration"
|
|
],
|
|
"InvokeScript": [
|
|
"nfsadmin client stop
|
|
Set-ItemProperty -Path ''HKLM:\\SOFTWARE\\Microsoft\\ClientForNFS\\CurrentVersion\\Default'' -Name ''AnonymousUID'' -Type DWord -Value 0
|
|
Set-ItemProperty -Path ''HKLM:\\SOFTWARE\\Microsoft\\ClientForNFS\\CurrentVersion\\Default'' -Name ''AnonymousGID'' -Type DWord -Value 0
|
|
nfsadmin client start
|
|
nfsadmin client localhost config fileaccess=755 SecFlavors=+sys -krb5 -krb5i
|
|
"
|
|
]
|
|
}
|
|
}' | convertfrom-json
|
|
$sync.configs.preset = '{
|
|
"desktop": [
|
|
"WPFEssTweaksAH",
|
|
"WPFEssTweaksDVR",
|
|
"WPFEssTweaksHiber",
|
|
"WPFEssTweaksHome",
|
|
"WPFEssTweaksLoc",
|
|
"WPFEssTweaksOO",
|
|
"WPFEssTweaksServices",
|
|
"WPFEssTweaksStorage",
|
|
"WPFEssTweaksTele",
|
|
"WPFEssTweaksWifi",
|
|
"WPFMiscTweaksPower"
|
|
],
|
|
"laptop": [
|
|
"WPFEssTweaksAH",
|
|
"WPFEssTweaksDVR",
|
|
"WPFEssTweaksHome",
|
|
"WPFEssTweaksLoc",
|
|
"WPFEssTweaksOO",
|
|
"WPFEssTweaksServices",
|
|
"WPFEssTweaksStorage",
|
|
"WPFEssTweaksTele",
|
|
"WPFEssTweaksWifi",
|
|
"WPFMiscTweaksLapPower"
|
|
],
|
|
"minimal": [
|
|
"WPFEssTweaksHome",
|
|
"WPFEssTweaksOO",
|
|
"WPFEssTweaksServices",
|
|
"WPFEssTweaksTele"
|
|
]
|
|
}' | convertfrom-json
|
|
$sync.configs.themes = '{
|
|
"Classic": {
|
|
"ComboBoxBackgroundColor": "#FFFFFF",
|
|
"LabelboxForegroundColor": "#000000",
|
|
"MainForegroundColor": "#000000",
|
|
"MainBackgroundColor": "#FFFFFF",
|
|
"LabelBackgroundColor": "#FAFAFA",
|
|
"LinkForegroundColor": "#000000",
|
|
"LinkHoverForegroundColor": "#000000",
|
|
"GroupBorderBackgroundColor": "#000000",
|
|
"ComboBoxForegroundColor": "#000000",
|
|
"ButtonInstallBackgroundColor": "#FFFFFF",
|
|
"ButtonTweaksBackgroundColor": "#FFFFFF",
|
|
"ButtonConfigBackgroundColor": "#FFFFFF",
|
|
"ButtonUpdatesBackgroundColor": "#FFFFFF",
|
|
"ButtonInstallForegroundColor": "#000000",
|
|
"ButtonTweaksForegroundColor": "#000000",
|
|
"ButtonConfigForegroundColor": "#000000",
|
|
"ButtonUpdatesForegroundColor": "#000000",
|
|
"ButtonBackgroundColor": "#F5F5F5",
|
|
"ButtonBackgroundPressedColor": "#1A1A1A",
|
|
"CheckboxMouseOverColor": "#999999",
|
|
"ButtonBackgroundMouseoverColor": "#C2C2C2",
|
|
"ButtonBackgroundSelectedColor": "#F0F0F0",
|
|
"ButtonForegroundColor": "#000000",
|
|
"ButtonBorderThickness": "1",
|
|
"ButtonMargin": "1",
|
|
"ButtonCornerRadius": "2",
|
|
"ToggleButtonHeight": "25",
|
|
"BorderColor": "#000000",
|
|
"BorderOpacity": "0.2",
|
|
"ShadowPulse": "Forever"
|
|
},
|
|
"Matrix": {
|
|
"ComboBoxBackgroundColor": "#000000",
|
|
"LabelboxForegroundColor": "#FFEE58",
|
|
"MainForegroundColor": "#9CCC65",
|
|
"MainBackgroundColor": "#000000",
|
|
"LabelBackgroundColor": "#000000",
|
|
"LinkForegroundColor": "#add8e6",
|
|
"LinkHoverForegroundColor": "#FFFFFF",
|
|
"ComboBoxForegroundColor": "#FFEE58",
|
|
"ButtonInstallBackgroundColor": "#222222",
|
|
"ButtonTweaksBackgroundColor": "#333333",
|
|
"ButtonConfigBackgroundColor": "#444444",
|
|
"ButtonUpdatesBackgroundColor": "#555555",
|
|
"ButtonInstallForegroundColor": "#FFFFFF",
|
|
"ButtonTweaksForegroundColor": "#FFFFFF",
|
|
"ButtonConfigForegroundColor": "#FFFFFF",
|
|
"ButtonUpdatesForegroundColor": "#FFFFFF",
|
|
"ButtonBackgroundColor": "#000019",
|
|
"ButtonBackgroundPressedColor": "#FFFFFF",
|
|
"ButtonBackgroundMouseoverColor": "#A55A64",
|
|
"ButtonBackgroundSelectedColor": "#FF5733",
|
|
"ButtonForegroundColor": "#9CCC65",
|
|
"ButtonBorderThickness": "1",
|
|
"ButtonMargin": "1",
|
|
"ButtonCornerRadius": "2",
|
|
"ToggleButtonHeight": "25",
|
|
"BorderColor": "#FFAC1C",
|
|
"BorderOpacity": "0.8",
|
|
"ShadowPulse": "0:0:3"
|
|
}
|
|
}' | convertfrom-json
|
|
$sync.configs.tweaks = '{
|
|
"WPFEssTweaksAH": {
|
|
"registry": [
|
|
{
|
|
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\System",
|
|
"Name": "EnableActivityFeed",
|
|
"Type": "DWord",
|
|
"Value": "0",
|
|
"OriginalValue": "1"
|
|
},
|
|
{
|
|
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\System",
|
|
"Name": "PublishUserActivities",
|
|
"Type": "DWord",
|
|
"Value": "0",
|
|
"OriginalValue": "1"
|
|
},
|
|
{
|
|
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\System",
|
|
"Name": "UploadUserActivities",
|
|
"Type": "DWord",
|
|
"Value": "0",
|
|
"OriginalValue": "1"
|
|
}
|
|
]
|
|
},
|
|
"WPFEssTweaksHiber": {
|
|
"registry": [
|
|
{
|
|
"Path": "HKLM:\\System\\CurrentControlSet\\Control\\Session Manager\\Power",
|
|
"Name": "HibernateEnabled",
|
|
"Type": "DWord",
|
|
"Value": "0",
|
|
"OriginalValue": "1"
|
|
},
|
|
{
|
|
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FlyoutMenuSettings",
|
|
"Name": "ShowHibernateOption",
|
|
"Type": "DWord",
|
|
"Value": "0",
|
|
"OriginalValue": "1"
|
|
}
|
|
],
|
|
"InvokeScript": [
|
|
"powercfg.exe /hibernate off"
|
|
]
|
|
},
|
|
"WPFEssTweaksHome": {
|
|
"service": [
|
|
{
|
|
"Name": "HomeGroupListener",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "HomeGroupProvider",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Automatic"
|
|
}
|
|
]
|
|
},
|
|
"WPFEssTweaksLoc": {
|
|
"registry": [
|
|
{
|
|
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\CapabilityAccessManager\\ConsentStore\\location",
|
|
"Name": "Value",
|
|
"Type": "String",
|
|
"Value": "Deny",
|
|
"OriginalValue": "Allow"
|
|
},
|
|
{
|
|
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Sensor\\Overrides\\{BFA794E4-F964-4FDB-90F6-51056BFE4B44}",
|
|
"Name": "SensorPermissionState",
|
|
"Type": "DWord",
|
|
"Value": "0",
|
|
"OriginalValue": "1"
|
|
},
|
|
{
|
|
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Services\\lfsvc\\Service\\Configuration",
|
|
"Name": "Status",
|
|
"Type": "DWord",
|
|
"Value": "0",
|
|
"OriginalValue": "1"
|
|
},
|
|
{
|
|
"Path": "HKLM:\\SYSTEM\\Maps",
|
|
"Name": "AutoUpdateEnabled",
|
|
"Type": "DWord",
|
|
"Value": "0",
|
|
"OriginalValue": "1"
|
|
}
|
|
]
|
|
},
|
|
"WPFEssTweaksServices": {
|
|
"service": [
|
|
{
|
|
"Name": "AJRouter",
|
|
"StartupType": "Disabled",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "ALG",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "AppIDSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "AppMgmt",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "AppReadiness",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "AppVClient",
|
|
"StartupType": "Disabled",
|
|
"OriginalType": "Disabled"
|
|
},
|
|
{
|
|
"Name": "AppXSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "Appinfo",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "AssignedAccessManagerSvc",
|
|
"StartupType": "Disabled",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "AudioEndpointBuilder",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "AudioSrv",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "Audiosrv",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "AxInstSV",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "BDESVC",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "BFE",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "BITS",
|
|
"StartupType": "AutomaticDelayedStart",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "BTAGService",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "BcastDVRUserService_*",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "BluetoothUserService_*",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "BrokerInfrastructure",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "Browser",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "BthAvctpSvc",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "BthHFSrv",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "CDPSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "CDPUserSvc_*",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "COMSysApp",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "CaptureService_*",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "CertPropSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "ClipSVC",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "ConsentUxUserSvc_*",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "CoreMessagingRegistrar",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "CredentialEnrollmentManagerUserSvc_*",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "CryptSvc",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "CscService",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "DPS",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "DcomLaunch",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "DcpSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "DevQueryBroker",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "DeviceAssociationBrokerSvc_*",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "DeviceAssociationService",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "DeviceInstall",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "DevicePickerUserSvc_*",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "DevicesFlowUserSvc_*",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "Dhcp",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "DiagTrack",
|
|
"StartupType": "Disabled",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "DialogBlockingService",
|
|
"StartupType": "Disabled",
|
|
"OriginalType": "Disabled"
|
|
},
|
|
{
|
|
"Name": "DispBrokerDesktopSvc",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "DisplayEnhancementService",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "DmEnrollmentSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "Dnscache",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "DoSvc",
|
|
"StartupType": "AutomaticDelayedStart",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "DsSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "DsmSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "DusmSvc",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "EFS",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "EapHost",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "EntAppSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "EventLog",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "EventSystem",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "FDResPub",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "Fax",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "FontCache",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "FrameServer",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "FrameServerMonitor",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "GraphicsPerfSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "HomeGroupListener",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "HomeGroupProvider",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "HvHost",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "IEEtwCollectorService",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "IKEEXT",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "InstallService",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "InventorySvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "IpxlatCfgSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "KeyIso",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "KtmRm",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "LSM",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "LanmanServer",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "LanmanWorkstation",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "LicenseManager",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "LxpSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "MSDTC",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "MSiSCSI",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "MapsBroker",
|
|
"StartupType": "AutomaticDelayedStart",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "McpManagementService",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "MessagingService_*",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "MicrosoftEdgeElevationService",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "MixedRealityOpenXRSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "MpsSvc",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "MsKeyboardFilter",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Disabled"
|
|
},
|
|
{
|
|
"Name": "NPSMSvc_*",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "NaturalAuthentication",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "NcaSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "NcbService",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "NcdAutoSetup",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "NetSetupSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "NetTcpPortSharing",
|
|
"StartupType": "Disabled",
|
|
"OriginalType": "Disabled"
|
|
},
|
|
{
|
|
"Name": "Netlogon",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "Netman",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "NgcCtnrSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "NgcSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "NlaSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "OneSyncSvc_*",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "P9RdrService_*",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "PNRPAutoReg",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "PNRPsvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "PcaSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "PeerDistSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "PenService_*",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "PerfHost",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "PhoneSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "PimIndexMaintenanceSvc_*",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "PlugPlay",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "PolicyAgent",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "Power",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "PrintNotify",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "PrintWorkflowUserSvc_*",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "ProfSvc",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "PushToInstall",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "QWAVE",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "RasAuto",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "RasMan",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "RemoteAccess",
|
|
"StartupType": "Disabled",
|
|
"OriginalType": "Disabled"
|
|
},
|
|
{
|
|
"Name": "RemoteRegistry",
|
|
"StartupType": "Disabled",
|
|
"OriginalType": "Disabled"
|
|
},
|
|
{
|
|
"Name": "RetailDemo",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "RmSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "RpcEptMapper",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "RpcLocator",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "RpcSs",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "SCPolicySvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "SCardSvr",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "SDRSVC",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "SEMgrSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "SENS",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "SNMPTRAP",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "SNMPTrap",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "SSDPSRV",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "SamSs",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "ScDeviceEnum",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "Schedule",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "SecurityHealthService",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "Sense",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "SensorDataService",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "SensorService",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "SensrSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "SessionEnv",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "SgrmBroker",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "SharedAccess",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "SharedRealitySvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "ShellHWDetection",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "SmsRouter",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "Spooler",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "SstpSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "StateRepository",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "StiSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "StorSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "SysMain",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "SystemEventsBroker",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "TabletInputService",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "TapiSrv",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "TermService",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "TextInputManagementService",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "Themes",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "TieringEngineService",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "TimeBroker",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "TimeBrokerSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "TokenBroker",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "TrkWks",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "TroubleshootingSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "TrustedInstaller",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "UI0Detect",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "UdkUserSvc_*",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "UevAgentService",
|
|
"StartupType": "Disabled",
|
|
"OriginalType": "Disabled"
|
|
},
|
|
{
|
|
"Name": "UmRdpService",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "UnistoreSvc_*",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "UserDataSvc_*",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "UserManager",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "UsoSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "VGAuthService",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "VMTools",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "VSS",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "VacSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "VaultSvc",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "W32Time",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "WEPHOSTSVC",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "WFDSConMgrSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "WMPNetworkSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "WManSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "WPDBusEnum",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "WSService",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "WSearch",
|
|
"StartupType": "AutomaticDelayedStart",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "WaaSMedicSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "WalletService",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "WarpJITSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "WbioSrvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "Wcmsvc",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "WcsPlugInService",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "WdNisSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "WdiServiceHost",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "WdiSystemHost",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "WebClient",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "Wecsvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "WerSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "WiaRpc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "WinDefend",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "WinHttpAutoProxySvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "WinRM",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "Winmgmt",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "WlanSvc",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "WpcMonSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "WpnService",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "WpnUserService_*",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "WwanSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "XblAuthManager",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "XblGameSave",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "XboxGipSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "XboxNetApiSvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "autotimesvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "bthserv",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "camsvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "cbdhsvc_*",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "cloudidsvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "dcsvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "defragsvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "diagnosticshub.standardcollector.service",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "diagsvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "dmwappushservice",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "dot3svc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "edgeupdate",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "edgeupdatem",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "embeddedmode",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "fdPHost",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "fhsvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "gpsvc",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "hidserv",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "icssvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "iphlpsvc",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "lfsvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "lltdsvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "lmhosts",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "mpssvc",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "msiserver",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "netprofm",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "nsi",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "p2pimsvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "p2psvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "perceptionsimulation",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "pla",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "seclogon",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "shpamsvc",
|
|
"StartupType": "Disabled",
|
|
"OriginalType": "Disabled"
|
|
},
|
|
{
|
|
"Name": "smphost",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "spectrum",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "sppsvc",
|
|
"StartupType": "AutomaticDelayedStart",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "ssh-agent",
|
|
"StartupType": "Disabled",
|
|
"OriginalType": "Disabled"
|
|
},
|
|
{
|
|
"Name": "svsvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "swprv",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "tiledatamodelsvc",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "tzautoupdate",
|
|
"StartupType": "Disabled",
|
|
"OriginalType": "Disabled"
|
|
},
|
|
{
|
|
"Name": "uhssvc",
|
|
"StartupType": "Disabled",
|
|
"OriginalType": "Disabled"
|
|
},
|
|
{
|
|
"Name": "upnphost",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "vds",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "vm3dservice",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "vmicguestinterface",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "vmicheartbeat",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "vmickvpexchange",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "vmicrdv",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "vmicshutdown",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "vmictimesync",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "vmicvmsession",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "vmicvss",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "vmvss",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "wbengine",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "wcncsvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "webthreatdefsvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "webthreatdefusersvc_*",
|
|
"StartupType": "Automatic",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "wercplsupport",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "wisvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "wlidsvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "wlpasvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "wmiApSrv",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "workfolderssvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "wscsvc",
|
|
"StartupType": "AutomaticDelayedStart",
|
|
"OriginalType": "Automatic"
|
|
},
|
|
{
|
|
"Name": "wuauserv",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
},
|
|
{
|
|
"Name": "wudfsvc",
|
|
"StartupType": "Manual",
|
|
"OriginalType": "Manual"
|
|
}
|
|
]
|
|
},
|
|
"WPFEssTweaksTele": {
|
|
"ScheduledTask": [
|
|
{
|
|
"Name": "Microsoft\\Windows\\Application Experience\\Microsoft Compatibility Appraiser",
|
|
"State": "Disabled",
|
|
"OriginalState": "Enabled"
|
|
},
|
|
{
|
|
"Name": "Microsoft\\Windows\\Application Experience\\ProgramDataUpdater",
|
|
"State": "Disabled",
|
|
"OriginalState": "Enabled"
|
|
},
|
|
{
|
|
"Name": "Microsoft\\Windows\\Autochk\\Proxy",
|
|
"State": "Disabled",
|
|
"OriginalState": "Enabled"
|
|
},
|
|
{
|
|
"Name": "Microsoft\\Windows\\Customer Experience Improvement Program\\Consolidator",
|
|
"State": "Disabled",
|
|
"OriginalState": "Enabled"
|
|
},
|
|
{
|
|
"Name": "Microsoft\\Windows\\Customer Experience Improvement Program\\UsbCeip",
|
|
"State": "Disabled",
|
|
"OriginalState": "Enabled"
|
|
},
|
|
{
|
|
"Name": "Microsoft\\Windows\\DiskDiagnostic\\Microsoft-Windows-DiskDiagnosticDataCollector",
|
|
"State": "Disabled",
|
|
"OriginalState": "Enabled"
|
|
},
|
|
{
|
|
"Name": "Microsoft\\Windows\\Feedback\\Siuf\\DmClient",
|
|
"State": "Disabled",
|
|
"OriginalState": "Enabled"
|
|
},
|
|
{
|
|
"Name": "Microsoft\\Windows\\Feedback\\Siuf\\DmClientOnScenarioDownload",
|
|
"State": "Disabled",
|
|
"OriginalState": "Enabled"
|
|
},
|
|
{
|
|
"Name": "Microsoft\\Windows\\Windows Error Reporting\\QueueReporting",
|
|
"State": "Disabled",
|
|
"OriginalState": "Enabled"
|
|
},
|
|
{
|
|
"Name": "Microsoft\\Windows\\Application Experience\\MareBackup",
|
|
"State": "Disabled",
|
|
"OriginalState": "Enabled"
|
|
},
|
|
{
|
|
"Name": "Microsoft\\Windows\\Application Experience\\StartupAppTask",
|
|
"State": "Disabled",
|
|
"OriginalState": "Enabled"
|
|
},
|
|
{
|
|
"Name": "Microsoft\\Windows\\Application Experience\\PcaPatchDbTask",
|
|
"State": "Disabled",
|
|
"OriginalState": "Enabled"
|
|
},
|
|
{
|
|
"Name": "Microsoft\\Windows\\Maps\\MapsUpdateTask",
|
|
"State": "Disabled",
|
|
"OriginalState": "Enabled"
|
|
}
|
|
],
|
|
"registry": [
|
|
{
|
|
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\DataCollection",
|
|
"Type": "DWord",
|
|
"Value": "0",
|
|
"Name": "AllowTelemetry",
|
|
"OriginalValue": "1"
|
|
},
|
|
{
|
|
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\DataCollection",
|
|
"OriginalValue": "1",
|
|
"Name": "AllowTelemetry",
|
|
"Value": "0",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
|
|
"OriginalValue": "1",
|
|
"Name": "ContentDeliveryAllowed",
|
|
"Value": "0",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
|
|
"OriginalValue": "1",
|
|
"Name": "OemPreInstalledAppsEnabled",
|
|
"Value": "0",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
|
|
"OriginalValue": "1",
|
|
"Name": "PreInstalledAppsEnabled",
|
|
"Value": "0",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
|
|
"OriginalValue": "1",
|
|
"Name": "PreInstalledAppsEverEnabled",
|
|
"Value": "0",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
|
|
"OriginalValue": "1",
|
|
"Name": "SilentInstalledAppsEnabled",
|
|
"Value": "0",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
|
|
"OriginalValue": "1",
|
|
"Name": "SubscribedContent-338387Enabled",
|
|
"Value": "0",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
|
|
"OriginalValue": "1",
|
|
"Name": "SubscribedContent-338388Enabled",
|
|
"Value": "0",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
|
|
"OriginalValue": "1",
|
|
"Name": "SubscribedContent-338389Enabled",
|
|
"Value": "0",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
|
|
"OriginalValue": "1",
|
|
"Name": "SubscribedContent-353698Enabled",
|
|
"Value": "0",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ContentDeliveryManager",
|
|
"OriginalValue": "1",
|
|
"Name": "SystemPaneSuggestionsEnabled",
|
|
"Value": "0",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\CloudContent",
|
|
"OriginalValue": "0",
|
|
"Name": "DisableWindowsConsumerFeatures",
|
|
"Value": "1",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Siuf\\Rules",
|
|
"OriginalValue": "0",
|
|
"Name": "NumberOfSIUFInPeriod",
|
|
"Value": "0",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\DataCollection",
|
|
"OriginalValue": "0",
|
|
"Name": "DoNotShowFeedbackNotifications",
|
|
"Value": "1",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\CloudContent",
|
|
"OriginalValue": "0",
|
|
"Name": "DisableTailoredExperiencesWithDiagnosticData",
|
|
"Value": "1",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\AdvertisingInfo",
|
|
"OriginalValue": "0",
|
|
"Name": "DisabledByGroupPolicy",
|
|
"Value": "1",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\Windows Error Reporting",
|
|
"OriginalValue": "0",
|
|
"Name": "Disabled",
|
|
"Value": "1",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\DeliveryOptimization\\Config",
|
|
"OriginalValue": "1",
|
|
"Name": "DODownloadMode",
|
|
"Value": "1",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Remote Assistance",
|
|
"OriginalValue": "1",
|
|
"Name": "fAllowToGetHelp",
|
|
"Value": "0",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\OperationStatusManager",
|
|
"OriginalValue": "0",
|
|
"Name": "EnthusiastMode",
|
|
"Value": "1",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
|
|
"OriginalValue": "1",
|
|
"Name": "ShowTaskViewButton",
|
|
"Value": "0",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\People",
|
|
"OriginalValue": "1",
|
|
"Name": "PeopleBand",
|
|
"Value": "0",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
|
|
"OriginalValue": "1",
|
|
"Name": "LaunchTo",
|
|
"Value": "1",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\FileSystem",
|
|
"OriginalValue": "0",
|
|
"Name": "LongPathsEnabled",
|
|
"Value": "1",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"_Comment" : "Driver searching is a function that should be left in",
|
|
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\DriverSearching",
|
|
"OriginalValue": "1",
|
|
"Name": "SearchOrderConfig",
|
|
"Value": "1",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Multimedia\\SystemProfile",
|
|
"OriginalValue": "1",
|
|
"Name": "SystemResponsiveness",
|
|
"Value": "0",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Multimedia\\SystemProfile",
|
|
"OriginalValue": "1",
|
|
"Name": "NetworkThrottlingIndex",
|
|
"Value": "4294967295",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\Control Panel\\Desktop",
|
|
"OriginalValue": "1",
|
|
"Name": "MenuShowDelay",
|
|
"Value": "1",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\Control Panel\\Desktop",
|
|
"OriginalValue": "1",
|
|
"Name": "AutoEndTasks",
|
|
"Value": "1",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Memory Management",
|
|
"OriginalValue": "0",
|
|
"Name": "ClearPageFileAtShutdown",
|
|
"Value": "0",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKLM:\\SYSTEM\\ControlSet001\\Services\\Ndu",
|
|
"OriginalValue": "1",
|
|
"Name": "Start",
|
|
"Value": "2",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\Control Panel\\Mouse",
|
|
"OriginalValue": "400",
|
|
"Name": "MouseHoverTime",
|
|
"Value": "400",
|
|
"Type": "String"
|
|
},
|
|
{
|
|
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Services\\LanmanServer\\Parameters",
|
|
"OriginalValue": "20",
|
|
"Name": "IRPStackSize",
|
|
"Value": "30",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Windows Feeds",
|
|
"OriginalValue": "1",
|
|
"Name": "EnableFeeds",
|
|
"Value": "0",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Feeds",
|
|
"OriginalValue": "1",
|
|
"Name": "ShellFeedsTaskbarViewMode",
|
|
"Value": "2",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer",
|
|
"OriginalValue": "1",
|
|
"Name": "HideSCAMeetNow",
|
|
"Value": "1",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Multimedia\\SystemProfile\\Tasks\\Games",
|
|
"OriginalValue": "1",
|
|
"Name": "GPU Priority",
|
|
"Value": "8",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Multimedia\\SystemProfile\\Tasks\\Games",
|
|
"OriginalValue": "1",
|
|
"Name": "Priority",
|
|
"Value": "6",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Multimedia\\SystemProfile\\Tasks\\Games",
|
|
"OriginalValue": "High",
|
|
"Name": "Scheduling Category",
|
|
"Value": "High",
|
|
"Type": "String"
|
|
}
|
|
],
|
|
"InvokeScript": [
|
|
"
|
|
bcdedit /set `{current`} bootmenupolicy Legacy | Out-Null
|
|
If ((get-ItemProperty -Path \"HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\" -Name CurrentBuild).CurrentBuild -lt 22557) {
|
|
$taskmgr = Start-Process -WindowStyle Hidden -FilePath taskmgr.exe -PassThru
|
|
Do {
|
|
Start-Sleep -Milliseconds 100
|
|
$preferences = Get-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\TaskManager\" -Name \"Preferences\" -ErrorAction SilentlyContinue
|
|
} Until ($preferences)
|
|
Stop-Process $taskmgr
|
|
$preferences.Preferences[28] = 0
|
|
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\TaskManager\" -Name \"Preferences\" -Type Binary -Value $preferences.Preferences
|
|
}
|
|
Remove-Item -Path \"HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\MyComputer\\NameSpace\\{0DB7E03F-FC29-4DC6-9020-FF41B59E513A}\" -Recurse -ErrorAction SilentlyContinue
|
|
|
|
# Fix Managed by your organization in Edge if regustry path exists then remove it
|
|
|
|
If (Test-Path \"HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge\") {
|
|
Remove-Item -Path \"HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge\" -Recurse -ErrorAction SilentlyContinue
|
|
}
|
|
|
|
# Group svchost.exe processes
|
|
$ram = (Get-CimInstance -ClassName Win32_PhysicalMemory | Measure-Object -Property Capacity -Sum).Sum / 1kb
|
|
Set-ItemProperty -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\" -Name \"SvcHostSplitThresholdInKB\" -Type DWord -Value $ram -Force
|
|
|
|
$autoLoggerDir = \"$env:PROGRAMDATA\\Microsoft\\Diagnosis\\ETLLogs\\AutoLogger\"
|
|
If (Test-Path \"$autoLoggerDir\\AutoLogger-Diagtrack-Listener.etl\") {
|
|
Remove-Item \"$autoLoggerDir\\AutoLogger-Diagtrack-Listener.etl\"
|
|
}
|
|
icacls $autoLoggerDir /deny SYSTEM:`(OI`)`(CI`)F | Out-Null
|
|
|
|
# Disable Defender Auto Sample Submission
|
|
Set-MpPreference -SubmitSamplesConsent 2 -ErrorAction SilentlyContinue | Out-Null
|
|
"
|
|
]
|
|
},
|
|
"WPFEssTweaksWifi": {
|
|
"registry": [
|
|
{
|
|
"Path": "HKLM:\\Software\\Microsoft\\PolicyManager\\default\\WiFi\\AllowWiFiHotSpotReporting",
|
|
"Name": "Value",
|
|
"Type": "DWord",
|
|
"Value": "0",
|
|
"OriginalValue": "1"
|
|
},
|
|
{
|
|
"Path": "HKLM:\\Software\\Microsoft\\PolicyManager\\default\\WiFi\\AllowAutoConnectToWiFiSenseHotspots",
|
|
"Name": "Value",
|
|
"Type": "DWord",
|
|
"Value": "0",
|
|
"OriginalValue": "1"
|
|
}
|
|
]
|
|
},
|
|
"WPFMiscTweaksUTC": {
|
|
"registry": [
|
|
{
|
|
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\TimeZoneInformation",
|
|
"Name": "RealTimeIsUniversal",
|
|
"Type": "DWord",
|
|
"Value": "1",
|
|
"OriginalValue": "0"
|
|
}
|
|
]
|
|
},
|
|
"WPFMiscTweaksDisplay": {
|
|
"registry": [
|
|
{
|
|
"Path": "HKCU:\\Control Panel\\Desktop",
|
|
"OriginalValue": "1",
|
|
"Name": "DragFullWindows",
|
|
"Value": "0",
|
|
"Type": "String"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\Control Panel\\Desktop",
|
|
"OriginalValue": "1",
|
|
"Name": "MenuShowDelay",
|
|
"Value": "200",
|
|
"Type": "String"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\Control Panel\\Desktop\\WindowMetrics",
|
|
"OriginalValue": "1",
|
|
"Name": "MinAnimate",
|
|
"Value": "0",
|
|
"Type": "String"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\Control Panel\\Keyboard",
|
|
"OriginalValue": "1",
|
|
"Name": "KeyboardDelay",
|
|
"Value": "0",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
|
|
"OriginalValue": "1",
|
|
"Name": "ListviewAlphaSelect",
|
|
"Value": "0",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
|
|
"OriginalValue": "1",
|
|
"Name": "ListviewShadow",
|
|
"Value": "0",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
|
|
"OriginalValue": "1",
|
|
"Name": "TaskbarAnimations",
|
|
"Value": "0",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\VisualEffects",
|
|
"OriginalValue": "1",
|
|
"Name": "VisualFXSetting",
|
|
"Value": "3",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\Software\\Microsoft\\Windows\\DWM",
|
|
"OriginalValue": "1",
|
|
"Name": "EnableAeroPeek",
|
|
"Value": "0",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
|
|
"OriginalValue": "1",
|
|
"Name": "TaskbarMn",
|
|
"Value": "0",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
|
|
"OriginalValue": "1",
|
|
"Name": "TaskbarDa",
|
|
"Value": "0",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
|
|
"OriginalValue": "1",
|
|
"Name": "ShowTaskViewButton",
|
|
"Value": "0",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Search",
|
|
"OriginalValue": "1",
|
|
"Name": "SearchboxTaskbarMode",
|
|
"Value": "0",
|
|
"Type": "DWord"
|
|
}
|
|
],
|
|
"InvokeScript": [
|
|
"Set-ItemProperty -Path \"HKCU:\\Control Panel\\Desktop\" -Name \"UserPreferencesMask\" -Type Binary -Value ([byte[]](144,18,3,128,16,0,0,0))"
|
|
],
|
|
"UndoScript": [
|
|
"Remove-ItemProperty -Path \"HKCU:\\Control Panel\\Desktop\" -Name \"UserPreferencesMask\""
|
|
]
|
|
},
|
|
"WPFEssTweaksDeBloat": {
|
|
"appx": [
|
|
"Microsoft.Microsoft3DViewer",
|
|
"Microsoft.AppConnector",
|
|
"Microsoft.BingFinance",
|
|
"Microsoft.BingNews",
|
|
"Microsoft.BingSports",
|
|
"Microsoft.BingTranslator",
|
|
"Microsoft.BingWeather",
|
|
"Microsoft.BingFoodAndDrink",
|
|
"Microsoft.BingHealthAndFitness",
|
|
"Microsoft.BingTravel",
|
|
"Microsoft.MinecraftUWP",
|
|
"Microsoft.GamingServices",
|
|
"Microsoft.GetHelp",
|
|
"Microsoft.Getstarted",
|
|
"Microsoft.Messaging",
|
|
"Microsoft.Microsoft3DViewer",
|
|
"Microsoft.MicrosoftSolitaireCollection",
|
|
"Microsoft.NetworkSpeedTest",
|
|
"Microsoft.News",
|
|
"Microsoft.Office.Lens",
|
|
"Microsoft.Office.Sway",
|
|
"Microsoft.Office.OneNote",
|
|
"Microsoft.OneConnect",
|
|
"Microsoft.People",
|
|
"Microsoft.Print3D",
|
|
"Microsoft.SkypeApp",
|
|
"Microsoft.Wallet",
|
|
"Microsoft.Whiteboard",
|
|
"Microsoft.WindowsAlarms",
|
|
"microsoft.windowscommunicationsapps",
|
|
"Microsoft.WindowsFeedbackHub",
|
|
"Microsoft.WindowsMaps",
|
|
"Microsoft.WindowsPhone",
|
|
"Microsoft.WindowsSoundRecorder",
|
|
"Microsoft.XboxApp",
|
|
"Microsoft.ConnectivityStore",
|
|
"Microsoft.CommsPhone",
|
|
"Microsoft.ScreenSketch",
|
|
"Microsoft.Xbox.TCUI",
|
|
"Microsoft.XboxGameOverlay",
|
|
"Microsoft.XboxGameCallableUI",
|
|
"Microsoft.XboxSpeechToTextOverlay",
|
|
"Microsoft.MixedReality.Portal",
|
|
"Microsoft.XboxIdentityProvider",
|
|
"Microsoft.ZuneMusic",
|
|
"Microsoft.ZuneVideo",
|
|
"Microsoft.Getstarted",
|
|
"Microsoft.MicrosoftOfficeHub",
|
|
"*EclipseManager*",
|
|
"*ActiproSoftwareLLC*",
|
|
"*AdobeSystemsIncorporated.AdobePhotoshopExpress*",
|
|
"*Duolingo-LearnLanguagesforFree*",
|
|
"*PandoraMediaInc*",
|
|
"*CandyCrush*",
|
|
"*BubbleWitch3Saga*",
|
|
"*Wunderlist*",
|
|
"*Flipboard*",
|
|
"*Twitter*",
|
|
"*Facebook*",
|
|
"*Royal Revolt*",
|
|
"*Sway*",
|
|
"*Speed Test*",
|
|
"*Dolby*",
|
|
"*Viber*",
|
|
"*ACGMediaPlayer*",
|
|
"*Netflix*",
|
|
"*OneCalendar*",
|
|
"*LinkedInforWindows*",
|
|
"*HiddenCityMysteryofShadows*",
|
|
"*Hulu*",
|
|
"*HiddenCity*",
|
|
"*AdobePhotoshopExpress*",
|
|
"*HotspotShieldFreeVPN*",
|
|
"*Microsoft.Advertising.Xaml*"
|
|
],
|
|
"InvokeScript": [
|
|
"
|
|
$TeamsPath = [System.IO.Path]::Combine($env:LOCALAPPDATA, ''Microsoft'', ''Teams'')
|
|
$TeamsUpdateExePath = [System.IO.Path]::Combine($TeamsPath, ''Update.exe'')
|
|
|
|
Write-Host \"Stopping Teams process...\"
|
|
Stop-Process -Name \"*teams*\" -Force -ErrorAction SilentlyContinue
|
|
|
|
Write-Host \"Uninstalling Teams from AppData\\Microsoft\\Teams\"
|
|
if ([System.IO.File]::Exists($TeamsUpdateExePath)) {
|
|
# Uninstall app
|
|
$proc = Start-Process $TeamsUpdateExePath \"-uninstall -s\" -PassThru
|
|
$proc.WaitForExit()
|
|
}
|
|
|
|
Write-Host \"Removing Teams AppxPackage...\"
|
|
Get-AppxPackage \"*Teams*\" | Remove-AppxPackage -ErrorAction SilentlyContinue
|
|
Get-AppxPackage \"*Teams*\" -AllUsers | Remove-AppxPackage -AllUsers -ErrorAction SilentlyContinue
|
|
|
|
Write-Host \"Deleting Teams directory\"
|
|
if ([System.IO.Directory]::Exists($TeamsPath)) {
|
|
Remove-Item $TeamsPath -Force -Recurse -ErrorAction SilentlyContinue
|
|
}
|
|
|
|
Write-Host \"Deleting Teams uninstall registry key\"
|
|
# Uninstall from Uninstall registry key UninstallString
|
|
$us = (Get-ChildItem -Path HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall, HKLM:\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall | Get-ItemProperty | Where-Object { $_.DisplayName -like ''*Teams*''}).UninstallString
|
|
if ($us.Length -gt 0) {
|
|
$us = ($us.Replace(''/I'', ''/uninstall '') + '' /quiet'').Replace('' '', '' '')
|
|
$FilePath = ($us.Substring(0, $us.IndexOf(''.exe'') + 4).Trim())
|
|
$ProcessArgs = ($us.Substring($us.IndexOf(''.exe'') + 5).Trim().replace('' '', '' ''))
|
|
$proc = Start-Process -FilePath $FilePath -Args $ProcessArgs -PassThru
|
|
$proc.WaitForExit()
|
|
}
|
|
"
|
|
]
|
|
},
|
|
"WPFEssTweaksRestorePoint": {
|
|
"InvokeScript": [
|
|
"
|
|
# Check if the user has administrative privileges
|
|
if (-Not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
|
|
Write-Host \"Please run this script as an administrator.\"
|
|
return
|
|
}
|
|
|
|
# Check if System Restore is enabled for the main drive
|
|
try {
|
|
# Try getting restore points to check if System Restore is enabled
|
|
Enable-ComputerRestore -Drive \"$env:SystemDrive\"
|
|
} catch {
|
|
Write-Host \"An error occurred while enabling System Restore: $_\"
|
|
}
|
|
|
|
# Check if the SystemRestorePointCreationFrequency value exists
|
|
$exists = Get-ItemProperty -path \"HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SystemRestore\" -Name \"SystemRestorePointCreationFrequency\" -ErrorAction SilentlyContinue
|
|
if($null -eq $exists){
|
|
write-host ''Changing system to allow multiple restore points per day''
|
|
Set-ItemProperty -Path \"HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SystemRestore\" -Name \"SystemRestorePointCreationFrequency\" -Value \"0\" -Type DWord -Force -ErrorAction Stop | Out-Null
|
|
}
|
|
|
|
# Get all the restore points for the current day
|
|
$existingRestorePoints = Get-ComputerRestorePoint | Where-Object { $_.CreationTime.Date -eq (Get-Date).Date }
|
|
|
|
# Check if there is already a restore point created today
|
|
if ($existingRestorePoints.Count -eq 0) {
|
|
$description = \"System Restore Point created by WinUtil\"
|
|
|
|
Checkpoint-Computer -Description $description -RestorePointType \"MODIFY_SETTINGS\"
|
|
Write-Host -ForegroundColor Green \"System Restore Point Created Successfully\"
|
|
}
|
|
"
|
|
]
|
|
},
|
|
"WPFEssTweaksOO": {
|
|
"InvokeScript": [
|
|
"curl.exe -s \"https://raw.githubusercontent.com/ChrisTitusTech/winutil/main/ooshutup10_winutil_settings.cfg\" -o $ENV:temp\\ooshutup10.cfg
|
|
curl.exe -s \"https://dl5.oo-software.com/files/ooshutup10/OOSU10.exe\" -o $ENV:temp\\OOSU10.exe
|
|
Start-Process $ENV:temp\\OOSU10.exe -ArgumentList \"\"\"$ENV:temp\\ooshutup10.cfg\"\" /quiet\"
|
|
"
|
|
]
|
|
},
|
|
"WPFEssTweaksStorage": {
|
|
"InvokeScript": [
|
|
"Remove-Item -Path \"HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\StorageSense\\Parameters\\StoragePolicy\" -Recurse -ErrorAction SilentlyContinue"
|
|
],
|
|
"UndoScript": [
|
|
"New-Item -Path \"HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\StorageSense\\Parameters\\StoragePolicy\" | Out-Null
|
|
"
|
|
]
|
|
},
|
|
"WPFEssTweaksRemoveEdge": {
|
|
"InvokeScript": [
|
|
"
|
|
#:: Standalone script by AveYo Source: https://raw.githubusercontent.com/AveYo/fox/main/Edge_Removal.bat
|
|
|
|
curl.exe -s \"https://raw.githubusercontent.com/ChrisTitusTech/winutil/main/edgeremoval.bat\" -o $ENV:temp\\edgeremoval.bat
|
|
Start-Process $ENV:temp\\edgeremoval.bat
|
|
|
|
"
|
|
],
|
|
"UndoScript": [
|
|
"
|
|
Write-Host \"Install Microsoft Edge\"
|
|
Start-Process -FilePath winget -ArgumentList \"install -e --accept-source-agreements --accept-package-agreements --silent Microsoft.Edge \" -NoNewWindow -Wait
|
|
"
|
|
]
|
|
},
|
|
"WPFEssTweaksRemoveOnedrive": {
|
|
"InvokeScript": [
|
|
"
|
|
|
|
Write-Host \"Kill OneDrive process\"
|
|
taskkill.exe /F /IM \"OneDrive.exe\"
|
|
taskkill.exe /F /IM \"explorer.exe\"
|
|
|
|
Write-Host \"Copy all OneDrive to Root UserProfile\"
|
|
Start-Process -FilePath robocopy -ArgumentList \"$env:USERPROFILE\\OneDrive $env:USERPROFILE /e /xj\" -NoNewWindow -Wait
|
|
|
|
Write-Host \"Remove OneDrive\"
|
|
Start-Process -FilePath winget -ArgumentList \"uninstall -e --purge --force --silent Microsoft.OneDrive \" -NoNewWindow -Wait
|
|
|
|
Write-Host \"Removing OneDrive leftovers\"
|
|
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue \"$env:localappdata\\Microsoft\\OneDrive\"
|
|
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue \"$env:programdata\\Microsoft OneDrive\"
|
|
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue \"$env:systemdrive\\OneDriveTemp\"
|
|
# check if directory is empty before removing:
|
|
If ((Get-ChildItem \"$env:userprofile\\OneDrive\" -Recurse | Measure-Object).Count -eq 0) {
|
|
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue \"$env:userprofile\\OneDrive\"
|
|
}
|
|
|
|
Write-Host \"Remove Onedrive from explorer sidebar\"
|
|
Set-ItemProperty -Path \"HKCR:\\CLSID\\{018D5C66-4533-4307-9B53-224DE2ED1FE6}\" -Name \"System.IsPinnedToNameSpaceTree\" -Value 0
|
|
Set-ItemProperty -Path \"HKCR:\\Wow6432Node\\CLSID\\{018D5C66-4533-4307-9B53-224DE2ED1FE6}\" -Name \"System.IsPinnedToNameSpaceTree\" -Value 0
|
|
|
|
Write-Host \"Removing run hook for new users\"
|
|
reg load \"hku\\Default\" \"C:\\Users\\Default\\NTUSER.DAT\"
|
|
reg delete \"HKEY_USERS\\Default\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\" /v \"OneDriveSetup\" /f
|
|
reg unload \"hku\\Default\"
|
|
|
|
Write-Host \"Removing startmenu entry\"
|
|
Remove-Item -Force -ErrorAction SilentlyContinue \"$env:userprofile\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\OneDrive.lnk\"
|
|
|
|
Write-Host \"Removing scheduled task\"
|
|
Get-ScheduledTask -TaskPath ''\\'' -TaskName ''OneDrive*'' -ea SilentlyContinue | Unregister-ScheduledTask -Confirm:$false
|
|
|
|
# Add Shell folders restoring default locations
|
|
Write-Host \"Shell Fixing\"
|
|
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"AppData\" -Value \"$env:userprofile\\AppData\\Roaming\" -Type ExpandString
|
|
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"Cache\" -Value \"$env:userprofile\\AppData\\Local\\Microsoft\\Windows\\INetCache\" -Type ExpandString
|
|
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"Cookies\" -Value \"$env:userprofile\\AppData\\Local\\Microsoft\\Windows\\INetCookies\" -Type ExpandString
|
|
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"Favorites\" -Value \"$env:userprofile\\Favorites\" -Type ExpandString
|
|
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"History\" -Value \"$env:userprofile\\AppData\\Local\\Microsoft\\Windows\\History\" -Type ExpandString
|
|
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"Local AppData\" -Value \"$env:userprofile\\AppData\\Local\" -Type ExpandString
|
|
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"My Music\" -Value \"$env:userprofile\\Music\" -Type ExpandString
|
|
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"My Video\" -Value \"$env:userprofile\\Videos\" -Type ExpandString
|
|
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"NetHood\" -Value \"$env:userprofile\\AppData\\Roaming\\Microsoft\\Windows\\Network Shortcuts\" -Type ExpandString
|
|
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"PrintHood\" -Value \"$env:userprofile\\AppData\\Roaming\\Microsoft\\Windows\\Printer Shortcuts\" -Type ExpandString
|
|
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"Programs\" -Value \"$env:userprofile\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\" -Type ExpandString
|
|
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"Recent\" -Value \"$env:userprofile\\AppData\\Roaming\\Microsoft\\Windows\\Recent\" -Type ExpandString
|
|
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"SendTo\" -Value \"$env:userprofile\\AppData\\Roaming\\Microsoft\\Windows\\SendTo\" -Type ExpandString
|
|
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"Start Menu\" -Value \"$env:userprofile\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\" -Type ExpandString
|
|
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"Startup\" -Value \"$env:userprofile\\AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\" -Type ExpandString
|
|
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"Templates\" -Value \"$env:userprofile\\AppData\\Roaming\\Microsoft\\Windows\\Templates\" -Type ExpandString
|
|
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"{374DE290-123F-4565-9164-39C4925E467B}\" -Value \"$env:userprofile\\Downloads\" -Type ExpandString
|
|
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"Desktop\" -Value \"$env:userprofile\\Desktop\" -Type ExpandString
|
|
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"My Pictures\" -Value \"$env:userprofile\\Pictures\" -Type ExpandString
|
|
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"Personal\" -Value \"$env:userprofile\\Documents\" -Type ExpandString
|
|
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"{F42EE2D3-909F-4907-8871-4C22FC0BF756}\" -Value \"$env:userprofile\\Documents\" -Type ExpandString
|
|
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders\" -Name \"{0DDD015D-B06C-45D5-8C4C-F59713854639}\" -Value \"$env:userprofile\\Pictures\" -Type ExpandString
|
|
Write-Host \"Restarting explorer\"
|
|
Start-Process \"explorer.exe\"
|
|
|
|
Write-Host \"Waiting for explorer to complete loading\"
|
|
Write-Host \"Please Note - OneDrive folder may still have items in it. You must manually delete it, but all the files should already be copied to the base user folder.\"
|
|
Start-Sleep 5
|
|
"
|
|
],
|
|
"UndoScript": [
|
|
"
|
|
Write-Host \"Install OneDrive\"
|
|
Start-Process -FilePath winget -ArgumentList \"install -e --accept-source-agreements --accept-package-agreements --silent Microsoft.OneDrive \" -NoNewWindow -Wait
|
|
"
|
|
]
|
|
},
|
|
"WPFMiscTweaksDisableNotifications": {
|
|
"registry": [
|
|
{
|
|
"Path": "HKCU:\\Software\\Policies\\Microsoft\\Windows\\Explorer",
|
|
"Name": "DisableNotificationCenter",
|
|
"Type": "DWord",
|
|
"Value": "1",
|
|
"OriginalValue": "0"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\PushNotifications",
|
|
"Name": "ToastEnabled",
|
|
"Type": "DWord",
|
|
"Value": "0",
|
|
"OriginalValue": "1"
|
|
}
|
|
]
|
|
},
|
|
"WPFMiscTweaksRightClickMenu": {
|
|
"InvokeScript": [
|
|
"New-Item -Path \"HKCU:\\Software\\Classes\\CLSID\\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\" -Name \"InprocServer32\" -force -value \"\" "
|
|
],
|
|
"UndoScript": [
|
|
"
|
|
Remove-Item -Path \"HKCU:\\Software\\Classes\\CLSID\\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\" -Recurse -Confirm:$false -Force
|
|
Write-Host Restart Needed for change
|
|
"
|
|
]
|
|
},
|
|
"WPFEssTweaksDiskCleanup": {
|
|
"InvokeScript": [
|
|
"
|
|
cleanmgr.exe /d C: /VERYLOWDISK
|
|
Dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase
|
|
"
|
|
]
|
|
},
|
|
"WPFMiscTweaksDisableUAC": {
|
|
"registry": [
|
|
{
|
|
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System",
|
|
"OriginalValue": "5",
|
|
"Name": "ConsentPromptBehaviorAdmin",
|
|
"Value": "0",
|
|
"Type": "DWord"
|
|
}
|
|
]
|
|
},
|
|
"WPFEssTweaksDeleteTempFiles": {
|
|
"InvokeScript": [
|
|
"Get-ChildItem -Path \"C:\\Windows\\Temp\" *.* -Recurse | Remove-Item -Force -Recurse
|
|
Get-ChildItem -Path $env:TEMP *.* -Recurse | Remove-Item -Force -Recurse"
|
|
]
|
|
},
|
|
"WPFEssTweaksDVR": {
|
|
"registry": [
|
|
{
|
|
"Path": "HKCU:\\System\\GameConfigStore",
|
|
"Name": "GameDVR_FSEBehavior",
|
|
"Value": "2",
|
|
"OriginalValue": "1",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\System\\GameConfigStore",
|
|
"Name": "GameDVR_Enabled",
|
|
"Value": "0",
|
|
"OriginalValue": "1",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\System\\GameConfigStore",
|
|
"Name": "GameDVR_DXGIHonorFSEWindowsCompatible",
|
|
"Value": "1",
|
|
"OriginalValue": "0",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\System\\GameConfigStore",
|
|
"Name": "GameDVR_HonorUserFSEBehaviorMode",
|
|
"Value": "1",
|
|
"OriginalValue": "0",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKCU:\\System\\GameConfigStore",
|
|
"Name": "GameDVR_EFSEFeatureFlags",
|
|
"Value": "0",
|
|
"OriginalValue": "1",
|
|
"Type": "DWord"
|
|
},
|
|
{
|
|
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\GameDVR",
|
|
"Name": "AllowGameDVR",
|
|
"Value": "0",
|
|
"OriginalValue": "1",
|
|
"Type": "DWord"
|
|
}
|
|
]
|
|
},
|
|
"WPFEssTweaksTeredo": {
|
|
"registry": [
|
|
{
|
|
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Services\\Tcpip6\\Parameters",
|
|
"Name": "DisabledComponents",
|
|
"Value": "1",
|
|
"OriginalValue": "0",
|
|
"Type": "DWord"
|
|
}
|
|
],
|
|
"InvokeScript": [
|
|
"netsh interface teredo set state disabled"
|
|
],
|
|
"UndoScript": [
|
|
"netsh interface teredo set state default"
|
|
]
|
|
},
|
|
"WPFBingSearch": {
|
|
"registry": [
|
|
{
|
|
"OriginalValue": "1",
|
|
"Name": "BingSearchEnabled",
|
|
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Search",
|
|
"Type": "DWord",
|
|
"Value": "0"
|
|
}
|
|
]
|
|
},
|
|
"WPFMiscTweaksDisableipsix": {
|
|
"InvokeScript": [
|
|
"Disable-NetAdapterBinding -Name \"*\" -ComponentID ms_tcpip6"
|
|
],
|
|
"UndoScript": [
|
|
"Enable-NetAdapterBinding -Name \"*\" -ComponentID ms_tcpip6"
|
|
]
|
|
},
|
|
"WPFMiscTweaksEnableipsix": {
|
|
"InvokeScript": [
|
|
"Enable-NetAdapterBinding -Name \"*\" -ComponentID ms_tcpip6"
|
|
],
|
|
"UndoScript": [
|
|
"Disable-NetAdapterBinding -Name \"*\" -ComponentID ms_tcpip6"
|
|
]
|
|
}
|
|
}' | convertfrom-json
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
# Set the maximum number of threads for the RunspacePool to the number of threads on the machine
|
|
$maxthreads = [int]$env:NUMBER_OF_PROCESSORS
|
|
|
|
# Create a new session state for parsing variables into our runspace
|
|
$hashVars = New-object System.Management.Automation.Runspaces.SessionStateVariableEntry -ArgumentList 'sync',$sync,$Null
|
|
$InitialSessionState = [System.Management.Automation.Runspaces.InitialSessionState]::CreateDefault()
|
|
|
|
# Add the variable to the session state
|
|
$InitialSessionState.Variables.Add($hashVars)
|
|
|
|
# Get every private function and add them to the session state
|
|
$functions = Get-ChildItem function:\ | Where-Object {$_.name -like "*winutil*" -or $_.name -like "*WPF*"}
|
|
foreach ($function in $functions){
|
|
$functionDefinition = Get-Content function:\$($function.name)
|
|
$functionEntry = New-Object System.Management.Automation.Runspaces.SessionStateFunctionEntry -ArgumentList $($function.name), $functionDefinition
|
|
|
|
$initialSessionState.Commands.Add($functionEntry)
|
|
}
|
|
|
|
# Create the runspace pool
|
|
$sync.runspace = [runspacefactory]::CreateRunspacePool(
|
|
1, # Minimum thread count
|
|
$maxthreads, # Maximum thread count
|
|
$InitialSessionState, # Initial session state
|
|
$Host # Machine to create runspaces on
|
|
)
|
|
|
|
# Open the RunspacePool instance
|
|
$sync.runspace.Open()
|
|
|
|
# Create classes for different exceptions
|
|
|
|
class WingetFailedInstall : Exception {
|
|
[string] $additionalData
|
|
|
|
WingetFailedInstall($Message) : base($Message) {}
|
|
}
|
|
|
|
class ChocoFailedInstall : Exception {
|
|
[string] $additionalData
|
|
|
|
ChocoFailedInstall($Message) : base($Message) {}
|
|
}
|
|
|
|
class GenericException : Exception {
|
|
[string] $additionalData
|
|
|
|
GenericException($Message) : base($Message) {}
|
|
}
|
|
|
|
|
|
$inputXML = $inputXML -replace 'mc:Ignorable="d"', '' -replace "x:N", 'N' -replace '^<Win.*', '<Window'
|
|
|
|
$organizedData = @{}
|
|
# Iterate through JSON data and organize by panel and category
|
|
foreach ($appName in $sync.configs.applications.PSObject.Properties.Name) {
|
|
$appInfo = $sync.configs.applications.$appName
|
|
|
|
# Create an object for the application
|
|
$appObject = [PSCustomObject]@{
|
|
Name = $appName
|
|
Category = $appInfo.Category
|
|
Content = $appInfo.Content
|
|
Choco = $appInfo.choco
|
|
Winget = $appInfo.winget
|
|
Panel = $appInfo.panel
|
|
Link = $appInfo.link
|
|
Description = $appInfo.description
|
|
}
|
|
|
|
if (-not $organizedData.ContainsKey($appInfo.panel)) {
|
|
$organizedData[$appInfo.panel] = @{}
|
|
}
|
|
|
|
if (-not $organizedData[$appInfo.panel].ContainsKey($appInfo.Category)) {
|
|
$organizedData[$appInfo.panel][$appInfo.Category] = @{}
|
|
}
|
|
|
|
# Store application data in a sub-array under the category
|
|
$organizedData[$appInfo.panel][$appInfo.Category][$appName] = $appObject
|
|
}
|
|
|
|
# Iterate through organizedData by panel, category, and application
|
|
foreach ($panel in $organizedData.Keys) {
|
|
foreach ($category in $organizedData[$panel].Keys) {
|
|
$blockXml += "<Label Content=""$($category)"" FontSize=""16""/>`n"
|
|
$sortedApps = $organizedData[$panel][$category].Keys | Sort-Object
|
|
foreach ($appName in $sortedApps) {
|
|
$appInfo = $organizedData[$panel][$category][$appName]
|
|
if ($null -eq $appInfo.Link)
|
|
{
|
|
$blockXml += "<CheckBox Name=""$appName"" Content=""$($appInfo.Content)"" ToolTip=""$($appInfo.Description)""/>`n"
|
|
}
|
|
else
|
|
{
|
|
$blockXml += "<StackPanel Orientation=""Horizontal""><CheckBox Name=""$appName"" Content=""$($appInfo.Content)"" ToolTip=""$($appInfo.Description)"" Margin=""0,0,2,0""/><TextBlock Name=""$($appName)Link"" Style=""{StaticResource HoverTextBlockStyle}"" Text=""(?)"" ToolTip=""$($appInfo.Link)"" /></StackPanel>`n"
|
|
}
|
|
}
|
|
}
|
|
|
|
$inputXML = $inputXML -replace "{{InstallPanel$panel}}", $blockXml
|
|
$blockXml = ""
|
|
}
|
|
|
|
if ((Get-WinUtilToggleStatus WPFToggleDarkMode) -eq $True) {
|
|
$ctttheme = 'Matrix'
|
|
}
|
|
else {
|
|
$ctttheme = 'Classic'
|
|
}
|
|
$inputXML = Set-WinUtilUITheme -inputXML $inputXML -themeName $ctttheme
|
|
|
|
[void][System.Reflection.Assembly]::LoadWithPartialName('presentationframework')
|
|
[xml]$XAML = $inputXML
|
|
|
|
# Read the XAML file
|
|
$reader = (New-Object System.Xml.XmlNodeReader $xaml)
|
|
try { $sync["Form"] = [Windows.Markup.XamlReader]::Load( $reader ) }
|
|
catch [System.Management.Automation.MethodInvocationException] {
|
|
Write-Warning "We ran into a problem with the XAML code. Check the syntax for this control..."
|
|
Write-Host $error[0].Exception.Message -ForegroundColor Red
|
|
If ($error[0].Exception.Message -like "*button*") {
|
|
write-warning "Ensure your <button in the `$inputXML does NOT have a Click=ButtonClick property. PS can't handle this`n`n`n`n"
|
|
}
|
|
}
|
|
catch {
|
|
Write-Host "Unable to load Windows.Markup.XamlReader. Double-check syntax and ensure .net is installed."
|
|
}
|
|
|
|
|
|
|
|
#===========================================================================
|
|
# Store Form Objects In PowerShell
|
|
#===========================================================================
|
|
|
|
$xaml.SelectNodes("//*[@Name]") | ForEach-Object {$sync["$("$($psitem.Name)")"] = $sync["Form"].FindName($psitem.Name)}
|
|
|
|
$sync.keys | ForEach-Object {
|
|
if($sync.$psitem){
|
|
if($($sync["$psitem"].GetType() | Select-Object -ExpandProperty Name) -eq "CheckBox" `
|
|
-and $sync["$psitem"].Name -like "WPFToggle*"){
|
|
$sync["$psitem"].IsChecked = Get-WinUtilToggleStatus $sync["$psitem"].Name
|
|
|
|
$sync["$psitem"].Add_Click({
|
|
[System.Object]$Sender = $args[0]
|
|
Invoke-WPFToggle $Sender.name
|
|
})
|
|
}
|
|
|
|
if($($sync["$psitem"].GetType() | Select-Object -ExpandProperty Name) -eq "ToggleButton"){
|
|
$sync["$psitem"].Add_Click({
|
|
[System.Object]$Sender = $args[0]
|
|
Invoke-WPFButton $Sender.name
|
|
})
|
|
}
|
|
|
|
if($($sync["$psitem"].GetType() | Select-Object -ExpandProperty Name) -eq "Button"){
|
|
$sync["$psitem"].Add_Click({
|
|
[System.Object]$Sender = $args[0]
|
|
Invoke-WPFButton $Sender.name
|
|
})
|
|
}
|
|
|
|
if ($($sync["$psitem"].GetType() | Select-Object -ExpandProperty Name) -eq "TextBlock") {
|
|
if ($sync["$psitem"].Name.EndsWith("Link")) {
|
|
$sync["$psitem"].Add_MouseUp({
|
|
[System.Object]$Sender = $args[0]
|
|
Start-Process $Sender.ToolTip -ErrorAction Stop
|
|
Write-Host "Let's go: $($Sender.ToolTip)"
|
|
})
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
#===========================================================================
|
|
# Setup background config
|
|
#===========================================================================
|
|
|
|
# Load computer information in the background
|
|
Invoke-WPFRunspace -ScriptBlock {
|
|
$sync.ConfigLoaded = $False
|
|
$sync.ComputerInfo = Get-ComputerInfo
|
|
$sync.ConfigLoaded = $True
|
|
} | Out-Null
|
|
|
|
#===========================================================================
|
|
# Setup and Show the Form
|
|
#===========================================================================
|
|
|
|
# Print the logo
|
|
Invoke-WPFFormVariables
|
|
|
|
# Check if Chocolatey is installed
|
|
Install-WinUtilChoco
|
|
|
|
# Set the titlebar
|
|
$sync["Form"].title = $sync["Form"].title + " " + $sync.version
|
|
# Set the commands that will run when the form is closed
|
|
$sync["Form"].Add_Closing({
|
|
$sync.runspace.Dispose()
|
|
$sync.runspace.Close()
|
|
[System.GC]::Collect()
|
|
})
|
|
|
|
|
|
# Attach the event handler to the Click event
|
|
$sync.CheckboxFilterClear.Add_Click({
|
|
$sync.CheckboxFilter.Text = ""
|
|
$sync.CheckboxFilterClear.Visibility = "Collapsed"
|
|
})
|
|
|
|
# add some shortcuts for people that don't like clicking
|
|
$commonKeyEvents = {
|
|
if ($sync.ProcessRunning -eq $true) {
|
|
return
|
|
}
|
|
|
|
if ($_.Key -eq "Escape")
|
|
{
|
|
$sync.CheckboxFilter.SelectAll()
|
|
$sync.CheckboxFilter.Text = ""
|
|
$sync.CheckboxFilterClear.Visibility = "Collapsed"
|
|
return
|
|
}
|
|
|
|
# don't ask, I know what I'm doing, just go...
|
|
if (($_.Key -eq "Q" -and $_.KeyboardDevice.Modifiers -eq "Ctrl"))
|
|
{
|
|
$this.Close()
|
|
}
|
|
if ($_.KeyboardDevice.Modifiers -eq "Alt") {
|
|
if ($_.SystemKey -eq "I") {
|
|
Invoke-WPFButton "WPFTab1BT"
|
|
}
|
|
if ($_.SystemKey -eq "T") {
|
|
Invoke-WPFButton "WPFTab2BT"
|
|
}
|
|
if ($_.SystemKey -eq "C") {
|
|
Invoke-WPFButton "WPFTab3BT"
|
|
}
|
|
if ($_.SystemKey -eq "U") {
|
|
Invoke-WPFButton "WPFTab4BT"
|
|
}
|
|
if ($_.SystemKey -eq "M") {
|
|
Invoke-WPFButton "WPFTab5BT"
|
|
}
|
|
if ($_.SystemKey -eq "P") {
|
|
Write-Host "Your Windows Product Key: $((Get-WmiObject -query 'select * from SoftwareLicensingService').OA3xOriginalProductKey)"
|
|
}
|
|
}
|
|
# shortcut for the filter box
|
|
if ($_.Key -eq "F" -and $_.KeyboardDevice.Modifiers -eq "Ctrl") {
|
|
if ($sync.CheckboxFilter.Text -eq "Ctrl-F to filter") {
|
|
$sync.CheckboxFilter.SelectAll()
|
|
$sync.CheckboxFilter.Text = ""
|
|
}
|
|
$sync.CheckboxFilter.Focus()
|
|
}
|
|
}
|
|
|
|
$sync["Form"].Add_PreViewKeyDown($commonKeyEvents)
|
|
|
|
# adding some left mouse window move on drag capability
|
|
$sync["Form"].Add_MouseLeftButtonDown({
|
|
$sync["Form"].DragMove()
|
|
})
|
|
|
|
$sync["Form"].Add_MouseDoubleClick({
|
|
if ($sync["Form"].WindowState -eq [Windows.WindowState]::Normal)
|
|
{
|
|
$sync["Form"].WindowState = [Windows.WindowState]::Maximized;
|
|
}
|
|
else
|
|
{
|
|
$sync["Form"].WindowState = [Windows.WindowState]::Normal;
|
|
}
|
|
})
|
|
|
|
$sync["Form"].Add_ContentRendered({
|
|
|
|
foreach ($proc in (Get-Process | Where-Object { $_.MainWindowTitle -and $_.MainWindowTitle -like "*tit*" })) {
|
|
if ($proc.Id -ne [System.IntPtr]::Zero) {
|
|
Write-Debug "MainWindowHandle: $($proc.Id) $($proc.MainWindowTitle) $($proc.MainWindowHandle)"
|
|
$windowHandle = $proc.MainWindowHandle
|
|
}
|
|
}
|
|
|
|
try {
|
|
[void][Window]
|
|
} catch {
|
|
Add-Type @"
|
|
using System;
|
|
using System.Runtime.InteropServices;
|
|
public class Window {
|
|
[DllImport("user32.dll")]
|
|
[return: MarshalAs(UnmanagedType.Bool)]
|
|
public static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect);
|
|
[DllImport("user32.dll")]
|
|
[return: MarshalAs(UnmanagedType.Bool)]
|
|
public static extern bool MoveWindow(IntPtr handle, int x, int y, int width, int height, bool redraw);
|
|
[DllImport("user32.dll")]
|
|
public static extern int GetSystemMetrics(int nIndex);
|
|
}
|
|
public struct RECT {
|
|
public int Left; // x position of upper-left corner
|
|
public int Top; // y position of upper-left corner
|
|
public int Right; // x position of lower-right corner
|
|
public int Bottom; // y position of lower-right corner
|
|
}
|
|
"@
|
|
}
|
|
|
|
$rect = New-Object RECT
|
|
[void][Window]::GetWindowRect($windowHandle, [ref]$rect)
|
|
$width = $rect.Right - $rect.Left
|
|
$height = $rect.Bottom - $rect.Top
|
|
|
|
Write-Debug "UpperLeft:$($rect.Left),$($rect.Top) LowerBottom:$($rect.Right),$($rect.Bottom). Width:$($width) Height:$($height)"
|
|
|
|
# Load the Windows Forms assembly
|
|
Add-Type -AssemblyName System.Windows.Forms
|
|
$primaryScreen = [System.Windows.Forms.Screen]::PrimaryScreen
|
|
# Check if the primary screen is found
|
|
if ($primaryScreen) {
|
|
# Extract screen width and height for the primary monitor
|
|
$screenWidth = $primaryScreen.Bounds.Width
|
|
$screenHeight = $primaryScreen.Bounds.Height
|
|
|
|
# Print the screen size
|
|
Write-Debug "Primary Monitor Width: $screenWidth pixels"
|
|
Write-Debug "Primary Monitor Height: $screenHeight pixels"
|
|
|
|
# Compare with the primary monitor size
|
|
if ($width -gt $screenWidth -or $height -gt $screenHeight) {
|
|
Write-Debug "The specified width and/or height is greater than the primary monitor size."
|
|
[void][Window]::MoveWindow($windowHandle, 0, 0, $screenWidth, $screenHeight, $True)
|
|
} else {
|
|
Write-Debug "The specified width and height are within the primary monitor size limits."
|
|
}
|
|
} else {
|
|
Write-Debug "Unable to retrieve information about the primary monitor."
|
|
}
|
|
|
|
Invoke-WPFTab "WPFTab1BT"
|
|
$sync["Form"].Focus()
|
|
})
|
|
|
|
$sync["CheckboxFilter"].Add_TextChanged({
|
|
|
|
if ($sync.CheckboxFilter.Text -ne "") {
|
|
$sync.CheckboxFilterClear.Visibility = "Visible"
|
|
}
|
|
else {
|
|
$sync.CheckboxFilterClear.Visibility = "Collapsed"
|
|
}
|
|
|
|
$filter = Get-WinUtilVariables -Type CheckBox
|
|
$CheckBoxes = $sync.GetEnumerator() | Where-Object { $psitem.Key -in $filter }
|
|
|
|
foreach ($CheckBox in $CheckBoxes) {
|
|
# Check if the checkbox is null or if it doesn't have content
|
|
if ($CheckBox -eq $null -or $CheckBox.Value -eq $null -or $CheckBox.Value.Content -eq $null) {
|
|
continue
|
|
}
|
|
|
|
$textToSearch = $sync.CheckboxFilter.Text
|
|
$checkBoxName = $CheckBox.Key
|
|
$textBlockName = $checkBoxName + "Link"
|
|
|
|
# Retrieve the corresponding text block based on the generated name
|
|
$textBlock = $sync[$textBlockName]
|
|
|
|
if ($CheckBox.Value.Content.ToLower().Contains($textToSearch)) {
|
|
$CheckBox.Value.Visibility = "Visible"
|
|
# Set the corresponding text block visibility
|
|
if ($textBlock -ne $null) {
|
|
$textBlock.Visibility = "Visible"
|
|
}
|
|
}
|
|
else {
|
|
$CheckBox.Value.Visibility = "Collapsed"
|
|
# Set the corresponding text block visibility
|
|
if ($textBlock -ne $null) {
|
|
$textBlock.Visibility = "Collapsed"
|
|
}
|
|
}
|
|
}
|
|
|
|
})
|
|
|
|
$sync["Form"].ShowDialog() | out-null
|
|
Stop-Transcript
|