Merge branch 'main' into compact

This commit is contained in:
MyDrift 2024-08-19 13:34:33 +02:00
commit f0b4660478
205 changed files with 18709 additions and 21778 deletions

117
.github/CONTRIBUTING.md vendored Normal file
View File

@ -0,0 +1,117 @@
# How to Contribute?
## Testing
* Test the latest changes to WinUtil by running the pre-release and reporting issues you are encountering to help us continually improve WinUtil!
#### **Run the latest pre-release**
```ps1
irm christitus.com/windev | iex
```
!!! bug "Keep in mind"
This is a pre-release and should be treated as such. It exists for developers to test the utility and report or fix bugs before they get added to the stable release. Don't use it in production!
## Issues
* If you encounter any challenges or problems with the script, I kindly request that you submit them via the "Issues" tab on the GitHub repository. By filling out the provided template, you can provide specific details about the issue, allowing me (and others in the community) to promptly address any bugs or consider feature requests.
## Contribute Code
* Pull requests are now handled directly on the **MAIN branch**. This was done since we can now select specific releases to launch via releases in GitHub.
* If you're doing code changes, then you can submit a PR to `main` branch, but I am very selective about these.
!!! warning "Important"
Do not use a code formatter, make massive amounts of line changes, or make multiple feature changes. EACH FEATURE CHANGE SHOULD BE IT'S OWN PULL REQUEST!
* When creating pull requests, it is essential to thoroughly document all changes made. This includes, but is not limited to, documenting any additions made to the `tweaks` section and corresponding `undo tweak`, so users are able to remove the newly added tweaks if necessary, and comprehensive documentation is required for all code changes. Document your changes and briefly explain why you made your changes in your Pull Request Description. Failure to adhere to this format may result in the denial of the pull request. Additionally, any code lacking sufficient documentation may also be denied.
* By following these guidelines, we can maintain a high standard of quality and ensure that the codebase remains organized and well-documented.
!!! note
When creating a function, please include "WPF" or "WinUtil" in the file name so it can be loaded into the runspace.
## Walk through
* This is a guide for beginners. If you are still having issues, look at the following official GitHub documentation:
* [Commit through WEB](https://docs.github.com/en/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/about-commits)
* [Commit through GitHub Desktop](https://docs.github.com/en/desktop/making-changes-in-a-branch/committing-and-reviewing-changes-to-your-project-in-github-desktop#about-commits)
* [Create a Pull Request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request)
### Overview
``` mermaid
%%{init: {"flowchart": {"curve": "cardinal"}} }%%
graph TD
  A[Fork Project] --> B[Clone Repository];
  B --> C[Create New Branch];
  C --> D[Make Changes];
  D --> G[Test Changes];
  G --> H{Tests Passed?};
  H -->|Yes| E[Commit Changes];
  H -->|No| J[Fix Issues];
  J --> G;
  E --> F[Push Branch];
  F --> K[Create Pull Request];
  K --> L[Fill out PR template];
classDef default stroke:#333,stroke-width:4px,font-size:12pt;
```
!!! info
This is a diagram to guide you through the process. It may vary depending on the type of change you're making.
### Fork the Repo
* Fork the WinUtil Repository [here](https://github.com/ChrisTitusTech/winutil) to create a copy that will be available in your repository list.
![Fork Image](assets/Fork-Button-Dark.png#only-dark)
![Fork Image](assets/Fork-Button-Light.png#only-light)
### Clone the Fork
!!! tip
While you can make your changes directly through the Web, we recommend cloning the repo to your device using the application GitHub Desktop (available in WinUtil) to test your fork easily.
* Install GitHub Desktop if it is not already installed.
* Log in using the same GitHub account you used to fork WinUtil.
* Choose the fork under "Your Repositories" and press "clone {repo name}"
* Create a new branch and name it something relatable to your changes.
* Now you can modify WinUtil to your liking using your preferred text editor.
### Testing your changes
* To test to see if your changes work as intended run following commands in a powershell teminal as admin:
* Change the directory where you are running the commands to the forked project.
* `cd {path to the folder with the compile.ps1}`
* Run the following command to compile and run WinUtil:
* `.\Compile.ps1 -run`
![Compile](assets/Compile.png)
* After seeing that your changes work properly, feel free to commit the changes to the repository and make a PR. For help on that, follow the documentation below.
### Committing the changes
* Before committing your changes, please discard changes made to the `winutil.ps1` file, like the following:
![Push Commit Image](assets/Discard-GHD.png)
* Now, commit your changes once you are happy with the result.
![Commit Image](assets/Commit-GHD.png)
* Push the changes to upload them to your fork on github.com.
![Push Commit Image](assets/Push-Commit.png)
### Making a PR
* To make a PR on your repo under a new branch linking to the main branch, a button will show and say Preview and Create pull request. Click that button and fill in all the information that is provided on the template. Once all the information is filled in correctly, check your PR to make sure there is not a WinUtil.ps1 file attached to the PR. Once everything is good, make the PR and wait for Chris (the maintainer) to accept or deny your PR. Once it is accepted by Chris, you will be able to see your changes in the "/windev" build.
* If you do not see your feature in the main "/win" build, that is fine. All new changes go into the /windev build to make sure everything is working OK before going fully public.
* Congratulations! You just submitted your first PR. Thank you so much for contributing to WinUtil.

View File

5
.github/SECURITY.md vendored Normal file
View File

@ -0,0 +1,5 @@
# Security Policy
If you find a security issue please make post it in the issues tab. If you think it should be private you can email me at contact@christitus.com.
For immediate response check out our discord server @ [![](https://dcbadge.limes.pink/api/server/https://discord.gg/RUbZUZyByQ?theme=default-inverted&style=for-the-badge)](https://discord.gg/RUbZUZyByQ)

View File

@ -7,5 +7,3 @@ updates:
ignore:
- dependency-name: "actions/stale"
versions: '>= 9'
- dependency-name: "actions/setup-python"
versions: '> 4'

View File

@ -1,17 +1,19 @@
site_name: Chris Titus WinUtil Official Documentation
site_name: WinUtil Documentation
docs_dir: '../docs'
repo_url: https://github.com/ChrisTitusTech/winutil
nav:
- Introduction: 'index.md'
- User Guide: 'userguide.md'
- Contribute: 'contribute.md'
- Changelog: 'changelog.md'
- Known Issues: 'KnownIssues.md'
- Contributing Guide: 'contribute.md'
- Documentation:
- Dev Docs: 'devdocs.md'
- Known Issues: 'KnownIssues.md'
- FAQ: 'faq.md'
theme:
name: material
custom_dir: 'overrides'
custom_dir: '../overrides'
features:
- navigation.tabs
- navigation.sections
@ -34,9 +36,8 @@ theme:
# Palette toggle for light mode
- media: "(prefers-color-scheme: light)"
scheme: default
scheme: default
accent: blue
toggle:
icon: material/brightness-7
name: Switch to dark mode
@ -44,11 +45,11 @@ theme:
# Palette toggle for dark mode
- media: "(prefers-color-scheme: dark)"
scheme: slate
primary: black
accent: blue
toggle:
icon: material/toggle-switch
icon: material/weather-night
name: Switch to light mode
primary: teal
accent: lime
markdown_extensions:
- admonition
- pymdownx.details
@ -73,3 +74,15 @@ markdown_extensions:
- def_list
- pymdownx.tasklist:
custom_checkbox: true
- toc:
permalink: true
plugins:
- search
- awesome-pages
- git-revision-date-localized
- minify:
minify_html: true
htmlmin_opts:
remove_comments: true
cache_safe: true

51
.github/requirements.txt vendored Normal file
View File

@ -0,0 +1,51 @@
Babel==2.15.0
bracex==2.5
cairocffi==1.7.1
CairoSVG==2.7.1
certifi==2024.7.4
cffi==1.17.0
charset-normalizer==3.3.2
click==8.1.7
colorama==0.4.6
csscompressor==0.9.5
cssselect2==0.7.0
defusedxml==0.7.1
ghp-import==2.1.0
gitdb==4.0.11
GitPython==3.1.43
htmlmin2==0.1.13
idna==3.7
Jinja2==3.1.4
jsmin==3.0.1
Markdown==3.6
MarkupSafe==2.1.5
mergedeep==1.3.4
mkdocs==1.6.0
mkdocs-awesome-pages-plugin==2.9.3
mkdocs-get-deps==0.2.0
mkdocs-git-revision-date-localized-plugin==1.2.6
mkdocs-material==9.5.31
mkdocs-material-extensions==1.3.1
mkdocs-minify-plugin==0.8.0
natsort==8.4.0
packaging==24.1
paginate==0.5.6
pathspec==0.12.1
pillow==10.4.0
platformdirs==4.2.2
pycparser==2.22
Pygments==2.18.0
pymdown-extensions==10.9
python-dateutil==2.9.0.post0
pytz==2024.1
PyYAML==6.0.2
pyyaml_env_tag==0.1
regex==2024.7.24
requests==2.32.3
six==1.16.0
smmap==5.0.1
tinycss2==1.3.0
urllib3==2.2.2
watchdog==4.0.1
wcmatch==9.0
webencodings==0.5.1

View File

@ -9,12 +9,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v4
- name: Check if PR was merged
if: github.event.pull_request.merged == true
run: echo "PR was merged"
- name: Extract Discussion Number & Close If any Were Found
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@ -23,21 +23,26 @@ jobs:
run: |
pr_body="${{ github.event.pull_request.body }}"
discussion_ids=$(echo "$pr_body" | grep -oP '(?i)(resolve|fix|close)[s|d]? #\K[0-9]+')
if [ -z "$discussion_ids" ]; then
echo "No discussion IDs found."
exit 0
fi
for discussion_id in $discussion_ids; do
echo "Closing discussion #$discussion_id"
response=$(curl -s -o /dev/null -w "%{http_code}" -X PATCH -H "Authorization: token $GITHUB_TOKEN" \
echo "Attempting to close discussion #$discussion_id"
response=$(curl -s -X PATCH -H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
-d '{"state": "closed"}' \
"https://api.github.com/repos/${{ github.repository }}/discussions/$discussion_id")
if [ "$response" -ne 200 ]; then
echo "Failed to close discussion #$discussion_id. HTTP status code: $response"
exit 1
if echo "$response" | jq -e '.id' > /dev/null; then
echo "Successfully closed discussion #$discussion_id"
else
error_message=$(echo "$response" | jq -r '.message // "Unknown error"')
echo "Warning: Failed to close discussion #$discussion_id. Error: $error_message"
echo "Full response: $response"
fi
done
shell: bash
shell: bash
continue-on-error: true

View File

@ -42,4 +42,4 @@ jobs:
ISSUE_NUMBER: ${{ github.event.issue.number }}
run: |
echo Closing the issue...
gh issue close $ISSUE_NUMBER --repo ${{ github.repository }}
gh issue close $ISSUE_NUMBER --repo ${{ github.repository }}

View File

@ -1,25 +1,22 @@
name: Compile
name: Compile & Check
on:
push:
branches:
- main
- test*
branches: ["main"]
pull_request:
branches: ["main"]
workflow_dispatch: # Manual trigger added
workflow_call: # Allow other Actions to call this workflow
jobs:
build-runspace:
Compile-and-Check:
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}
- name: Compile project
- name: Checkout Sources
uses: actions/checkout@v4
- name: Compile and Syntaxcheck winutil.ps1
shell: pwsh
run: |
Set-ExecutionPolicy Bypass -Scope Process -Force; ./Compile.ps1
continue-on-error: false # Directly fail the job on error, removing the need for a separate check
- uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: Compile Winutil
if: success()

View File

@ -1,117 +0,0 @@
name: Update changelog.md on Release
on:
release:
types: [published, created, edited, deleted]
workflow_dispatch:
inputs:
reason:
description: 'Reason for manual trigger'
required: false
default: 'Manual update'
jobs:
update-file:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Get all releases and update changelog.md file
run: |
# Initialize some values
changelog_path="docs/changelog.md"
gh release list --exclude-drafts --json tagName,name,isLatest,isPrerelease --limit 1000000 > releases.txt
declare -r number_of_releases=$(cat releases.txt | grep -Po '"tagName"' | wc --lines)
# Clear the contents of changelog file
echo "" > $changelog_path
# Write some Initial Content to changelog file
echo "# Changelog" >> $changelog_path
echo "" >> $changelog_path
echo "WinUtil change log received from GitHub Releases, it's autogenerated using GitHub Actions." >> $changelog_path
echo "" >> $changelog_path
echo "> [!WARNING]" >> $changelog_path
echo "> This file **SHOULD NOT** be edited directly, any PRs that tries changing it directly will either be requested on not changing it, or it'll get rejected." >> $changelog_path
echo "" >> $changelog_path
# Make array for git tag names
tag_arr=()
cat releases.txt | grep -Po '"tagName":\s*.*?[^\\]"' | awk -F ':' '{print $2}' | sed s/\"//g > tags_list.txt
while read -r line; do
tag_arr+=("$line")
done < tags_list.txt
# Make array for releases names
name_arr=()
cat releases.txt | grep -Po '"name":\s*.*?[^\\]"' | awk -F ':' '{print $2}' | sed s/\"//g > releases_names_list.txt
while read -r line; do
name_arr+=("$line")
done < releases_names_list.txt
# Make array for isPrerelease
isprerelease_arr=()
cat releases.txt | grep -Po '"isPrerelease":\s*(false|true)' | awk -F ':' '{print $2}' | sed s/\"//g > isprerelease_list.txt
while read -r line; do
isprerelease_arr+=("$line")
done < isprerelease_list.txt
# Make array for isLatest
islatest_arr=()
cat releases.txt | grep -Po '"isLatest":\s*(false|true)' | awk -F ':' '{print $2}' | sed s/\"//g > islatest_list.txt
while read -r line; do
islatest_arr+=("$line")
done < islatest_list.txt
# Debug Output
echo "Tag Array: " ${tag_arr[@]}
echo "Array Length: " ${#tag_arr[@]}
echo ""
echo "Release Name Array: " ${name_arr[@]}
echo "Array Length: " ${#name_arr[@]}
echo ""
echo "IsPrerelease Array: " ${isprerelease_arr[@]}
echo "Array Length: " ${#isprerelease_arr[@]}
echo ""
echo "IsLatest Array: " ${islatest_arr[@]}
echo "Array Length: " ${#islatest_arr[@]}
echo ""
# Exit when this impossible condition is met (just to be safe)
if [[ ! (${#tag_arr[@]}==${#name_arr[@]} && ${#tag_arr[@]}==${#isprerelease_arr[@]} && ${#tag_arr[@]}==${#islatest_arr[@]} ) ]] ; then
echo "Impossible Condition has been met, the Name Array Length Does Not match Tag Array Length, exiting..."
exit 1
fi
# Main loop that does the heavy lifting (Content Generation)
for (( i=0; i<${number_of_releases}; i++ ));
do
# The Variables to use on each iteration
tag=${tag_arr[$i]}
name=${name_arr[$i]}
isprerelease=${isprerelease_arr[$i]}
islatest=${islatest_arr[$i]}
body=$(gh release view "$tag" --json body --jq .body) || { echo "Failed to fetch release body for $tag"; exit 1; }
# The generation of changelog file contents
echo "# $name" >> $changelog_path
echo "" >> $changelog_path
echo "$body" >> $changelog_path
echo "" >> $changelog_path
done
env:
GH_TOKEN: ${{ github.token }}
- name: Commit and Push Changes
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
git config --global user.name 'github-actions[bot]'
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
git add docs/changelog.md
git diff --quiet && git diff --staged --quiet || (git commit -m "Update changelog.md with all releases" && git push)

31
.github/workflows/github-pages.yaml vendored Normal file
View File

@ -0,0 +1,31 @@
name: GitHub Pages Deploy
on:
release:
types: [published, prereleased]
workflow_dispatch:
permissions:
contents: write
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
fetch-depth: '0' # Fetch all commit history for all branches as well as tags.
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: 3.x # Install latest Stable release of Python 3
cache: 'pip' # caching pip dependencies
- name: Install Necessary Dependencies using 'pip install -r .github/requirements.txt'
run: pip install -r .github/requirements.txt
- name: Build & Deploy using 'mkdocs'
run: mkdocs gh-deploy --force -f .github/mkdocs.yml

View File

@ -1,22 +0,0 @@
name: GitHub Pages Deploy
on:
release:
types: [published, prereleased]
workflow_dispatch:
permissions:
contents: write
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: 3.x
- uses: actions/cache@v4
with:
key: ${{ github.ref }}
path: .cache
- run: pip install mkdocs-material
- run: pip install pillow cairosvg
- run: mkdocs gh-deploy --force

View File

@ -10,10 +10,18 @@ on:
jobs:
build-runspace:
runs-on: windows-latest
env:
CERTIFICATE_BASE64: ${{ secrets.CERTIFICATE_BASE64 }}
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Compile project
shell: pwsh
run: |
Set-ExecutionPolicy Bypass -Scope Process -Force; ./Compile.ps1
continue-on-error: false # Directly fail the job on error, removing the need for a separate check
- name: Set Version to Todays Date
id: extract_version
run: |
@ -41,6 +49,31 @@ jobs:
}
shell: pwsh
- name: Create and import code signing certificate
shell: pwsh
run: |
[System.IO.File]::WriteAllBytes("$env:USERPROFILE\code-signing-cert.pfx", [System.Convert]::FromBase64String("$env:CERTIFICATE_BASE64"))
Import-PfxCertificate -FilePath "$env:USERPROFILE\code-signing-cert.pfx" -CertStoreLocation Cert:\CurrentUser\My
- name: Code sign winutil.ps1
shell: pwsh
run: |
$cert = Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert | Select-Object -First 1
if ($null -eq $cert) { throw "Code signing certificate not found" }
Set-AuthenticodeSignature -FilePath ./winutil.ps1 -Certificate $cert
- name: Verify code signature
shell: pwsh
run: |
$signature = Get-AuthenticodeSignature -FilePath ./winutil.ps1
if ($signature.Status -ne 'Valid') { throw "Code signing failed" }
- name: Upload winutil.ps1 as artifact
uses: actions/upload-artifact@v4
with:
name: winutil
path: ./winutil.ps1
- name: Create and Upload Release
id: create_release
uses: softprops/action-gh-release@v2
@ -53,4 +86,4 @@ jobs:
prerelease: true
generate_release_notes: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@ -1,44 +0,0 @@
name: Release WinUtil
on:
workflow_dispatch: # Manual trigger added
jobs:
build-runspace:
runs-on: windows-latest
outputs:
version: ${{ steps.extract_version.outputs.version }}
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Extract Version from winutil.ps1
id: extract_version
run: |
$version = ''
Get-Content ./winutil.ps1 -TotalCount 30 | ForEach-Object {
if ($_ -match 'Version\s*:\s*(\d{2}\.\d{2}\.\d{2})') {
$version = $matches[1]
echo "version=$version" >> $GITHUB_OUTPUT
break
}
}
if (-not $version) {
Write-Error "Version not found in winutil.ps1"
exit 1
}
shell: pwsh
- name: Create and Upload Release
id: create_release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.extract_version.outputs.version }}
name: Release ${{ steps.extract_version.outputs.version }}
body: "![GitHub Downloads (specific asset, specific tag)](https://img.shields.io/github/downloads/ChrisTitusTech/winutil/${{ steps.extract_version.outputs.version }}/winutil.ps1)"
append_body: true
files: ./winutil.ps1
prerelease: false
make_latest: "true"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

34
.github/workflows/remove-winutil.yaml vendored Normal file
View File

@ -0,0 +1,34 @@
name: Remove winutil.ps1 if included in a Push
on:
push:
branches:
- '**'
jobs:
check-and-delete-file:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Check if winutil.ps1 exists
id: check_existence
run: |
if [ -f "winutil.ps1" ]; then
echo "winutil_exists=true" >> $GITHUB_OUTPUT
else
echo "winutil_exists=false" >> $GITHUB_OUTPUT
fi
- name: Delete winutil.ps1 if it exists
if: steps.check_existence.outputs.winutil_exists == 'true'
run: |
git config --global user.email "winutil-action@noreply.github.com"
git config --global user.name "winutil-action"
git rm winutil.ps1
git commit -m "Delete winutil.ps1 as it is not allowed"
git push origin HEAD:${{ github.ref }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@ -23,4 +23,4 @@ jobs:
uses: JamesIves/github-pages-deploy-action@v4
with:
branch: main
folder: '.'
folder: '.'

View File

@ -37,4 +37,4 @@ jobs:
shell: pwsh
env:
TEMP: ${{ runner.temp }}
TEMP: ${{ runner.temp }}

2
.gitignore vendored
View File

@ -45,3 +45,5 @@ microwin.log
True
test.ps1
winutil.ps1
binary/

View File

@ -1,13 +1,15 @@
param (
[switch]$Debug,
[switch]$Run
[switch]$Run,
[switch]$SkipPreprocessing
)
$OFS = "`r`n"
$scriptname = "winutil.ps1"
$workingdir = $PSScriptRoot
# Variable to sync between runspaces
$sync = [Hashtable]::Synchronized(@{})
$sync.PSScriptRoot = $PSScriptRoot
$sync.PSScriptRoot = $workingdir
$sync.configs = @{}
function Update-Progress {
@ -15,12 +17,12 @@ function Update-Progress {
[Parameter(Mandatory, position=0)]
[string]$StatusMessage,
[Parameter(Mandatory, position=1)]
[ValidateRange(0,100)]
[Parameter(Mandatory, position=1)]
[ValidateRange(0,100)]
[int]$Percent,
[Parameter(position=2)]
[string]$Activity = "Compiling"
[Parameter(position=2)]
[string]$Activity = "Compiling"
)
Write-Progress -Activity $Activity -Status $StatusMessage -PercentComplete $Percent
@ -34,6 +36,17 @@ $header = @"
################################################################################################################
"@
if (-NOT $SkipPreprocessing) {
Update-Progress "Pre-req: Running Preprocessor..." 0
# Dot source the 'Invoke-Preprocessing' Function from 'tools/Invoke-Preprocessing.ps1' Script
$preprocessingFilePath = ".\tools\Invoke-Preprocessing.ps1"
. "$(($workingdir -replace ('\\$', '')) + '\' + ($preprocessingFilePath -replace ('\.\\', '')))"
$excludedFiles = @('.\.git\', '.\.gitignore', '.\.gitattributes', '.\.github\CODEOWNERS', '.\LICENSE', "$preprocessingFilePath", '*.png', '*.exe')
$msg = "Pre-req: Code Formatting"
Invoke-Preprocessing -WorkingDir "$workingdir" -ExcludedFiles $excludedFiles -ProgressStatusMessage $msg
}
# Create the script in memory.
Update-Progress "Pre-req: Allocating Memory" 0
@ -43,14 +56,14 @@ Update-Progress "Adding: Header" 5
$script_content.Add($header)
Update-Progress "Adding: Version" 10
$script_content.Add($(Get-Content .\scripts\start.ps1).replace('#{replaceme}',"$(Get-Date -Format yy.MM.dd)"))
$script_content.Add($(Get-Content "$workingdir\scripts\start.ps1").replace('#{replaceme}',"$(Get-Date -Format yy.MM.dd)"))
Update-Progress "Adding: Functions" 20
Get-ChildItem .\functions -Recurse -File | ForEach-Object {
Get-ChildItem "$workingdir\functions" -Recurse -File | ForEach-Object {
$script_content.Add($(Get-Content $psitem.FullName))
}
Update-Progress "Adding: Config *.json" 40
Get-ChildItem .\config | Where-Object {$psitem.extension -eq ".json"} | ForEach-Object {
Get-ChildItem "$workingdir\config" | Where-Object {$psitem.extension -eq ".json"} | ForEach-Object {
$json = (Get-Content $psitem.FullName).replace("'","''")
@ -65,15 +78,15 @@ Get-ChildItem .\config | Where-Object {$psitem.extension -eq ".json"} | ForEach-
# Use **HTML decimal/hex codes instead**, as using HTML Entity Codes will result in XML parse Error when running the compiled script.
for ($i = 0; $i -lt $firstLevelJsonList.Count; $i += 1) {
$firstLevelName = $firstLevelJsonList[$i]
if ($jsonAsObject.$firstLevelName.content -ne $null) {
if ($jsonAsObject.$firstLevelName.content -ne $null) {
$jsonAsObject.$firstLevelName.content = $jsonAsObject.$firstLevelName.content.replace('&','&#38;').replace('“','&#8220;').replace('”','&#8221;').replace("'",'&#39;').replace('<','&#60;').replace('>','&#62;').replace('—','&#8212;')
$jsonAsObject.$firstLevelName.content = $jsonAsObject.$firstLevelName.content.replace('&#39;&#39;',"&#39;") # resolves the Double Apostrophe caused by the first replace function in the main loop
}
if ($jsonAsObject.$firstLevelName.description -ne $null) {
$jsonAsObject.$firstLevelName.description = $jsonAsObject.$firstLevelName.description.replace('&','&#38;').replace('“','&#8220;').replace('”','&#8221;').replace("'",'&#39;').replace('<','&#60;').replace('>','&#62;').replace('—','&#8212;')
$jsonAsObject.$firstLevelName.description = $jsonAsObject.$firstLevelName.description.replace('&#39;&#39;',"&#39;") # resolves the Double Apostrophe caused by the first replace function in the main loop
}
}
}
}
# Add 'WPFInstall' as a prefix to every entry-name in 'applications.json' file
if ($psitem.Name -eq "applications.json") {
@ -95,36 +108,44 @@ Get-ChildItem .\config | Where-Object {$psitem.extension -eq ".json"} | ForEach-
$script_content.Add($(Write-output "`$sync.configs.$($psitem.BaseName) = '$json' `| convertfrom-json" ))
}
$xaml = (Get-Content .\xaml\inputXML.xaml).replace("'","''")
$xaml = (Get-Content "$workingdir\xaml\inputXML.xaml").replace("'","''")
Update-Progress "Adding: Xaml " 90
$script_content.Add($(Write-output "`$inputXML = '$xaml'"))
$script_content.Add($(Get-Content .\scripts\main.ps1))
$script_content.Add($(Get-Content "$workingdir\scripts\main.ps1"))
if ($Debug){
if ($Debug) {
Update-Progress "Writing debug files" 95
$appXamlContent | Out-File -FilePath ".\xaml\inputApp.xaml" -Encoding ascii
$tweaksXamlContent | Out-File -FilePath ".\xaml\inputTweaks.xaml" -Encoding ascii
$featuresXamlContent | Out-File -FilePath ".\xaml\inputFeatures.xaml" -Encoding ascii
}
else {
$appXamlContent | Out-File -FilePath "$workingdir\xaml\inputApp.xaml" -Encoding ascii
$tweaksXamlContent | Out-File -FilePath "$workingdir\xaml\inputTweaks.xaml" -Encoding ascii
$featuresXamlContent | Out-File -FilePath "$workingdir\xaml\inputFeatures.xaml" -Encoding ascii
} else {
Update-Progress "Removing temporary files" 99
Remove-Item ".\xaml\inputApp.xaml" -ErrorAction SilentlyContinue
Remove-Item ".\xaml\inputTweaks.xaml" -ErrorAction SilentlyContinue
Remove-Item ".\xaml\inputFeatures.xaml" -ErrorAction SilentlyContinue
Remove-Item "$workingdir\xaml\inputApp.xaml" -ErrorAction SilentlyContinue
Remove-Item "$workingdir\xaml\inputTweaks.xaml" -ErrorAction SilentlyContinue
Remove-Item "$workingdir\xaml\inputFeatures.xaml" -ErrorAction SilentlyContinue
}
Set-Content -Path $scriptname -Value ($script_content -join "`r`n") -Encoding ascii
Set-Content -Path "$workingdir\$scriptname" -Value ($script_content -join "`r`n") -Encoding ascii
Write-Progress -Activity "Compiling" -Completed
if ($run){
Update-Progress -Activity "Validating" -StatusMessage "Checking winutil.ps1 Syntax" -Percent 0
try {
$null = Get-Command -Syntax .\winutil.ps1
}
catch {
Write-Warning "Syntax Validation for 'winutil.ps1' has failed"
Write-Host "$($Error[0])" -ForegroundColor Red
}
Write-Progress -Activity "Validating" -Completed
if ($run) {
try {
Start-Process -FilePath "pwsh" -ArgumentList ".\$scriptname"
}
catch {
Start-Process -FilePath "powershell" -ArgumentList ".\$scriptname"
Start-Process -FilePath "pwsh" -ArgumentList "$workingdir\$scriptname"
} catch {
Start-Process -FilePath "powershell" -ArgumentList "$workingdir\$scriptname"
}
}

View File

@ -52,7 +52,7 @@ If you have Issues, refer to [Known Issues](https://christitustech.github.io/win
These are the sponsors that help keep this project alive with monthly contributions.
<!-- sponsors --><a href="https://github.com/GregoryNavasarkian"><img src="https://github.com/GregoryNavasarkian.png" width="60px" alt="Gregory Navasarkian" /></a><a href="https://github.com/ysaito8015"><img src="https://github.com/ysaito8015.png" width="60px" alt="Yusuke Saito" /></a><a href="https://github.com/TriHydera"><img src="https://github.com/TriHydera.png" width="60px" alt="TriHydera" /></a><a href="https://github.com/jozozovko"><img src="https://github.com/jozozovko.png" width="60px" alt="" /></a><a href="https://github.com/DelDongo"><img src="https://github.com/DelDongo.png" width="60px" alt="" /></a><a href="https://github.com/markamos"><img src="https://github.com/markamos.png" width="60px" alt="Mark Amos" /></a><a href="https://github.com/dwelfusius"><img src="https://github.com/dwelfusius.png" width="60px" alt="" /></a><a href="https://github.com/mews-se"><img src="https://github.com/mews-se.png" width="60px" alt="" /></a><a href="https://github.com/jdiegmueller"><img src="https://github.com/jdiegmueller.png" width="60px" alt="Jason A. Diegmueller" /></a><a href="https://github.com/AlanTristar"><img src="https://github.com/AlanTristar.png" width="60px" alt="" /></a><a href="https://github.com/JennJones89"><img src="https://github.com/JennJones89.png" width="60px" alt="" /></a><a href="https://github.com/zepled112"><img src="https://github.com/zepled112.png" width="60px" alt="wyatt" /></a><a href="https://github.com/Cube707"><img src="https://github.com/Cube707.png" width="60px" alt="Jan Wille" /></a><a href="https://github.com/Owen-3456"><img src="https://github.com/Owen-3456.png" width="60px" alt="Owen" /></a><a href="https://github.com/altugtekiner"><img src="https://github.com/altugtekiner.png" width="60px" alt="" /></a><a href="https://github.com/getsmor"><img src="https://github.com/getsmor.png" width="60px" alt="" /></a><a href="https://github.com/robertsandrock"><img src="https://github.com/robertsandrock.png" width="60px" alt="" /></a><a href="https://github.com/jeffnesbit"><img src="https://github.com/jeffnesbit.png" width="60px" alt="" /></a><a href="https://github.com/mmomega"><img src="https://github.com/mmomega.png" width="60px" alt="" /></a><a href="https://github.com/KenichiQaz"><img src="https://github.com/KenichiQaz.png" width="60px" alt="Stefan" /></a><a href="https://github.com/thaddl"><img src="https://github.com/thaddl.png" width="60px" alt="thaddl" /></a><a href="https://github.com/paulsheets"><img src="https://github.com/paulsheets.png" width="60px" alt="Paul" /></a><a href="https://github.com/djones369"><img src="https://github.com/djones369.png" width="60px" alt="Dave Jones" /></a><!-- sponsors -->
<!-- sponsors --><a href="https://github.com/ysaito8015"><img src="https://github.com/ysaito8015.png" width="60px" alt="Yusuke Saito" /></a><a href="https://github.com/TriHydera"><img src="https://github.com/TriHydera.png" width="60px" alt="TriHydera" /></a><a href="https://github.com/jozozovko"><img src="https://github.com/jozozovko.png" width="60px" alt="" /></a><a href="https://github.com/DelDongo"><img src="https://github.com/DelDongo.png" width="60px" alt="" /></a><a href="https://github.com/markamos"><img src="https://github.com/markamos.png" width="60px" alt="Mark Amos" /></a><a href="https://github.com/dwelfusius"><img src="https://github.com/dwelfusius.png" width="60px" alt="" /></a><a href="https://github.com/mews-se"><img src="https://github.com/mews-se.png" width="60px" alt="" /></a><a href="https://github.com/jdiegmueller"><img src="https://github.com/jdiegmueller.png" width="60px" alt="Jason A. Diegmueller" /></a><a href="https://github.com/AlanTristar"><img src="https://github.com/AlanTristar.png" width="60px" alt="" /></a><a href="https://github.com/JennJones89"><img src="https://github.com/JennJones89.png" width="60px" alt="" /></a><a href="https://github.com/zepled112"><img src="https://github.com/zepled112.png" width="60px" alt="wyatt" /></a><a href="https://github.com/altugtekiner"><img src="https://github.com/altugtekiner.png" width="60px" alt="" /></a><a href="https://github.com/robertsandrock"><img src="https://github.com/robertsandrock.png" width="60px" alt="" /></a><a href="https://github.com/mmomega"><img src="https://github.com/mmomega.png" width="60px" alt="" /></a><a href="https://github.com/KenichiQaz"><img src="https://github.com/KenichiQaz.png" width="60px" alt="Stefan" /></a><a href="https://github.com/thaddl"><img src="https://github.com/thaddl.png" width="60px" alt="thaddl" /></a><a href="https://github.com/paulsheets"><img src="https://github.com/paulsheets.png" width="60px" alt="Paul" /></a><a href="https://github.com/djones369"><img src="https://github.com/djones369.png" width="60px" alt="Dave Jones" /></a><a href="https://github.com/anthonymendez"><img src="https://github.com/anthonymendez.png" width="60px" alt="Anthony Mendez" /></a><a href="https://github.com/woobe-studio"><img src="https://github.com/woobe-studio.png" width="60px" alt="Michael Wozniak" /></a><a href="https://github.com/xBandaku"><img src="https://github.com/xBandaku.png" width="60px" alt="xPandaku" /></a><a href="https://github.com/claudemods"><img src="https://github.com/claudemods.png" width="60px" alt="Claudemods" /></a><a href="https://github.com/hkolatan"><img src="https://github.com/hkolatan.png" width="60px" alt="Halil Kolatan" /></a><!-- sponsors -->
## 🏅 Thanks to all Contributors
Thanks a lot for spending your time helping Winutil grow. Thanks a lot! Keep rocking 🍻.

File diff suppressed because it is too large Load Diff

442
config/autounattend.xml Normal file
View File

@ -0,0 +1,442 @@
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State">
<!--https://schneegans.de/windows/unattend-generator/?LanguageMode=Unattended&UILanguage=en-US&Locale=en-US&Keyboard=00000409&GeoLocation=244&ProcessorArchitecture=amd64&BypassRequirementsCheck=true&BypassNetworkCheck=true&ComputerNameMode=Random&TimeZoneMode=Implicit&PartitionMode=Interactive&WindowsEditionMode=Unattended&WindowsEdition=pro&UserAccountMode=Unattended&AccountName0=User&AccountPassword0=&AccountGroup0=Administrators&AccountName1=&AccountName2=&AccountName3=&AccountName4=&AutoLogonMode=Own&PasswordExpirationMode=Unlimited&LockoutMode=Default&HideFiles=Hidden&DisableWidgets=true&ClassicContextMenu=true&DisableFastStartup=true&EnableLongPaths=true&DisableAppSuggestions=true&PreventDeviceEncryption=true&WifiMode=Skip&ExpressSettings=DisableAll&Remove3DViewer=true&RemoveBingSearch=true&RemoveCamera=true&RemoveClipchamp=true&RemoveClock=true&RemoveCopilot=true&RemoveCortana=true&RemoveDevHome=true&RemoveFamily=true&RemoveFeedbackHub=true&RemoveGetHelp=true&RemoveInternetExplorer=true&RemoveMailCalendar=true&RemoveMaps=true&RemoveMathInputPanel=true&RemoveZuneVideo=true&RemoveNews=true&RemoveNotepad=true&RemoveOffice365=true&RemoveOneDrive=true&RemoveOneNote=true&RemoveOpenSSHClient=true&RemoveOutlook=true&RemovePaint3D=true&RemovePeople=true&RemovePowerAutomate=true&RemoveQuickAssist=true&RemoveSkype=true&RemoveSolitaire=true&RemoveStepsRecorder=true&RemoveStickyNotes=true&RemoveTeams=true&RemoveGetStarted=true&RemoveToDo=true&RemoveVoiceRecorder=true&RemoveWeather=true&RemoveWindowsMediaPlayer=true&RemoveZuneMusic=true&RemoveWordPad=true&WdacMode=Skip-->
<settings pass="offlineServicing"></settings>
<settings pass="windowsPE">
<component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
<SetupUILanguage>
<UILanguage>en-US</UILanguage>
</SetupUILanguage>
<InputLocale>0409:00000409</InputLocale>
<SystemLocale>en-US</SystemLocale>
<UILanguage>en-US</UILanguage>
<UserLocale>en-US</UserLocale>
</component>
<component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
<UserData>
<ProductKey>
<Key>VK7JG-NPHTM-C97JM-9MPGT-3V66T</Key>
</ProductKey>
<AcceptEula>true</AcceptEula>
</UserData>
<RunSynchronous>
<RunSynchronousCommand wcm:action="add">
<Order>1</Order>
<Path>reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassTPMCheck /t REG_DWORD /d 1 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>2</Order>
<Path>reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassSecureBootCheck /t REG_DWORD /d 1 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>3</Order>
<Path>reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassRAMCheck /t REG_DWORD /d 1 /f</Path>
</RunSynchronousCommand>
</RunSynchronous>
</component>
</settings>
<settings pass="generalize"></settings>
<settings pass="specialize">
<component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
<RunSynchronous>
<RunSynchronousCommand wcm:action="add">
<Order>1</Order>
<Path>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE" /v BypassNRO /t REG_DWORD /d 1 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>2</Order>
<Path>reg.exe load "HKU\DefaultUser" "C:\Users\Default\NTUSER.DAT"</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>3</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\Runonce" /v "UninstallCopilot" /t REG_SZ /d "powershell.exe -NoProfile -Command \"Get-AppxPackage -Name 'Microsoft.Windows.Ai.Copilot.Provider' | Remove-AppxPackage;\"" /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>4</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Policies\Microsoft\Windows\WindowsCopilot" /v TurnOffWindowsCopilot /t REG_DWORD /d 1 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>5</Order>
<Path>reg.exe unload "HKU\DefaultUser"</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>6</Order>
<Path>reg.exe delete "HKLM\SOFTWARE\Microsoft\WindowsUpdate\Orchestrator\UScheduler_Oobe\DevHomeUpdate" /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>7</Order>
<Path>reg.exe load "HKU\DefaultUser" "C:\Users\Default\NTUSER.DAT"</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>8</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Notepad" /v ShowStoreBanner /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>9</Order>
<Path>reg.exe unload "HKU\DefaultUser"</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>10</Order>
<Path>cmd.exe /c "del "C:\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\OneDrive.lnk""</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>11</Order>
<Path>cmd.exe /c "del "C:\Windows\System32\OneDriveSetup.exe""</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>12</Order>
<Path>cmd.exe /c "del "C:\Windows\SysWOW64\OneDriveSetup.exe""</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>13</Order>
<Path>reg.exe load "HKU\DefaultUser" "C:\Users\Default\NTUSER.DAT"</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>14</Order>
<Path>reg.exe delete "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\Run" /v OneDriveSetup /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>15</Order>
<Path>reg.exe unload "HKU\DefaultUser"</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>16</Order>
<Path>reg.exe delete "HKLM\SOFTWARE\Microsoft\WindowsUpdate\Orchestrator\UScheduler_Oobe\OutlookUpdate" /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>17</Order>
<Path>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Communications" /v ConfigureChatAutoInstall /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>18</Order>
<Path>powershell.exe -NoProfile -Command "$xml = [xml]::new(); $xml.Load('C:\Windows\Panther\unattend.xml'); $sb = [scriptblock]::Create( $xml.unattend.Extensions.ExtractScript ); Invoke-Command -ScriptBlock $sb -ArgumentList $xml;"</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>19</Order>
<Path>powershell.exe -NoProfile -Command "Get-Content -LiteralPath 'C:\Windows\Temp\remove-packages.ps1' -Raw | Invoke-Expression;"</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>20</Order>
<Path>powershell.exe -NoProfile -Command "Get-Content -LiteralPath 'C:\Windows\Temp\remove-caps.ps1' -Raw | Invoke-Expression;"</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>21</Order>
<Path>reg.exe add "HKLM\SOFTWARE\Microsoft\PolicyManager\current\device\Start" /v ConfigureStartPins /t REG_SZ /d "{ \"pinnedList\": [] }" /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>22</Order>
<Path>reg.exe add "HKLM\SOFTWARE\Microsoft\PolicyManager\current\device\Start" /v ConfigureStartPins_ProviderSet /t REG_DWORD /d 1 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>23</Order>
<Path>reg.exe add "HKLM\SOFTWARE\Microsoft\PolicyManager\current\device\Start" /v ConfigureStartPins_WinningProvider /t REG_SZ /d B5292708-1619-419B-9923-E5D9F3925E71 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>24</Order>
<Path>reg.exe add "HKLM\SOFTWARE\Microsoft\PolicyManager\providers\B5292708-1619-419B-9923-E5D9F3925E71\default\Device\Start" /v ConfigureStartPins /t REG_SZ /d "{ \"pinnedList\": [] }" /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>25</Order>
<Path>reg.exe add "HKLM\SOFTWARE\Microsoft\PolicyManager\providers\B5292708-1619-419B-9923-E5D9F3925E71\default\Device\Start" /v ConfigureStartPins_LastWrite /t REG_DWORD /d 1 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>26</Order>
<Path>net.exe accounts /maxpwage:UNLIMITED</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>27</Order>
<Path>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled /t REG_DWORD /d 1 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>28</Order>
<Path>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Power" /v HiberbootEnabled /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>29</Order>
<Path>reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Dsh" /v AllowNewsAndInterests /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>30</Order>
<Path>reg.exe load "HKU\DefaultUser" "C:\Users\Default\NTUSER.DAT"</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>31</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "ContentDeliveryAllowed" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>32</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "FeatureManagementEnabled" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>33</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "OEMPreInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>34</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>35</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEverEnabled" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>36</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SilentInstalledAppsEnabled" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>37</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SoftLandingEnabled" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>38</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContentEnabled" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>39</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-310093Enabled" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>40</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338387Enabled" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>41</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338388Enabled" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>42</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338389Enabled" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>43</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338393Enabled" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>44</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-353698Enabled" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>45</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SystemPaneSuggestionsEnabled" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>46</Order>
<Path>reg.exe unload "HKU\DefaultUser"</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>47</Order>
<Path>reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 0 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>48</Order>
<Path>reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\BitLocker" /v "PreventDeviceEncryption" /t REG_DWORD /d 1 /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>49</Order>
<Path>reg.exe load "HKU\DefaultUser" "C:\Users\Default\NTUSER.DAT"</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>50</Order>
<Path>reg.exe add "HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\Runonce" /v "ClassicContextMenu" /t REG_SZ /d "reg.exe add \"HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32\" /ve /f" /f</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>51</Order>
<Path>reg.exe unload "HKU\DefaultUser"</Path>
</RunSynchronousCommand>
</RunSynchronous>
</component>
</settings>
<settings pass="auditSystem"></settings>
<settings pass="auditUser"></settings>
<settings pass="oobeSystem">
<component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
<InputLocale>0409:00000409</InputLocale>
<SystemLocale>en-US</SystemLocale>
<UILanguage>en-US</UILanguage>
<UserLocale>en-US</UserLocale>
</component>
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
<UserAccounts>
<LocalAccounts>
<LocalAccount wcm:action="add">
<Name>User</Name>
<Group>Administrators</Group>
<Password>
<Value></Value>
<PlainText>true</PlainText>
</Password>
</LocalAccount>
</LocalAccounts>
</UserAccounts>
<AutoLogon>
<Username>User</Username>
<Enabled>true</Enabled>
<LogonCount>1</LogonCount>
<Password>
<Value></Value>
<PlainText>true</PlainText>
</Password>
</AutoLogon>
<OOBE>
<ProtectYourPC>3</ProtectYourPC>
<HideEULAPage>true</HideEULAPage>
<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
</OOBE>
<FirstLogonCommands>
<SynchronousCommand wcm:action="add">
<Order>1</Order>
<CommandLine>reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoLogonCount /t REG_DWORD /d 0 /f</CommandLine>
</SynchronousCommand>
</FirstLogonCommands>
</component>
</settings>
<Extensions xmlns="https://schneegans.de/windows/unattend-generator/">
<ExtractScript>
param(
[xml] $Document
);
$scriptsDir = 'C:\Windows\Setup\Scripts\';
foreach( $file in $Document.unattend.Extensions.File ) {
$path = [System.Environment]::ExpandEnvironmentVariables(
$file.GetAttribute( 'path' )
);
if( $path.StartsWith( $scriptsDir ) ) {
mkdir -Path $scriptsDir -ErrorAction 'SilentlyContinue';
}
$encoding = switch( [System.IO.Path]::GetExtension( $path ) ) {
{ $_ -in '.ps1', '.xml' } { [System.Text.Encoding]::UTF8; }
{ $_ -in '.reg', '.vbs', '.js' } { [System.Text.UnicodeEncoding]::new( $false, $true ); }
default { [System.Text.Encoding]::Default; }
};
[System.IO.File]::WriteAllBytes( $path, ( $encoding.GetPreamble() + $encoding.GetBytes( $file.InnerText.Trim() ) ) );
}
</ExtractScript>
<File path="C:\Windows\Temp\remove-packages.ps1">
$selectors = @(
'Microsoft.Microsoft3DViewer';
'Microsoft.BingSearch';
'Microsoft.WindowsCamera';
'Clipchamp.Clipchamp';
'Microsoft.WindowsAlarms';
'Microsoft.549981C3F5F10';
'Microsoft.Windows.DevHome';
'MicrosoftCorporationII.MicrosoftFamily';
'Microsoft.WindowsFeedbackHub';
'Microsoft.GetHelp';
'Microsoft.Getstarted';
'microsoft.windowscommunicationsapps';
'Microsoft.WindowsMaps';
'Microsoft.BingNews';
'Microsoft.WindowsNotepad';
'Microsoft.MicrosoftOfficeHub';
'Microsoft.Office.OneNote';
'Microsoft.OutlookForWindows';
'Microsoft.MSPaint';
'Microsoft.People';
'Microsoft.PowerAutomateDesktop';
'MicrosoftCorporationII.QuickAssist';
'Microsoft.SkypeApp';
'Microsoft.MicrosoftSolitaireCollection';
'Microsoft.MicrosoftStickyNotes';
'MSTeams';
'Microsoft.Todos';
'Microsoft.WindowsSoundRecorder';
'Microsoft.BingWeather';
'Microsoft.ZuneMusic';
'Microsoft.ZuneVideo';
);
$getCommand = { Get-AppxProvisionedPackage -Online; };
$filterCommand = { $_.DisplayName -eq $selector; };
$removeCommand = {
[CmdletBinding()]
param(
[Parameter( Mandatory, ValueFromPipeline )]
$InputObject
);
process {
$InputObject | Remove-AppxProvisionedPackage -AllUsers -Online -ErrorAction 'Continue';
}
};
$type = 'Package';
$logfile = 'C:\Windows\Temp\remove-packages.log';
&amp; {
$installed = &amp; $getCommand;
foreach( $selector in $selectors ) {
$result = [ordered] @{
Selector = $selector;
};
$found = $installed | Where-Object -FilterScript $filterCommand;
if( $found ) {
$result.Output = $found | &amp; $removeCommand;
if( $? ) {
$result.Message = "$type removed.";
} else {
$result.Message = "$type not removed.";
$result.Error = $Error[0];
}
} else {
$result.Message = "$type not installed.";
}
$result | ConvertTo-Json -Depth 3 -Compress;
}
} *&gt;&amp;1 &gt;&gt; $logfile;
</File>
<File path="C:\Windows\Temp\remove-caps.ps1">
$selectors = @(
'Browser.InternetExplorer';
'MathRecognizer';
'OpenSSH.Client';
'App.Support.QuickAssist';
'App.StepsRecorder';
'Media.WindowsMediaPlayer';
'Microsoft.Windows.WordPad';
);
$getCommand = { Get-WindowsCapability -Online; };
$filterCommand = { ($_.Name -split '~')[0] -eq $selector; };
$removeCommand = {
[CmdletBinding()]
param(
[Parameter( Mandatory, ValueFromPipeline )]
$InputObject
);
process {
$InputObject | Remove-WindowsCapability -Online -ErrorAction 'Continue';
}
};
$type = 'Capability';
$logfile = 'C:\Windows\Temp\remove-caps.log';
&amp; {
$installed = &amp; $getCommand;
foreach( $selector in $selectors ) {
$result = [ordered] @{
Selector = $selector;
};
$found = $installed | Where-Object -FilterScript $filterCommand;
if( $found ) {
$result.Output = $found | &amp; $removeCommand;
if( $? ) {
$result.Message = "$type removed.";
} else {
$result.Message = "$type not removed.";
$result.Error = $Error[0];
}
} else {
$result.Message = "$type not installed.";
}
$result | ConvertTo-Json -Depth 3 -Compress;
}
} *&gt;&amp;1 &gt;&gt; $logfile;
</File>
<File path="C:\Users\Default\AppData\Local\Microsoft\Windows\Shell\LayoutModification.xml"><![CDATA[
<LayoutModificationTemplate Version="1" xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification">
<LayoutOptions StartTileGroupCellWidth="6" />
<DefaultLayoutOverride>
<StartLayoutCollection>
<StartLayout GroupCellWidth="6" xmlns="http://schemas.microsoft.com/Start/2014/FullDefaultLayout" />
</StartLayoutCollection>
</DefaultLayoutOverride>
</LayoutModificationTemplate>
]]></File>
</Extensions>
</unattend>

View File

@ -47,4 +47,4 @@
"Primary6": "2a10:50c0::bad1:ff",
"Secondary6": "2a10:50c0::bad2:ff"
}
}
}

View File

@ -9,9 +9,8 @@
"NetFx4-AdvSrvs",
"NetFx3"
],
"InvokeScript": [
]
"InvokeScript": [],
"link": "https://christitustech.github.io/winutil/dev/features/Features/dotnet"
},
"WPFFeatureshyperv": {
"Content": "HyperV Virtualization",
@ -31,7 +30,8 @@
],
"InvokeScript": [
"Start-Process -FilePath cmd.exe -ArgumentList '/c bcdedit /set hypervisorschedulertype classic' -Wait"
]
],
"link": "https://christitustech.github.io/winutil/dev/features/Features/hyperv"
},
"WPFFeatureslegacymedia": {
"Content": "Legacy Media (WMP, DirectPlay)",
@ -45,9 +45,8 @@
"DirectPlay",
"LegacyComponents"
],
"InvokeScript": [
]
"InvokeScript": [],
"link": "https://christitustech.github.io/winutil/dev/features/Features/legacymedia"
},
"WPFFeaturewsl": {
"Content": "Windows Subsystem for Linux",
@ -59,9 +58,8 @@
"VirtualMachinePlatform",
"Microsoft-Windows-Subsystem-Linux"
],
"InvokeScript": [
]
"InvokeScript": [],
"link": "https://christitustech.github.io/winutil/dev/features/Features/wsl"
},
"WPFFeaturenfs": {
"Content": "NFS - Network File System",
@ -80,7 +78,8 @@
"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"
]
],
"link": "https://christitustech.github.io/winutil/dev/features/Features/nfs"
},
"WPFFeatureEnableSearchSuggestions": {
"Content": "Enable Search Box Web Suggestions in Registry(explorer restart)",
@ -88,8 +87,7 @@
"category": "Features",
"panel": "1",
"Order": "a015_",
"feature": [
],
"feature": [],
"InvokeScript": [
"
If (!(Test-Path 'HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer')) {
@ -98,7 +96,8 @@
New-ItemProperty -Path 'HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer' -Name 'DisableSearchBoxSuggestions' -Type DWord -Value 0 -Force
Stop-Process -name explorer -force
"
]
],
"link": "https://christitustech.github.io/winutil/dev/features/Features/EnableSearchSuggestions"
},
"WPFFeatureDisableSearchSuggestions": {
"Content": "Disable Search Box Web Suggestions in Registry(explorer restart)",
@ -106,8 +105,7 @@
"category": "Features",
"panel": "1",
"Order": "a016_",
"feature": [
],
"feature": [],
"InvokeScript": [
"
If (!(Test-Path 'HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer')) {
@ -116,7 +114,8 @@
New-ItemProperty -Path 'HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer' -Name 'DisableSearchBoxSuggestions' -Type DWord -Value 1 -Force
Stop-Process -name explorer -force
"
]
],
"link": "https://christitustech.github.io/winutil/dev/features/Features/DisableSearchSuggestions"
},
"WPFFeatureRegBackup": {
"Content": "Enable Daily Registry Backup Task 12.30am",
@ -124,8 +123,7 @@
"category": "Features",
"panel": "1",
"Order": "a017_",
"feature": [
],
"feature": [],
"InvokeScript": [
"
New-ItemProperty -Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager' -Name 'EnablePeriodicBackup' -Type DWord -Value 1 -Force
@ -134,7 +132,8 @@
$trigger = New-ScheduledTaskTrigger -Daily -At 00:30
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName 'AutoRegBackup' -Description 'Create System Registry Backups' -User 'System'
"
]
],
"link": "https://christitustech.github.io/winutil/dev/features/Features/RegBackup"
},
"WPFFeatureEnableLegacyRecovery": {
"Content": "Enable Legacy F8 Boot Recovery",
@ -142,8 +141,7 @@
"category": "Features",
"panel": "1",
"Order": "a018_",
"feature": [
],
"feature": [],
"InvokeScript": [
"
If (!(Test-Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood')) {
@ -152,7 +150,8 @@
New-ItemProperty -Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood' -Name 'Enabled' -Type DWord -Value 1 -Force
Start-Process -FilePath cmd.exe -ArgumentList '/c bcdedit /Set {Current} BootMenuPolicy Legacy' -Wait
"
]
],
"link": "https://christitustech.github.io/winutil/dev/features/Features/EnableLegacyRecovery"
},
"WPFFeatureDisableLegacyRecovery": {
"Content": "Disable Legacy F8 Boot Recovery",
@ -160,8 +159,7 @@
"category": "Features",
"panel": "1",
"Order": "a019_",
"feature": [
],
"feature": [],
"InvokeScript": [
"
If (!(Test-Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood')) {
@ -170,14 +168,16 @@
New-ItemProperty -Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood' -Name 'Enabled' -Type DWord -Value 0 -Force
Start-Process -FilePath cmd.exe -ArgumentList '/c bcdedit /Set {Current} BootMenuPolicy Standard' -Wait
"
]
],
"link": "https://christitustech.github.io/winutil/dev/features/Features/DisableLegacyRecovery"
},
"WPFFeaturesandbox": {
"WPFFeaturesSandbox": {
"Content": "Windows Sandbox",
"category": "Features",
"panel": "1",
"Order": "a021_",
"Description": "Windows Sandbox is a lightweight virtual machine that provides a temporary desktop environment to safely run applications and programs in isolation."
"Description": "Windows Sandbox is a lightweight virtual machine that provides a temporary desktop environment to safely run applications and programs in isolation.",
"link": "https://christitustech.github.io/winutil/dev/features/Features/Sandbox"
},
"WPFFeatureInstall": {
"Content": "Install Features",
@ -185,7 +185,8 @@
"panel": "1",
"Order": "a060_",
"Type": "Button",
"ButtonWidth": "300"
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/features/Features/Install"
},
"WPFPanelAutologin": {
"Content": "Set Up Autologin",
@ -193,7 +194,8 @@
"Order": "a040_",
"panel": "1",
"Type": "Button",
"ButtonWidth": "300"
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/features/Fixes/Autologin"
},
"WPFFixesUpdate": {
"Content": "Reset Windows Update",
@ -201,7 +203,8 @@
"panel": "1",
"Order": "a041_",
"Type": "Button",
"ButtonWidth": "300"
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/features/Fixes/Update"
},
"WPFFixesNetwork": {
"Content": "Reset Network",
@ -209,7 +212,8 @@
"Order": "a042_",
"panel": "1",
"Type": "Button",
"ButtonWidth": "300"
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/features/Fixes/Network"
},
"WPFPanelDISM": {
"Content": "System Corruption Scan",
@ -217,7 +221,8 @@
"panel": "1",
"Order": "a043_",
"Type": "Button",
"ButtonWidth": "300"
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/features/Fixes/DISM"
},
"WPFFixesWinget": {
"Content": "WinGet Reinstall",
@ -225,7 +230,8 @@
"panel": "1",
"Order": "a044_",
"Type": "Button",
"ButtonWidth": "300"
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/features/Fixes/Winget"
},
"WPFRunAdobeCCCleanerTool": {
"Content": "Remove Adobe Creative Cloud",
@ -233,55 +239,63 @@
"panel": "1",
"Order": "a045_",
"Type": "Button",
"ButtonWidth": "300"
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/features/Fixes/RunAdobeCCCleanerTool"
},
"WPFPanelnetwork": {
"Content": "Network Connections",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300"
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/features/Legacy-Windows-Panels/network"
},
"WPFPanelcontrol": {
"Content": "Control Panel",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300"
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/features/Legacy-Windows-Panels/control"
},
"WPFPanelpower": {
"Content": "Power Panel",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300"
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/features/Legacy-Windows-Panels/power"
},
"WPFPanelregion": {
"Content": "Region",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300"
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/features/Legacy-Windows-Panels/region"
},
"WPFPanelsound": {
"Content": "Sound Settings",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300"
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/features/Legacy-Windows-Panels/sound"
},
"WPFPanelsystem": {
"Content": "System Properties",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300"
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/features/Legacy-Windows-Panels/system"
},
"WPFPaneluser": {
"Content": "User Accounts",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300"
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/features/Legacy-Windows-Panels/user"
}
}

View File

@ -27,7 +27,8 @@
"Value": "0",
"OriginalValue": "1"
}
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/AH"
},
"WPFTweaksHiber": {
"Content": "Disable Hibernation",
@ -52,11 +53,12 @@
}
],
"InvokeScript": [
"powercfg.exe /hibernate off"
"powercfg.exe /hibernate off"
],
"UndoScript": [
"powercfg.exe /hibernate on"
]
"powercfg.exe /hibernate on"
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/Hiber"
},
"WPFTweaksLaptopHibernation": {
"Content": "Set Hibernation as default (good for laptops)",
@ -103,7 +105,8 @@
Start-Process -FilePath powercfg -ArgumentList \"/change monitor-timeout-ac 15\" -NoNewWindow -Wait
Start-Process -FilePath powercfg -ArgumentList \"/change monitor-timeout-dc 15\" -NoNewWindow -Wait
"
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/LaptopHibernation"
},
"WPFTweaksHome": {
"Content": "Disable Homegroup",
@ -122,7 +125,8 @@
"StartupType": "Manual",
"OriginalType": "Automatic"
}
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/Home"
},
"WPFTweaksLoc": {
"Content": "Disable Location Tracking",
@ -159,7 +163,8 @@
"Value": "0",
"OriginalValue": "1"
}
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/Loc"
},
"WPFTweaksServices": {
"Content": "Set Services to Manual",
@ -1578,9 +1583,167 @@
"StartupType": "Manual",
"OriginalType": "Manual"
}
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/Services"
},
"WPFTweaksConsumerFeatures":{
"WPFTweaksEdgeDebloat": {
"Content": "Debloat Edge",
"Description": "Disables various telemetry options, popups, and other annoyances in Edge.",
"category": "Essential Tweaks",
"panel": "1",
"Order": "a016_",
"registry": [
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\EdgeUpdate",
"Name": "CreateDesktopShortcutDefault",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "EdgeEnhanceImagesEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "PersonalizationReportingEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "ShowRecommendationsEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "HideFirstRunExperience",
"Type": "DWord",
"Value": "1",
"OriginalValue": "0"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "UserFeedbackAllowed",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "ConfigureDoNotTrack",
"Type": "DWord",
"Value": "1",
"OriginalValue": "0"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "AlternateErrorPagesEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "EdgeCollectionsEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "EdgeFollowEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "EdgeShoppingAssistantEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "MicrosoftEdgeInsiderPromotionEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "PersonalizationReportingEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "ShowMicrosoftRewards",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "WebWidgetAllowed",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "DiagnosticData",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "EdgeAssetDeliveryServiceEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "EdgeCollectionsEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "CryptoWalletEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "ConfigureDoNotTrack",
"Type": "DWord",
"Value": "1",
"OriginalValue": "0"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "WalletDonationEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
}
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/EdgeDebloat"
},
"WPFTweaksConsumerFeatures": {
"Content": "Disable ConsumerFeatures",
"Description": "Windows 10 will not automatically install any games, third-party apps, or application links from the Windows Store for the signed-in user. Some default Apps will be inaccessible (eg. Phone Link)",
"category": "Essential Tweaks",
@ -1588,13 +1751,14 @@
"Order": "a003_",
"registry": [
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\CloudContent",
"OriginalValue": "0",
"Name": "DisableWindowsConsumerFeatures",
"Value": "1",
"Type": "DWord"
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\CloudContent",
"OriginalValue": "0",
"Name": "DisableWindowsConsumerFeatures",
"Value": "1",
"Type": "DWord"
}
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/ConsumerFeatures"
},
"WPFTweaksTele": {
"Content": "Disable Telemetry",
@ -1839,7 +2003,7 @@
"Type": "DWord"
},
{
"_Comment" : "Driver searching is a function that should be left in",
"_Comment": "Driver searching is a function that should be left in",
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\DriverSearching",
"OriginalValue": "1",
"Name": "SearchOrderConfig",
@ -1965,7 +2129,8 @@
# Disable Defender Auto Sample Submission
Set-MpPreference -SubmitSamplesConsent 2 -ErrorAction SilentlyContinue | Out-Null
"
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/Tele"
},
"WPFTweaksWifi": {
"Content": "Disable Wifi-Sense",
@ -1988,7 +2153,8 @@
"Value": "0",
"OriginalValue": "1"
}
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/Wifi"
},
"WPFTweaksUTC": {
"Content": "Set Time to UTC (Dual Boot)",
@ -2004,7 +2170,8 @@
"Value": "1",
"OriginalValue": "0"
}
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/UTC"
},
"WPFTweaksRemoveHomeGallery": {
"Content": "Remove Home and Gallery from explorer",
@ -2018,14 +2185,15 @@
REG DELETE \"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Desktop\\NameSpace\\{f874310e-b6b7-47dc-bc84-b9e6b38f5903}\" /f
REG ADD \"HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\" /f /v \"LaunchTo\" /t REG_DWORD /d \"1\"
"
],
"UndoScript": [
],
"UndoScript": [
"
REG ADD \"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Desktop\\NameSpace\\{e88865ea-0e1c-4e20-9aa6-edcd0212c87c}\" /f /ve /t REG_SZ /d \"{e88865ea-0e1c-4e20-9aa6-edcd0212c87c}\"
REG ADD \"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Desktop\\NameSpace\\{f874310e-b6b7-47dc-bc84-b9e6b38f5903}\" /f /ve /t REG_SZ /d \"CLSID_MSGraphHomeFolder\"
REG DELETE \"HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\" /f /v \"LaunchTo\"
"
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/RemoveHomeGallery"
},
"WPFTweaksDisplay": {
"Content": "Set Display for Performance",
@ -2131,7 +2299,8 @@
],
"UndoScript": [
"Remove-ItemProperty -Path \"HKCU:\\Control Panel\\Desktop\" -Name \"UserPreferencesMask\""
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/Display"
},
"WPFTweaksDeBloat": {
"Content": "Remove ALL MS Store Apps - NOT RECOMMENDED",
@ -2172,11 +2341,10 @@
"microsoft.windowscommunicationsapps",
"Microsoft.WindowsFeedbackHub",
"Microsoft.WindowsMaps",
"Microsoft.WindowsPhone",
"Microsoft.YourPhone",
"Microsoft.WindowsSoundRecorder",
"Microsoft.XboxApp",
"Microsoft.ConnectivityStore",
"Microsoft.CommsPhone",
"Microsoft.ScreenSketch",
"Microsoft.Xbox.TCUI",
"Microsoft.XboxGameOverlay",
@ -2250,7 +2418,8 @@
$proc.WaitForExit()
}
"
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/DeBloat"
},
"WPFTweaksRestorePoint": {
"Content": "Create Restore Point",
@ -2277,7 +2446,7 @@
# 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){
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
}
@ -2306,7 +2475,8 @@
Write-Host -ForegroundColor Green \"System Restore Point Created Successfully\"
}
"
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/RestorePoint"
},
"WPFTweaksEndTaskOnTaskbar": {
"Content": "Enable End Task With Right Click",
@ -2339,7 +2509,8 @@
# Set the property, creating it if it doesn't exist
New-ItemProperty -Path $path -Name $name -PropertyType DWord -Value $value -Force | Out-Null"
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/EndTaskOnTaskbar"
},
"WPFTweaksPowershell7": {
"Content": "Change Windows Terminal default: PowerShell 5 -> PowerShell 7",
@ -2352,7 +2523,8 @@
],
"UndoScript": [
"Invoke-WPFTweakPS7 -action \"PS5\""
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/Powershell7"
},
"WPFTweaksPowershell7Tele": {
"Content": "Disable Powershell 7 Telemetry",
@ -2365,7 +2537,8 @@
],
"UndoScript": [
"[Environment]::SetEnvironmentVariable('POWERSHELL_TELEMETRY_OPTOUT', '', 'Machine')"
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/Powershell7Tele"
},
"WPFTweaksStorage": {
"Content": "Disable Storage Sense",
@ -2378,27 +2551,22 @@
],
"UndoScript": [
"Set-ItemProperty -Path \"HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\StorageSense\\Parameters\\StoragePolicy\" -Name \"01\" -Value 1 -Type Dword -Force"
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/Storage"
},
"WPFTweaksRemoveEdge": {
"Content": "Remove Microsoft Edge - NOT RECOMMENDED",
"Description": "Removes MS Edge when it gets reinstalled by updates. Credit: AveYo",
"Content": "Remove Microsoft Edge",
"Description": "Removes MS Edge when it gets reinstalled by updates. Credit: Psyirius",
"category": "z__Advanced Tweaks - CAUTION",
"panel": "1",
"Order": "a029_",
"InvokeScript": [
"
#:: Standalone script by AveYo Source: https://raw.githubusercontent.com/AveYo/fox/main/Edge_Removal.bat
Invoke-WebRequest -Uri \"https://raw.githubusercontent.com/ChrisTitusTech/winutil/main/edgeremoval.bat\" -OutFile \"$ENV:TEMP\\edgeremoval.bat\"
Start-Process $ENV:temp\\edgeremoval.bat
"
"Uninstall-WinUtilEdgeBrowser -action \"Uninstall\""
],
"UndoScript": [
"
Write-Host \"Install Microsoft Edge\"
Start-Process -FilePath winget -ArgumentList \"install -e --accept-source-agreements --accept-package-agreements --silent Microsoft.Edge \" -NoNewWindow -Wait
"
]
"Uninstall-WinUtilEdgeBrowser -action \"Install\""
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/RemoveEdge"
},
"WPFTweaksRemoveCopilot": {
"Content": "Disable Microsoft Copilot",
@ -2408,7 +2576,6 @@
"Order": "a025_",
"registry": [
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsCopilot",
"Name": "TurnOffWindowsCopilot",
"Type": "DWord",
@ -2441,7 +2608,8 @@
Write-Host \"Install Copilot\"
dism /online /add-package /package-name:Microsoft.Windows.Copilot
"
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/RemoveCopilot"
},
"WPFTweaksDisableLMS1": {
"Content": "Disable Intel MM (vPro LMS)",
@ -2450,7 +2618,7 @@
"panel": "1",
"Order": "a026_",
"InvokeScript": [
"
"
Write-Host \"Kill LMS\"
$serviceName = \"LMS\"
Write-Host \"Stopping and disabling service: $serviceName\"
@ -2498,7 +2666,8 @@
Write-Host \"LMS vPro needs to be redownloaded from intel.com\"
"
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/DisableLMS1"
},
"WPFTweaksRemoveOnedrive": {
"Content": "Remove OneDrive",
@ -2511,17 +2680,16 @@
$OneDrivePath = $($env:OneDrive)
Write-Host \"Removing OneDrive\"
$regPath = \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OneDriveSetup.exe\"
if (Test-Path $regPath){
if (Test-Path $regPath) {
$OneDriveUninstallString = Get-ItemPropertyValue \"$regPath\" -Name \"UninstallString\"
$OneDriveExe, $OneDriveArgs = $OneDriveUninstallString.Split(\" \")
Start-Process -FilePath $OneDriveExe -ArgumentList \"$OneDriveArgs /silent\" -NoNewWindow -Wait
}
else{
} else {
Write-Host \"Onedrive dosn't seem to be installed anymore\" -ForegroundColor Red
return
}
# Check if OneDrive got Uninstalled
if (-not (Test-Path $regPath)){
if (-not (Test-Path $regPath)) {
Write-Host \"Copy downloaded Files from the OneDrive Folder to Root UserProfile\"
Start-Process -FilePath powershell -ArgumentList \"robocopy '$($OneDrivePath)' '$($env:USERPROFILE.TrimEnd())\\' /mov /e /xj\" -NoNewWindow -Wait
@ -2583,8 +2751,7 @@
Write-Host \"Please Note - The OneDrive folder at $OneDrivePath may still have items in it. You must manually delete it, but all the files should already be copied to the base user folder.\"
Write-Host \"If there are Files missing afterwards, please Login to Onedrive.com and Download them manually\" -ForegroundColor Yellow
Start-Sleep 5
}
else{
} else {
Write-Host \"Something went Wrong during the Unistallation of OneDrive\" -ForegroundColor Red
}
"
@ -2594,7 +2761,8 @@
Write-Host \"Install OneDrive\"
Start-Process -FilePath winget -ArgumentList \"install -e --accept-source-agreements --accept-package-agreements --silent Microsoft.OneDrive \" -NoNewWindow -Wait
"
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/RemoveOnedrive"
},
"WPFTweaksDisableNotifications": {
"Content": "Disable Notification Tray/Calendar",
@ -2617,7 +2785,8 @@
"Value": "0",
"OriginalValue": "1"
}
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/DisableNotifications"
},
"WPFTweaksDebloatAdobe": {
"Content": "Adobe Debloat",
@ -2765,7 +2934,8 @@
"StartupType": "Manual",
"OriginalType": "Automatic"
}
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/DebloatAdobe"
},
"WPFTweaksBlockAdobeNet": {
"Content": "Adobe Network Block",
@ -2784,8 +2954,7 @@
try {
Invoke-WebRequest -Uri $remoteHostsUrl -OutFile $tempHostsPath
Write-Output \"Downloaded the remote HOSTS file to a temporary location.\"
}
catch {
} catch {
Write-Error \"Failed to download the HOSTS file. Error: $_\"
}
@ -2811,8 +2980,7 @@
$combinedContent | Set-Content $localHostsPath -Encoding ASCII
Write-Output \"Successfully added the AdobeNetBlock.\"
}
}
catch {
} catch {
Write-Error \"Error during processing: $_\"
}
@ -2823,8 +2991,7 @@
try {
Invoke-Expression \"ipconfig /flushdns\"
Write-Output \"DNS cache flushed successfully.\"
}
catch {
} catch {
Write-Error \"Failed to flush DNS cache. Error: $_\"
}
"
@ -2837,8 +3004,7 @@
# Load the content of the HOSTS file
try {
$hostsContent = Get-Content $localHostsPath -ErrorAction Stop
}
catch {
} catch {
Write-Error \"Failed to load the HOSTS file. Error: $_\"
return
}
@ -2864,8 +3030,7 @@
try {
$newContent | Set-Content $localHostsPath -Encoding ASCII
Write-Output \"Successfully removed the AdobeNetBlock section from the HOSTS file.\"
}
catch {
} catch {
Write-Error \"Failed to write back to the HOSTS file. Error: $_\"
}
@ -2873,12 +3038,12 @@
try {
Invoke-Expression \"ipconfig /flushdns\"
Write-Output \"DNS cache flushed successfully.\"
}
catch {
} catch {
Write-Error \"Failed to flush DNS cache. Error: $_\"
}
"
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/BlockAdobeNet"
},
"WPFTweaksRightClickMenu": {
"Content": "Set Classic Right-Click Menu ",
@ -2902,7 +3067,8 @@
$process = Get-Process -Name \"explorer\"
Stop-Process -InputObject $process
"
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/RightClickMenu"
},
"WPFTweaksDiskCleanup": {
"Content": "Run Disk Cleanup",
@ -2915,7 +3081,8 @@
cleanmgr.exe /d C: /VERYLOWDISK
Dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase
"
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/DiskCleanup"
},
"WPFTweaksDeleteTempFiles": {
"Content": "Delete Temporary Files",
@ -2926,7 +3093,8 @@
"InvokeScript": [
"Get-ChildItem -Path \"C:\\Windows\\Temp\" *.* -Recurse | Remove-Item -Force -Recurse
Get-ChildItem -Path $env:TEMP *.* -Recurse | Remove-Item -Force -Recurse"
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/DeleteTempFiles"
},
"WPFTweaksDVR": {
"Content": "Disable GameDVR",
@ -2970,7 +3138,8 @@
"OriginalValue": "1",
"Type": "DWord"
}
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/DVR"
},
"WPFTweaksTeredo": {
"Content": "Disable Teredo",
@ -2992,7 +3161,8 @@
],
"UndoScript": [
"netsh interface teredo set state default"
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/Teredo"
},
"WPFTweaksDisableipsix": {
"Content": "Disable IPv6",
@ -3014,7 +3184,8 @@
],
"UndoScript": [
"Enable-NetAdapterBinding -Name \"*\" -ComponentID ms_tcpip6"
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/Disableipsix"
},
"WPFTweaksDisableBGapps": {
"Content": "Disable Background Apps",
@ -3030,7 +3201,8 @@
"OriginalValue": "0",
"Type": "DWord"
}
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/DisableBGapps"
},
"WPFTweaksDisableFSO": {
"Content": "Disable Fullscreen Optimizations",
@ -3046,7 +3218,8 @@
"OriginalValue": "0",
"Type": "DWord"
}
]
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/DisableFSO"
},
"WPFToggleDarkMode": {
"Content": "Dark Theme for Windows",
@ -3054,7 +3227,8 @@
"category": "Customize Preferences",
"panel": "2",
"Order": "a100_",
"Type": "Toggle"
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/DarkMode"
},
"WPFToggleBingSearch": {
"Content": "Bing Search in Start Menu",
@ -3062,7 +3236,8 @@
"category": "Customize Preferences",
"panel": "2",
"Order": "a101_",
"Type": "Toggle"
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/BingSearch"
},
"WPFToggleNumLock": {
"Content": "NumLock on Startup",
@ -3070,7 +3245,8 @@
"category": "Customize Preferences",
"panel": "2",
"Order": "a102_",
"Type": "Toggle"
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/NumLock"
},
"WPFToggleVerboseLogon": {
"Content": "Verbose Messages During Logon",
@ -3078,7 +3254,8 @@
"category": "Customize Preferences",
"panel": "2",
"Order": "a103_",
"Type": "Toggle"
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/VerboseLogon"
},
"WPFToggleSnapWindow": {
"Content": "Snap Window",
@ -3086,7 +3263,8 @@
"category": "Customize Preferences",
"panel": "2",
"Order": "a104_",
"Type": "Toggle"
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/SnapWindow"
},
"WPFToggleSnapFlyout": {
"Content": "Snap Assist Flyout",
@ -3094,7 +3272,8 @@
"category": "Customize Preferences",
"panel": "2",
"Order": "a105_",
"Type": "Toggle"
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/SnapFlyout"
},
"WPFToggleSnapSuggestion": {
"Content": "Snap Assist Suggestion",
@ -3102,7 +3281,8 @@
"category": "Customize Preferences",
"panel": "2",
"Order": "a106_",
"Type": "Toggle"
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/SnapSuggestion"
},
"WPFToggleMouseAcceleration": {
"Content": "Mouse Acceleration",
@ -3110,7 +3290,8 @@
"category": "Customize Preferences",
"panel": "2",
"Order": "a107_",
"Type": "Toggle"
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/MouseAcceleration"
},
"WPFToggleStickyKeys": {
"Content": "Sticky Keys",
@ -3118,7 +3299,8 @@
"category": "Customize Preferences",
"panel": "2",
"Order": "a108_",
"Type": "Toggle"
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/StickyKeys"
},
"WPFToggleHiddenFiles": {
"Content": "Show Hidden Files",
@ -3126,7 +3308,8 @@
"category": "Customize Preferences",
"panel": "2",
"Order": "a200_",
"Type": "Toggle"
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/HiddenFiles"
},
"WPFToggleShowExt": {
"Content": "Show File Extensions",
@ -3134,7 +3317,8 @@
"category": "Customize Preferences",
"panel": "2",
"Order": "a201_",
"Type": "Toggle"
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/ShowExt"
},
"WPFToggleTaskbarSearch": {
"Content": "Search Button in Taskbar",
@ -3142,7 +3326,8 @@
"category": "Customize Preferences",
"panel": "2",
"Order": "a202_",
"Type": "Toggle"
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/TaskbarSearch"
},
"WPFToggleTaskView": {
"Content": "Task View Button in Taskbar",
@ -3150,7 +3335,8 @@
"category": "Customize Preferences",
"panel": "2",
"Order": "a203_",
"Type": "Toggle"
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/TaskView"
},
"WPFToggleTaskbarWidgets": {
"Content": "Widgets Button in Taskbar",
@ -3158,7 +3344,8 @@
"category": "Customize Preferences",
"panel": "2",
"Order": "a204_",
"Type": "Toggle"
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/TaskbarWidgets"
},
"WPFToggleTaskbarAlignment": {
"Content": "Center Taskbar Items",
@ -3166,7 +3353,8 @@
"category": "Customize Preferences",
"panel": "2",
"Order": "a204_",
"Type": "Toggle"
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/TaskbarAlignment"
},
"WPFToggleDetailedBSoD": {
"Content": "Detailed BSoD",
@ -3174,14 +3362,16 @@
"category": "Customize Preferences",
"panel": "2",
"Order": "a205_",
"Type": "Toggle"
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/DetailedBSoD"
},
"WPFOOSUbutton": {
"Content": "Run OO Shutup 10",
"category": "z__Advanced Tweaks - CAUTION",
"panel": "1",
"Order": "a039_",
"Type": "Button"
"Type": "Button",
"link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/OOSUbutton"
},
"WPFchangedns": {
"Content": "DNS",
@ -3189,21 +3379,24 @@
"panel": "1",
"Order": "a040_",
"Type": "Combobox",
"ComboItems": "Default DHCP Google Cloudflare Cloudflare_Malware Cloudflare_Malware_Adult Open_DNS Quad9 AdGuard_Ads_Trackers AdGuard_Ads_Trackers_Malware_Adult"
"ComboItems": "Default DHCP Google Cloudflare Cloudflare_Malware Cloudflare_Malware_Adult Open_DNS Quad9 AdGuard_Ads_Trackers AdGuard_Ads_Trackers_Malware_Adult",
"link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/changedns"
},
"WPFTweaksbutton": {
"Content": "Run Tweaks",
"category": "z__Advanced Tweaks - CAUTION",
"panel": "1",
"Order": "a041_",
"Type": "Button"
"Type": "Button",
"link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/button"
},
"WPFUndoall": {
"Content": "Undo Selected Tweaks",
"category": "z__Advanced Tweaks - CAUTION",
"panel": "1",
"Order": "a042_",
"Type": "Button"
"Type": "Button",
"link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/Undoall"
},
"WPFAddUltPerf": {
"Content": "Add and Activate Ultimate Performance Profile",
@ -3211,7 +3404,8 @@
"panel": "2",
"Order": "a080_",
"Type": "Button",
"ButtonWidth": "300"
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Performance-Plans/AddUltPerf"
},
"WPFRemoveUltPerf": {
"Content": "Remove Ultimate Performance Profile",
@ -3219,7 +3413,8 @@
"panel": "2",
"Order": "a081_",
"Type": "Button",
"ButtonWidth": "300"
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Performance-Plans/RemoveUltPerf"
},
"WPFWinUtilShortcut": {
"Content": "Create WinUtil Shortcut",
@ -3227,6 +3422,7 @@
"panel": "2",
"Order": "a082_",
"Type": "Button",
"ButtonWidth": "300"
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Shortcuts/Shortcut"
}
}

View File

@ -176,4 +176,4 @@ Get-Service -Name "XboxGipSvc" | Set-Service -StartupType Automatic
7. **ISO File Integrity:**
Ensure that the ISO file you are trying to mount is uncorrupted. Try mounting a different ISO file to see if the issue persists.
* If the problem persists after trying these steps, additional troubleshooting is required. Consider seeking assistance from Microsoft support or community forums for more specific guidance based on your system configuration and the software you use to mount the ISO.
* If the problem persists after trying these steps, additional troubleshooting is required. Consider seeking assistance from Microsoft support or community forums for more specific guidance based on your system configuration and the software you use to mount the ISO.

View File

@ -1,175 +0,0 @@
# Changelog
WinUtil change log received from GitHub Releases, it's autogenerated using GitHub Actions.
> [!WARNING]
> This file **SHOULD NOT** be edited directly, any PRs that tries changing it directly will either be requested on not changing it, or it'll get rejected.
# Release 24.07.17
![GitHub Downloads (specific asset, specific tag)](https://img.shields.io/github/downloads/ChrisTitusTech/winutil/24.07.17/winutil.ps1)
## What's Changed
* Pump up the value of 'operations-per-run' Field for 'Close Old Issues' Workflow by @og-mrk in https://github.com/ChrisTitusTech/winutil/pull/2219
* Improvements/Fixes for the Release Actions by @Marterich in https://github.com/ChrisTitusTech/winutil/pull/2221
* Move Launch Issues from ReadMe to Known Issues by @MyDrift-user in https://github.com/ChrisTitusTech/winutil/pull/2222
* [01] Refactoring UI code by @og-mrk in https://github.com/ChrisTitusTech/winutil/pull/2274
* Delete Un-used 'helperscript.ps1' File by @og-mrk in https://github.com/ChrisTitusTech/winutil/pull/2223
* Known Issues: Removed redundancy caused by resolving the merge conflict. by @MyDrift-user in https://github.com/ChrisTitusTech/winutil/pull/2224
* Redirect dev to latest Full Release if can't find prerelease by @MyDrift-user in https://github.com/ChrisTitusTech/winutil/pull/2225
* Add 'CONTRIBUTING.md' File by @og-mrk in https://github.com/ChrisTitusTech/winutil/pull/2227
* Update main.ps1 by @eltociear in https://github.com/ChrisTitusTech/winutil/pull/2229
* Added get installed check for classic right click menu tweak by @btstromberg in https://github.com/ChrisTitusTech/winutil/pull/2231
* fix syntax highlighting in .MDs by @MyDrift-user in https://github.com/ChrisTitusTech/winutil/pull/2235
* Add "Shotcut" in applications by @ksb2311 in https://github.com/ChrisTitusTech/winutil/pull/2238
* Fix Icon Support for Shortcut Creation by @og-mrk in https://github.com/ChrisTitusTech/winutil/pull/2242
* Allow for tasks to be distinguished by @CodingWonders in https://github.com/ChrisTitusTech/winutil/pull/2251
* Fix & Rename Nilesoft Shell by @MyDrift-user in https://github.com/ChrisTitusTech/winutil/pull/2261
* Fix: Ultimate Performance Plan by @MyDrift-user in https://github.com/ChrisTitusTech/winutil/pull/2267
* Change Main loop from 'ForEach' to 'For' inside 'Install-WinUtilProgramWinget' Private Function by @og-mrk in https://github.com/ChrisTitusTech/winutil/pull/2271
* Fix 'Close Old Issues' Workflow by @og-mrk in https://github.com/ChrisTitusTech/winutil/pull/2272
* Add new 'Disable Powershell 7 Telemetry' Tweak by @og-mrk in https://github.com/ChrisTitusTech/winutil/pull/2273
* Fix Typo in 'Invoke-WinUtilTaskbarSearch' Private Function by @og-mrk in https://github.com/ChrisTitusTech/winutil/pull/2275
* Update applications.json by @dhruvmistry2000 in https://github.com/ChrisTitusTech/winutil/pull/2290
* Add app: Modern Flyouts by @MyDrift-user in https://github.com/ChrisTitusTech/winutil/pull/2293
* Adds PR template by @Real-MullaC in https://github.com/ChrisTitusTech/winutil/pull/2299
* Add download counter by @Marterich in https://github.com/ChrisTitusTech/winutil/pull/2300
* Change Kicad category by @Joanty24 in https://github.com/ChrisTitusTech/winutil/pull/2302
* Fix: PR Template file extension by @MyDrift-user in https://github.com/ChrisTitusTech/winutil/pull/2304
* Rework JDK packages with Corretto LTS ones by @meenbeese in https://github.com/ChrisTitusTech/winutil/pull/2305
* Added IPv6 DNS by @Joanty24 in https://github.com/ChrisTitusTech/winutil/pull/2303
* Create createchangelog.yml for docs page by @Real-MullaC in https://github.com/ChrisTitusTech/winutil/pull/2346
* Adds all files for winutil docs by @Real-MullaC in https://github.com/ChrisTitusTech/winutil/pull/2342
* Adds Community Discord to ReadMe file by @Real-MullaC in https://github.com/ChrisTitusTech/winutil/pull/2343
* Discussions close on PR merge by @Real-MullaC in https://github.com/ChrisTitusTech/winutil/pull/2336
* Documentation & ReadMe Cleanup by @MyDrift-user in https://github.com/ChrisTitusTech/winutil/pull/2310
* Added MicroWin documentation by @CodingWonders in https://github.com/ChrisTitusTech/winutil/pull/2349
* Update Install-WinUtilProgramChoco.ps1 by @Real-MullaC in https://github.com/ChrisTitusTech/winutil/pull/2307
* Addition of Fork by @Real-MullaC in https://github.com/ChrisTitusTech/winutil/pull/2313
* Hidden File Tweaks by @Real-MullaC in https://github.com/ChrisTitusTech/winutil/pull/2320
* Optimized: Shortcut Creation and PS7 Tweak by @Marterich in https://github.com/ChrisTitusTech/winutil/pull/2314
* Addition of multiple applications by @Real-MullaC in https://github.com/ChrisTitusTech/winutil/pull/2316
* Add Application: ZoomIt by @MyDrift-user in https://github.com/ChrisTitusTech/winutil/pull/2319
* Fix Compile Errors on PowerShell 5 by @Marterich in https://github.com/ChrisTitusTech/winutil/pull/2322
* Add application: Lenovo Legion Toolkit by @Klusio19 in https://github.com/ChrisTitusTech/winutil/pull/2324
* Remove Edge leftovers from WOW6432Node by @CodingWonders in https://github.com/ChrisTitusTech/winutil/pull/2328
* Fix: End Task with right click by @MyDrift-user in https://github.com/ChrisTitusTech/winutil/pull/2331
* Adds Palemoon and closes old issues if not needed by @Real-MullaC in https://github.com/ChrisTitusTech/winutil/pull/2332
* Change the titles for each section from Bold Text to Header 2 in Bug Report Issue Template by @og-mrk in https://github.com/ChrisTitusTech/winutil/pull/2339
* Optimize badges by @Marterich in https://github.com/ChrisTitusTech/winutil/pull/2356
* Add New Windows 11 Specific Toggle - The 'Taskbar Alignment' Toggle by @og-mrk in https://github.com/ChrisTitusTech/winutil/pull/2347
* Make the 'Youtube Tutorial' Header be the link instead of the Youtube Thumbnail for it, Making the 'README.md' even shorter by @og-mrk in https://github.com/ChrisTitusTech/winutil/pull/2359
* Fix WinUtil Crashing on Startup - Xaml Error from Generated Applications List by @og-mrk in https://github.com/ChrisTitusTech/winutil/pull/2361
* [Wiki] Automatically enabling Dark/Light mode set by user's browser Preference by @Angxddeep in https://github.com/ChrisTitusTech/winutil/pull/2366
* Fixes an issue with create changelog not working by @Real-MullaC in https://github.com/ChrisTitusTech/winutil/pull/2375
* Updates PR template so disscussion and issue is on the same line. by @Real-MullaC in https://github.com/ChrisTitusTech/winutil/pull/2363
* Update close-discussion.yml so it detects based on new previous PR by @Real-MullaC in https://github.com/ChrisTitusTech/winutil/pull/2364
* Repo Cleanup by @MyDrift-user in https://github.com/ChrisTitusTech/winutil/pull/2367
* Add /close command for the active contributors to close issues by @Marterich in https://github.com/ChrisTitusTech/winutil/pull/2380
* Update workflows to remove `::set-output` by @wojsmol in https://github.com/ChrisTitusTech/winutil/pull/2384
* Fixes release log by @Real-MullaC in https://github.com/ChrisTitusTech/winutil/pull/2377
* Bump actions/checkout from 2 to 4 by @dependabot in https://github.com/ChrisTitusTech/winutil/pull/2389
* Bump actions/cache from 2 to 4 by @dependabot in https://github.com/ChrisTitusTech/winutil/pull/2390
## New Contributors
* @btstromberg made their first contribution in https://github.com/ChrisTitusTech/winutil/pull/2231
* @ksb2311 made their first contribution in https://github.com/ChrisTitusTech/winutil/pull/2238
* @dhruvmistry2000 made their first contribution in https://github.com/ChrisTitusTech/winutil/pull/2290
* @Klusio19 made their first contribution in https://github.com/ChrisTitusTech/winutil/pull/2324
* @Angxddeep made their first contribution in https://github.com/ChrisTitusTech/winutil/pull/2366
* @wojsmol made their first contribution in https://github.com/ChrisTitusTech/winutil/pull/2384
* @dependabot made their first contribution in https://github.com/ChrisTitusTech/winutil/pull/2389
**Full Changelog**: https://github.com/ChrisTitusTech/winutil/compare/24.06.29...24.07.17
# Release 24.06.28
![GitHub Downloads (specific asset, specific tag)](https://img.shields.io/github/downloads/ChrisTitusTech/winutil/24.06.28/winutil.ps1)
## What's Changed
* Rename Application: ForceAutoHDR by @MyDrift-user in https://github.com/ChrisTitusTech/winutil/pull/2081
* Remove force install of Winget + Small improvements by @Marterich in https://github.com/ChrisTitusTech/winutil/pull/2083
* Remove WwanSvc Service From Manual Services Tweak by @Marterich in https://github.com/ChrisTitusTech/winutil/pull/2086
* Added Plex Desktop along side Plex Media Server by @PedroBuffon in https://github.com/ChrisTitusTech/winutil/pull/2091
* Remove java 20 by @brrock in https://github.com/ChrisTitusTech/winutil/pull/2095
* Remove oosu essential tweak by @Marterich in https://github.com/ChrisTitusTech/winutil/pull/2099
* Removed Free File Sync because of Malware warning on choco repo by @Marterich in https://github.com/ChrisTitusTech/winutil/pull/2101
* Remove unused Functions by @Marterich in https://github.com/ChrisTitusTech/winutil/pull/2102
* Remove Extra Tabs in 'applications.json' File by @og-mrk in https://github.com/ChrisTitusTech/winutil/pull/2113
* Fix Compile -Run always starting as PS5 by @Marterich in https://github.com/ChrisTitusTech/winutil/pull/2165
* Fix White space (bottom right of Application Tab) by @MyDrift-user in https://github.com/ChrisTitusTech/winutil/pull/2120
* Delete Un-used 'logs' Folder by @og-mrk in https://github.com/ChrisTitusTech/winutil/pull/2135
* Fixes Edge Removal by @Real-MullaC in https://github.com/ChrisTitusTech/winutil/pull/2136
* Added kicad by @Real-MullaC in https://github.com/ChrisTitusTech/winutil/pull/2138
* Addition of Dropbox by @Real-MullaC in https://github.com/ChrisTitusTech/winutil/pull/2200
* Spelling Fix: uninstall button by @MyDrift-user in https://github.com/ChrisTitusTech/winutil/pull/2197
* Add Overlay to Taskbaritem by @MyDrift-user in https://github.com/ChrisTitusTech/winutil/pull/2196
## New Contributors
* @PedroBuffon made their first contribution in https://github.com/ChrisTitusTech/winutil/pull/2091
* @brrock made their first contribution in https://github.com/ChrisTitusTech/winutil/pull/2095
**Full Changelog**: https://github.com/ChrisTitusTech/winutil/compare/24.06.25...24.06.28
# Release 24.06.18
## What's Changed
* Update Invoke-WinUtilNumLock.ps1 by @ChrisTitusTech in https://github.com/ChrisTitusTech/winutil/pull/2104
**Full Changelog**: https://github.com/ChrisTitusTech/winutil/compare/24.06.11...24.06.18
# Release 24.06.11
This release is an auto generated release.
From now on any pull request on the main branch generates a release like this, which ensures you can rewind in time to ANY version of winutil. Also this makes it easy to launch winutil from github.com instead of using raw GitHub which is blocked in some countries. Big shoutout to KonTy for the auto release idea!
## What's Changed
* Fix Numlock toggle by @ChrisTitusTech in https://github.com/ChrisTitusTech/winutil/pull/2044
* fix typo by @nikolan123 in https://github.com/ChrisTitusTech/winutil/pull/2041
* Simplify 'Close Old Issues' Workflow by using 'actions/stale' GitHub Action by @og-mrk in https://github.com/ChrisTitusTech/winutil/pull/2055
* Compile Cleanup and Tweak Fixes by @ChrisTitusTech in https://github.com/ChrisTitusTech/winutil/pull/2062
* Fix the URL of an Example in 'README.md' File by @og-mrk in https://github.com/ChrisTitusTech/winutil/pull/2063
## New Contributors
* @nikolan123 made their first contribution in https://github.com/ChrisTitusTech/winutil/pull/2041
**Full Changelog**: https://github.com/ChrisTitusTech/winutil/compare/v2024.06.05...24.06.11
# WinUtil 2024.06.05 Bug Fixes and Feature Additions
- Applications cleanup (Few unmaintained applications culled)
- Application Additions
- Various Microwin fixes thanks to @KonTy
- Better application filtering @Marterich
- CoPilot Removal @KonTy @ModernTTY
- Import Drivers @CodingWonders
- OOSU updates @Marterich
- Fix Auto HDR @og-mrk
- Only install chocolatey if needed @Marterich
- Various winget fixes @og-mrk
- Adobe Fixes @MyDrift-user
- Disable Fullscreen Optimizations Tweak Added
- Tweaks reorder and cleanup
- Chocolatey fallback fix @ty802
This was a massive 100+ commit PR and the last of it's size. Going forward I will be making multiple branches to separate the pr's into. This will help seperate application PRs, GUI PRs, Tweaks, and others into their own branches based on features.
# WinUtil 2024.04.20 Bug Fixes and Issue Fixes
- Toggle Widgets fix @og-mrk
- Fix Special Characters causing errors in JSON files @og-mrk
- Restart explorer on classic right click tweak @og-mrk
- Fix Disable Storage Sense @og-mrk
- Robocopy fix when username has space in during OneDrive uninstall @og-mrk
- Multiple Winget Fixes made by @ruxunderscore
- Fix DISM Conversion for ESD files @CodingWonders
- Independent Edge Removal Update by @DaEpicR
- Disable SCOOBE @ICTdE
- O&O Tweaks update by @Marterich
- Bugfix for Window Restore Creation by @ChrisTitusTech
- Fix Winget Installs for Default -> User Scope -> Unelevated if one fails it trys the next method. @ChrisTitusTech
- Fix Unit Tests for Functions @ChrisTitusTech

View File

@ -1,106 +1,3 @@
# How to Contribute?
--8<-- ".github/CONTRIBUTING.md"
## Testing
* Test the latest changes to WinUtil by running the pre-release and reporting issues you are encountering to help us continually improve WinUtil!
#### **Run the latest pre-release**
```ps1
irm christitus.com/windev | iex
```
   
!!! bug "Keep in mind"
This is a pre-release and should be treated as such. It exists for developers to test the utility and report or fix bugs before they get added to the stable release. Don't use it in production!
## Issues
* If you encounter any challenges or problems with the script, I kindly request that you submit them via the "Issues" tab on the GitHub repository. By filling out the provided template, you can provide specific details about the issue, allowing me (and others in the community) to promptly address any bugs or consider feature requests.
## Contribute Code
* Pull requests are now handled directly on the **MAIN branch**. This was done since we can now select specific releases to launch via releases in GitHub.
* If you're doing code changes, then you can submit a PR to `main` branch, but I am very selective about these.
!!! warning "Important"
Do not use a code formatter, make massive amounts of line changes, or make multiple feature changes. EACH FEATURE CHANGE SHOULD BE IT'S OWN PULL REQUEST!
* When creating pull requests, it is essential to thoroughly document all changes made. This includes, but is not limited to, documenting any additions made to the `tweaks` section and corresponding `undo tweak`, so users are able to remove the newly added tweaks if necessary, and comprehensive documentation is required for all code changes. Document your changes and briefly explain why you made your changes in your Pull Request Description. Failure to adhere to this format may result in the denial of the pull request. Additionally, any code lacking sufficient documentation may also be denied.
* By following these guidelines, we can maintain a high standard of quality and ensure that the codebase remains organized and well-documented.
!!! note
When creating a function, please include "WPF" or "WinUtil" in the file name so it can be loaded into the runspace.
## Walk through
* This is a guide for beginners. If you are still having issues, look at the following official GitHub documentation:
* [Commit through WEB](https://docs.github.com/en/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/about-commits)
* [Commit through GitHub Desktop](https://docs.github.com/en/desktop/making-changes-in-a-branch/committing-and-reviewing-changes-to-your-project-in-github-desktop#about-commits)
* [Create a Pull Request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request)
### Overview
``` mermaid
graph LR
  A[Fork Project] --> B[Clone Repository];
  B --> C[Create New Branch];
  C --> D[Make Changes];
  D --> G[Test Changes];
  G --> H{Tests Passed?};
  H -->|Yes| E[Commit Changes];
  E --> F[Push Branch];
  H -->|No| J[Fix Issues];
  F --> K[Create Pull Request];
  K --> L[Fill out PR template];
  J --> G;
```
!!! info
This is a diagram to guide you through the process. It may vary depending on the type of change you're making.
### Fork the Repo
* Fork the WinUtil Repository [here](https://github.com/ChrisTitusTech/winutil) to create a copy that will be available in your repository list.
![Fork Image](assets/Fork-Button-Dark.png#only-dark)
![FOrk Image](assets/Fork-Button-Light.png#only-light)
### Clone the Fork
!!! tip
While you can make your changes directly through the Web, we recommend cloning the repo to your device using the application GitHub Desktop (available in WinUtil) to test your fork easily.
* Install GitHub Desktop if it is not already installed.
* Log in using the same GitHub account you used to fork WinUtil.
* Choose the fork under "Your Repositories" and press "clone {repo name}"
* Create a new branch and name it something relatable to your changes.
* Now you can modify WinUtil to your liking using your preferred text editor.
### Testing your changes
* To test to see if your changes work as intended run following commands in a powershell teminal as admin:
* Change the directory where you are running the commands to the forked project.
* `cd {path to the folder with the compile.ps1}`
* Run the following command to compile and run WinUtil:
* `.\Compile.ps1 -run`
* ![Compile](assets/Compile.png)
* After seeing that your changes work properly, feel free to commit the changes to the repository and make a PR. For help on that, follow the documentation below.
### Committing the changes
* Before committing your changes, please discard changes made to the `winutil.ps1` file, like the following:
- ![Push Commit Image](assets/Discard-GHD.png)
* Now, commit your changes once you are happy with the result.
![Commit Image](assets/Commit-GHD.png)
* Push the changes to upload them to your fork on github.com.
![Push Commit Image](assets/Push-Commit.png)
### Making a PR
* To make a PR on your repo under a new branch linking to the main branch, a button will show and say Preview and Create pull request. Click that button and fill in all the information that is provided on the template. Once all the information is filled in correctly, check your PR to make sure there is not a WinUtil.ps1 file attached to the PR. Once everything is good, make the PR and wait for Chris (the maintainer) to accept or deny your PR. Once it is accepted by Chris, you will be able to see your changes in the "/windev" build.
* If you do not see your feature in the main "/win" build, that is fine. All new changes go into the /windev build to make sure everything is working OK before going fully public.
* Congratulations! You just submitted your first PR. Thank you so much for contributing to WinUtil.
<!-- The content is sourced from "CONTRIBUTING.md," located in the root directory of the project. -->

View File

@ -0,0 +1,61 @@
# Disable Legacy F8 Boot Recovery
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Disables Advanced Boot Options screen that lets you start Windows in advanced troubleshooting modes.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Disable Legacy F8 Boot Recovery",
"Description": "Disables Advanced Boot Options screen that lets you start Windows in advanced troubleshooting modes.",
"category": "Features",
"panel": "1",
"Order": "a019_",
"feature": [],
"InvokeScript": [
"
If (!(Test-Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood')) {
New-Item -Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood' -Force | Out-Null
}
New-ItemProperty -Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood' -Name 'Enabled' -Type DWord -Value 0 -Force
Start-Process -FilePath cmd.exe -ArgumentList '/c bcdedit /Set {Current} BootMenuPolicy Standard' -Wait
"
],
"link": "https://christitustech.github.io/winutil/dev/features/Features/DisableLegacyRecovery"
}
```
</details>
## Invoke Script
```powershell
If (!(Test-Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Configuration Manager\LastKnownGood')) {
New-Item -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Configuration Manager\LastKnownGood' -Force | Out-Null
}
New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Configuration Manager\LastKnownGood' -Name 'Enabled' -Type DWord -Value 0 -Force
Start-Process -FilePath cmd.exe -ArgumentList '/c bcdedit /Set {Current} BootMenuPolicy Standard' -Wait
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json)

View File

@ -0,0 +1,61 @@
# Disable Search Box Web Suggestions in Registry(explorer restart)
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Disables web suggestions when searching using Windows Search.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Disable Search Box Web Suggestions in Registry(explorer restart)",
"Description": "Disables web suggestions when searching using Windows Search.",
"category": "Features",
"panel": "1",
"Order": "a016_",
"feature": [],
"InvokeScript": [
"
If (!(Test-Path 'HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer')) {
New-Item -Path 'HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer' -Force | Out-Null
}
New-ItemProperty -Path 'HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer' -Name 'DisableSearchBoxSuggestions' -Type DWord -Value 1 -Force
Stop-Process -name explorer -force
"
],
"link": "https://christitustech.github.io/winutil/dev/features/Features/DisableSearchSuggestions"
}
```
</details>
## Invoke Script
```powershell
If (!(Test-Path 'HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer')) {
New-Item -Path 'HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer' -Force | Out-Null
}
New-ItemProperty -Path 'HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer' -Name 'DisableSearchBoxSuggestions' -Type DWord -Value 1 -Force
Stop-Process -name explorer -force
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json)

View File

@ -0,0 +1,61 @@
# Enable Legacy F8 Boot Recovery
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Enables Advanced Boot Options screen that lets you start Windows in advanced troubleshooting modes.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Enable Legacy F8 Boot Recovery",
"Description": "Enables Advanced Boot Options screen that lets you start Windows in advanced troubleshooting modes.",
"category": "Features",
"panel": "1",
"Order": "a018_",
"feature": [],
"InvokeScript": [
"
If (!(Test-Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood')) {
New-Item -Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood' -Force | Out-Null
}
New-ItemProperty -Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood' -Name 'Enabled' -Type DWord -Value 1 -Force
Start-Process -FilePath cmd.exe -ArgumentList '/c bcdedit /Set {Current} BootMenuPolicy Legacy' -Wait
"
],
"link": "https://christitustech.github.io/winutil/dev/features/Features/EnableLegacyRecovery"
}
```
</details>
## Invoke Script
```powershell
If (!(Test-Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Configuration Manager\LastKnownGood')) {
New-Item -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Configuration Manager\LastKnownGood' -Force | Out-Null
}
New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Configuration Manager\LastKnownGood' -Name 'Enabled' -Type DWord -Value 1 -Force
Start-Process -FilePath cmd.exe -ArgumentList '/c bcdedit /Set {Current} BootMenuPolicy Legacy' -Wait
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json)

View File

@ -0,0 +1,61 @@
# Enable Search Box Web Suggestions in Registry(explorer restart)
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Enables web suggestions when searching using Windows Search.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Enable Search Box Web Suggestions in Registry(explorer restart)",
"Description": "Enables web suggestions when searching using Windows Search.",
"category": "Features",
"panel": "1",
"Order": "a015_",
"feature": [],
"InvokeScript": [
"
If (!(Test-Path 'HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer')) {
New-Item -Path 'HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer' -Force | Out-Null
}
New-ItemProperty -Path 'HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer' -Name 'DisableSearchBoxSuggestions' -Type DWord -Value 0 -Force
Stop-Process -name explorer -force
"
],
"link": "https://christitustech.github.io/winutil/dev/features/Features/EnableSearchSuggestions"
}
```
</details>
## Invoke Script
```powershell
If (!(Test-Path 'HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer')) {
New-Item -Path 'HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer' -Force | Out-Null
}
New-ItemProperty -Path 'HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer' -Name 'DisableSearchBoxSuggestions' -Type DWord -Value 0 -Force
Stop-Process -name explorer -force
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json)

View File

@ -0,0 +1,80 @@
# Install Features
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Install Features",
"category": "Features",
"panel": "1",
"Order": "a060_",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/features/Features/Install"
}
```
</details>
## Function: Invoke-WPFFeatureInstall
```powershell
function Invoke-WPFFeatureInstall {
<#
.SYNOPSIS
Installs selected Windows Features
#>
if($sync.ProcessRunning) {
$msg = "[Invoke-WPFFeatureInstall] Install process is currently running."
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning)
return
}
$Features = (Get-WinUtilCheckBoxes)["WPFFeature"]
Invoke-WPFRunspace -ArgumentList $Features -DebugPreference $DebugPreference -ScriptBlock {
param($Features, $DebugPreference)
$sync.ProcessRunning = $true
if ($Features.count -eq 1) {
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Indeterminate" -value 0.01 -overlay "logo" })
} else {
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Normal" -value 0.01 -overlay "logo" })
}
Invoke-WinUtilFeatureInstall $Features
$sync.ProcessRunning = $false
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "None" -overlay "checkmark" })
Write-Host "==================================="
Write-Host "--- Features are Installed ---"
Write-Host "--- A Reboot may be required ---"
Write-Host "==================================="
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json)

View File

@ -0,0 +1,61 @@
# Enable Daily Registry Backup Task 12.30am
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Enables daily registry backup, previously disabled by Microsoft in Windows 10 1803.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Enable Daily Registry Backup Task 12.30am",
"Description": "Enables daily registry backup, previously disabled by Microsoft in Windows 10 1803.",
"category": "Features",
"panel": "1",
"Order": "a017_",
"feature": [],
"InvokeScript": [
"
New-ItemProperty -Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager' -Name 'EnablePeriodicBackup' -Type DWord -Value 1 -Force
New-ItemProperty -Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager' -Name 'BackupCount' -Type DWord -Value 2 -Force
$action = New-ScheduledTaskAction -Execute 'schtasks' -Argument '/run /i /tn \"\\Microsoft\\Windows\\Registry\\RegIdleBackup\"'
$trigger = New-ScheduledTaskTrigger -Daily -At 00:30
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName 'AutoRegBackup' -Description 'Create System Registry Backups' -User 'System'
"
],
"link": "https://christitustech.github.io/winutil/dev/features/Features/RegBackup"
}
```
</details>
## Invoke Script
```powershell
New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Configuration Manager' -Name 'EnablePeriodicBackup' -Type DWord -Value 1 -Force
New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Configuration Manager' -Name 'BackupCount' -Type DWord -Value 2 -Force
$action = New-ScheduledTaskAction -Execute 'schtasks' -Argument '/run /i /tn "\Microsoft\Windows\Registry\RegIdleBackup"'
$trigger = New-ScheduledTaskTrigger -Daily -At 00:30
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName 'AutoRegBackup' -Description 'Create System Registry Backups' -User 'System'
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json)

View File

@ -0,0 +1,39 @@
# Windows Sandbox
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Windows Sandbox is a lightweight virtual machine that provides a temporary desktop environment to safely run applications and programs in isolation.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Windows Sandbox",
"category": "Features",
"panel": "1",
"Order": "a021_",
"Description": "Windows Sandbox is a lightweight virtual machine that provides a temporary desktop environment to safely run applications and programs in isolation.",
"link": "https://christitustech.github.io/winutil/dev/features/Features/Sandbox"
}
```
</details>
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json)

View File

@ -0,0 +1,56 @@
# All .Net Framework (2,3,4)
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
.NET and .NET Framework is a developer platform made up of tools, programming languages, and libraries for building many different types of applications.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "All .Net Framework (2,3,4)",
"Description": ".NET and .NET Framework is a developer platform made up of tools, programming languages, and libraries for building many different types of applications.",
"category": "Features",
"panel": "1",
"Order": "a010_",
"feature": [
"NetFx4-AdvSrvs",
"NetFx3"
],
"InvokeScript": [],
"link": "https://christitustech.github.io/winutil/dev/features/Features/dotnet"
}
```
</details>
## Features
Optional Windows Features are additional functionalities or components in the Windows operating system that users can choose to enable or disable based on their specific needs and preferences.
You can find information about Optional Windows Features on [Microsoft's Website for Optional Features](https://learn.microsoft.com/en-us/windows/client-management/client-tools/add-remove-hide-features?pivots=windows-11).
### Features to install
- NetFx4-AdvSrvs
- NetFx3
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json)

View File

@ -0,0 +1,76 @@
# HyperV Virtualization
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Hyper-V is a hardware virtualization product developed by Microsoft that allows users to create and manage virtual machines.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "HyperV Virtualization",
"Description": "Hyper-V is a hardware virtualization product developed by Microsoft that allows users to create and manage virtual machines.",
"category": "Features",
"panel": "1",
"Order": "a011_",
"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"
],
"link": "https://christitustech.github.io/winutil/dev/features/Features/hyperv"
}
```
</details>
## Features
Optional Windows Features are additional functionalities or components in the Windows operating system that users can choose to enable or disable based on their specific needs and preferences.
You can find information about Optional Windows Features on [Microsoft's Website for Optional Features](https://learn.microsoft.com/en-us/windows/client-management/client-tools/add-remove-hide-features?pivots=windows-11).
### Features to install
- 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
## Invoke Script
```powershell
Start-Process -FilePath cmd.exe -ArgumentList '/c bcdedit /set hypervisorschedulertype classic' -Wait
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json)

View File

@ -0,0 +1,60 @@
# Legacy Media (WMP, DirectPlay)
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Enables legacy programs from previous versions of windows
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Legacy Media (WMP, DirectPlay)",
"Description": "Enables legacy programs from previous versions of windows",
"category": "Features",
"panel": "1",
"Order": "a012_",
"feature": [
"WindowsMediaPlayer",
"MediaPlayback",
"DirectPlay",
"LegacyComponents"
],
"InvokeScript": [],
"link": "https://christitustech.github.io/winutil/dev/features/Features/legacymedia"
}
```
</details>
## Features
Optional Windows Features are additional functionalities or components in the Windows operating system that users can choose to enable or disable based on their specific needs and preferences.
You can find information about Optional Windows Features on [Microsoft's Website for Optional Features](https://learn.microsoft.com/en-us/windows/client-management/client-tools/add-remove-hide-features?pivots=windows-11).
### Features to install
- WindowsMediaPlayer
- MediaPlayback
- DirectPlay
- LegacyComponents
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json)

View File

@ -0,0 +1,74 @@
# NFS - Network File System
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Network File System (NFS) is a mechanism for storing files on a network.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "NFS - Network File System",
"Description": "Network File System (NFS) is a mechanism for storing files on a network.",
"category": "Features",
"panel": "1",
"Order": "a014_",
"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"
],
"link": "https://christitustech.github.io/winutil/dev/features/Features/nfs"
}
```
</details>
## Features
Optional Windows Features are additional functionalities or components in the Windows operating system that users can choose to enable or disable based on their specific needs and preferences.
You can find information about Optional Windows Features on [Microsoft's Website for Optional Features](https://learn.microsoft.com/en-us/windows/client-management/client-tools/add-remove-hide-features?pivots=windows-11).
### Features to install
- ServicesForNFS-ClientOnly
- ClientForNFS-Infrastructure
- NFS-Administration
## Invoke Script
```powershell
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
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json)

View File

@ -0,0 +1,56 @@
# Windows Subsystem for Linux
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Windows Subsystem for Linux is an optional feature of Windows that allows Linux programs to run natively on Windows without the need for a separate virtual machine or dual booting.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Windows Subsystem for Linux",
"Description": "Windows Subsystem for Linux is an optional feature of Windows that allows Linux programs to run natively on Windows without the need for a separate virtual machine or dual booting.",
"category": "Features",
"panel": "1",
"Order": "a020_",
"feature": [
"VirtualMachinePlatform",
"Microsoft-Windows-Subsystem-Linux"
],
"InvokeScript": [],
"link": "https://christitustech.github.io/winutil/dev/features/Features/wsl"
}
```
</details>
## Features
Optional Windows Features are additional functionalities or components in the Windows operating system that users can choose to enable or disable based on their specific needs and preferences.
You can find information about Optional Windows Features on [Microsoft's Website for Optional Features](https://learn.microsoft.com/en-us/windows/client-management/client-tools/add-remove-hide-features?pivots=windows-11).
### Features to install
- VirtualMachinePlatform
- Microsoft-Windows-Subsystem-Linux
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json)

View File

@ -0,0 +1,56 @@
# Set Up Autologin
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Set Up Autologin",
"category": "Fixes",
"Order": "a040_",
"panel": "1",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/features/Fixes/Autologin"
}
```
</details>
## Function: Invoke-WPFPanelAutologin
```powershell
function Invoke-WPFPanelAutologin {
<#
.SYNOPSIS
Enables autologin using Sysinternals Autologon.exe
#>
# Official Microsoft recommendation: https://learn.microsoft.com/en-us/sysinternals/downloads/autologon
Invoke-WebRequest -Uri "https://live.sysinternals.com/Autologon.exe" -OutFile "$env:temp\autologin.exe"
cmd /c "$env:temp\autologin.exe" /accepteula
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json)

View File

@ -0,0 +1,74 @@
# System Corruption Scan
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "System Corruption Scan",
"category": "Fixes",
"panel": "1",
"Order": "a043_",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/features/Fixes/DISM"
}
```
</details>
## Function: Invoke-WPFPanelDISM
```powershell
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
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json)

View File

@ -0,0 +1,73 @@
# Reset Network
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Reset Network",
"category": "Fixes",
"Order": "a042_",
"panel": "1",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/features/Fixes/Network"
}
```
</details>
## Function: Invoke-WPFFixesNetwork
```powershell
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 "=========================================="
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json)

View File

@ -0,0 +1,76 @@
# Remove Adobe Creative Cloud
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Remove Adobe Creative Cloud",
"category": "Fixes",
"panel": "1",
"Order": "a045_",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/features/Fixes/RunAdobeCCCleanerTool"
}
```
</details>
## Function: Invoke-WPFRunAdobeCCCleanerTool
```powershell
function Invoke-WPFRunAdobeCCCleanerTool {
<#
.SYNOPSIS
It removes or fixes problem files and resolves permission issues in registry keys.
.DESCRIPTION
The Creative Cloud Cleaner tool is a utility for experienced users to clean up corrupted installations.
#>
[string]$url="https://swupmf.adobe.com/webfeed/CleanerTool/win/AdobeCreativeCloudCleanerTool.exe"
Write-Host "The Adobe Creative Cloud Cleaner tool is hosted at"
Write-Host "$url"
try {
# Don't show the progress because it will slow down the download speed
$ProgressPreference='SilentlyContinue'
Invoke-WebRequest -Uri $url -OutFile "$env:TEMP\AdobeCreativeCloudCleanerTool.exe" -UseBasicParsing -ErrorAction SilentlyContinue -Verbose
# Revert back the ProgressPreference variable to the default value since we got the file desired
$ProgressPreference='Continue'
Start-Process -FilePath "$env:TEMP\AdobeCreativeCloudCleanerTool.exe" -Wait -ErrorAction SilentlyContinue -Verbose
} catch {
Write-Error $_.Exception.Message
} finally {
if (Test-Path -Path "$env:TEMP\AdobeCreativeCloudCleanerTool.exe") {
Write-Host "Cleaning up..."
Remove-Item -Path "$env:TEMP\AdobeCreativeCloudCleanerTool.exe" -Verbose
}
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json)

View File

@ -0,0 +1,336 @@
# Reset Windows Update
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Reset Windows Update",
"category": "Fixes",
"panel": "1",
"Order": "a041_",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/features/Fixes/Update"
}
```
</details>
## Function: Invoke-WPFFixesUpdate
```powershell
function Invoke-WPFFixesUpdate {
<#
.SYNOPSIS
Performs various tasks in an attempt to repair Windows Update
.DESCRIPTION
1. (Aggressive Only) Scans the system for corruption using chkdsk, SFC, and DISM
Steps:
1. Runs chkdsk /scan /perf
/scan - Runs an online scan on the volume
/perf - Uses more system resources to complete a scan as fast as possible
2. Runs SFC /scannow
/scannow - Scans integrity of all protected system files and repairs files with problems when possible
3. Runs DISM /Online /Cleanup-Image /RestoreHealth
/Online - Targets the running operating system
/Cleanup-Image - Performs cleanup and recovery operations on the image
/RestoreHealth - Scans the image for component store corruption and attempts to repair the corruption using Windows Update
4. Runs SFC /scannow
Ran twice in case DISM repaired SFC
2. Stops Windows Update Services
3. Remove the QMGR Data file, which stores BITS jobs
4. (Aggressive Only) Renames the DataStore and CatRoot2 folders
DataStore - Contains the Windows Update History and Log Files
CatRoot2 - Contains the Signatures for Windows Update Packages
5. Renames the Windows Update Download Folder
6. Deletes the Windows Update Log
7. (Aggressive Only) Resets the Security Descriptors on the Windows Update Services
8. Reregisters the BITS and Windows Update DLLs
9. Removes the WSUS client settings
10. Resets WinSock
11. Gets and deletes all BITS jobs
12. Sets the startup type of the Windows Update Services then starts them
13. Forces Windows Update to check for updates
.PARAMETER Aggressive
If specified, the script will take additional steps to repair Windows Update that are more dangerous, take a significant amount of time, or are generally unnecessary
#>
param($Aggressive = $false)
Write-Progress -Id 0 -Activity "Repairing Windows Update" -PercentComplete 0
# Wait for the first progress bar to show, otherwise the second one won't show
Start-Sleep -Milliseconds 200
if ($Aggressive) {
# Scan system for corruption
Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Scanning for corruption..." -PercentComplete 0
Write-Progress -Id 1 -ParentId 0 -Activity "Scanning for corruption" -Status "Running chkdsk..." -PercentComplete 0
# 2>&1 redirects stdout, alowing iteration over the output
chkdsk.exe /scan /perf 2>&1 | ForEach-Object {
# Write stdout to the Verbose stream
Write-Verbose $_
# Get the index of the total percentage
$index = $_.IndexOf("Total:")
if (
# If the percent is found
($percent = try {(
$_.Substring(
$index + 6,
$_.IndexOf("%", $index) - $index - 6
)
).Trim()} catch {0}) `
<# And the current percentage is greater than the previous one #>`
-and $percent -gt $oldpercent
) {
# Update the progress bar
$oldpercent = $percent
Write-Progress -Id 1 -ParentId 0 -Activity "Scanning for corruption" -Status "Running chkdsk... ($percent%)" -PercentComplete $percent
}
}
Write-Progress -Id 1 -ParentId 0 -Activity "Scanning for corruption" -Status "Running SFC..." -PercentComplete 0
$oldpercent = 0
# SFC has a bug when redirected which causes it to output only when the stdout buffer is full, causing the progress bar to move in chunks
sfc /scannow 2>&1 | ForEach-Object {
# Write stdout to the Verbose stream
Write-Verbose $_
# Filter for lines that contain a percentage that is greater than the previous one
if (
(
# Use a different method to get the percentage that accounts for SFC's Unicode output
[int]$percent = try {(
(
$_.Substring(
$_.IndexOf("n") + 2,
$_.IndexOf("%") - $_.IndexOf("n") - 2
).ToCharArray() | Where-Object {$_}
) -join ''
).TrimStart()} catch {0}
) -and $percent -gt $oldpercent
) {
# Update the progress bar
$oldpercent = $percent
Write-Progress -Id 1 -ParentId 0 -Activity "Scanning for corruption" -Status "Running SFC... ($percent%)" -PercentComplete $percent
}
}
Write-Progress -Id 1 -ParentId 0 -Activity "Scanning for corruption" -Status "Running DISM..." -PercentComplete 0
$oldpercent = 0
DISM /Online /Cleanup-Image /RestoreHealth | ForEach-Object {
# Write stdout to the Verbose stream
Write-Verbose $_
# Filter for lines that contain a percentage that is greater than the previous one
if (
($percent = try {
[int]($_ -replace "\[" -replace "=" -replace " " -replace "%" -replace "\]")
} catch {0}) `
-and $percent -gt $oldpercent
) {
# Update the progress bar
$oldpercent = $percent
Write-Progress -Id 1 -ParentId 0 -Activity "Scanning for corruption" -Status "Running DISM... ($percent%)" -PercentComplete $percent
}
}
Write-Progress -Id 1 -ParentId 0 -Activity "Scanning for corruption" -Status "Running SFC again..." -PercentComplete 0
$oldpercent = 0
sfc /scannow 2>&1 | ForEach-Object {
# Write stdout to the Verbose stream
Write-Verbose $_
# Filter for lines that contain a percentage that is greater than the previous one
if (
(
[int]$percent = try {(
(
$_.Substring(
$_.IndexOf("n") + 2,
$_.IndexOf("%") - $_.IndexOf("n") - 2
).ToCharArray() | Where-Object {$_}
) -join ''
).TrimStart()} catch {0}
) -and $percent -gt $oldpercent
) {
# Update the progress bar
$oldpercent = $percent
Write-Progress -Id 1 -ParentId 0 -Activity "Scanning for corruption" -Status "Running SFC... ($percent%)" -PercentComplete $percent
}
}
Write-Progress -Id 1 -ParentId 0 -Activity "Scanning for corruption" -Status "Completed" -PercentComplete 100
}
Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Stopping Windows Update Services..." -PercentComplete 10
# Stop the Windows Update Services
Write-Progress -Id 2 -ParentId 0 -Activity "Stopping Services" -Status "Stopping BITS..." -PercentComplete 0
Stop-Service -Name BITS -Force
Write-Progress -Id 2 -ParentId 0 -Activity "Stopping Services" -Status "Stopping wuauserv..." -PercentComplete 20
Stop-Service -Name wuauserv -Force
Write-Progress -Id 2 -ParentId 0 -Activity "Stopping Services" -Status "Stopping appidsvc..." -PercentComplete 40
Stop-Service -Name appidsvc -Force
Write-Progress -Id 2 -ParentId 0 -Activity "Stopping Services" -Status "Stopping cryptsvc..." -PercentComplete 60
Stop-Service -Name cryptsvc -Force
Write-Progress -Id 2 -ParentId 0 -Activity "Stopping Services" -Status "Completed" -PercentComplete 100
# Remove the QMGR Data file
Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Renaming/Removing Files..." -PercentComplete 20
Write-Progress -Id 3 -ParentId 0 -Activity "Renaming/Removing Files" -Status "Removing QMGR Data files..." -PercentComplete 0
Remove-Item "$env:allusersprofile\Application Data\Microsoft\Network\Downloader\qmgr*.dat" -ErrorAction SilentlyContinue
if ($Aggressive) {
# Rename the Windows Update Log and Signature Folders
Write-Progress -Id 3 -ParentId 0 -Activity "Renaming/Removing Files" -Status "Renaming the Windows Update Log, Download, and Signature Folder..." -PercentComplete 20
Rename-Item $env:systemroot\SoftwareDistribution\DataStore DataStore.bak -ErrorAction SilentlyContinue
Rename-Item $env:systemroot\System32\Catroot2 catroot2.bak -ErrorAction SilentlyContinue
}
# Rename the Windows Update Download Folder
Write-Progress -Id 3 -ParentId 0 -Activity "Renaming/Removing Files" -Status "Renaming the Windows Update Download Folder..." -PercentComplete 20
Rename-Item $env:systemroot\SoftwareDistribution\Download Download.bak -ErrorAction SilentlyContinue
# Delete the legacy Windows Update Log
Write-Progress -Id 3 -ParentId 0 -Activity "Renaming/Removing Files" -Status "Removing the old Windows Update log..." -PercentComplete 80
Remove-Item $env:systemroot\WindowsUpdate.log -ErrorAction SilentlyContinue
Write-Progress -Id 3 -ParentId 0 -Activity "Renaming/Removing Files" -Status "Completed" -PercentComplete 100
if ($Aggressive) {
# Reset the Security Descriptors on the Windows Update Services
Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Resetting the WU Service Security Descriptors..." -PercentComplete 25
Write-Progress -Id 4 -ParentId 0 -Activity "Resetting the WU Service Security Descriptors" -Status "Resetting the BITS Security Descriptor..." -PercentComplete 0
Start-Process -NoNewWindow -FilePath "sc.exe" -ArgumentList "sdset", "bits", "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)"
Write-Progress -Id 4 -ParentId 0 -Activity "Resetting the WU Service Security Descriptors" -Status "Resetting the wuauserv Security Descriptor..." -PercentComplete 50
Start-Process -NoNewWindow -FilePath "sc.exe" -ArgumentList "sdset", "wuauserv", "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)"
Write-Progress -Id 4 -ParentId 0 -Activity "Resetting the WU Service Security Descriptors" -Status "Completed" -PercentComplete 100
}
# Reregister the BITS and Windows Update DLLs
Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Reregistering DLLs..." -PercentComplete 40
$oldLocation = Get-Location
Set-Location $env:systemroot\system32
$i = 0
$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) {
Write-Progress -Id 5 -ParentId 0 -Activity "Reregistering DLLs" -Status "Registering $dll..." -PercentComplete ($i / $DLLs.Count * 100)
$i++
Start-Process -NoNewWindow -FilePath "regsvr32.exe" -ArgumentList "/s", $dll
}
Set-Location $oldLocation
Write-Progress -Id 5 -ParentId 0 -Activity "Reregistering DLLs" -Status "Completed" -PercentComplete 100
# Remove the WSUS client settings
if (Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate") {
Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Removing WSUS client settings..." -PercentComplete 60
Write-Progress -Id 6 -ParentId 0 -Activity "Removing WSUS client settings" -PercentComplete 0
Start-Process -NoNewWindow -FilePath "REG" -ArgumentList "DELETE", "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate", "/v", "AccountDomainSid", "/f" -RedirectStandardError $true
Start-Process -NoNewWindow -FilePath "REG" -ArgumentList "DELETE", "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate", "/v", "PingID", "/f" -RedirectStandardError $true
Start-Process -NoNewWindow -FilePath "REG" -ArgumentList "DELETE", "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate", "/v", "SusClientId", "/f" -RedirectStandardError $true
Write-Progress -Id 6 -ParentId 0 -Activity "Removing WSUS client settings" -Status "Completed" -PercentComplete 100
}
# Reset WinSock
Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Resetting WinSock..." -PercentComplete 65
Write-Progress -Id 7 -ParentId 0 -Activity "Resetting WinSock" -Status "Resetting WinSock..." -PercentComplete 0
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "winsock", "reset" -RedirectStandardOutput $true
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "winhttp", "reset", "proxy" -RedirectStandardOutput $true
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "int", "ip", "reset" -RedirectStandardOutput $true
Write-Progress -Id 7 -ParentId 0 -Activity "Resetting WinSock" -Status "Completed" -PercentComplete 100
# Get and delete all BITS jobs
Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Deleting BITS jobs..." -PercentComplete 75
Write-Progress -Id 8 -ParentId 0 -Activity "Deleting BITS jobs" -Status "Deleting BITS jobs..." -PercentComplete 0
Get-BitsTransfer | Remove-BitsTransfer
Write-Progress -Id 8 -ParentId 0 -Activity "Deleting BITS jobs" -Status "Completed" -PercentComplete 100
# Change the startup type of the Windows Update Services and start them
Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Starting Windows Update Services..." -PercentComplete 90
Write-Progress -Id 9 -ParentId 0 -Activity "Starting Windows Update Services" -Status "Starting BITS..." -PercentComplete 0
Get-Service BITS | Set-Service -StartupType Manual -PassThru | Start-Service
Write-Progress -Id 9 -ParentId 0 -Activity "Starting Windows Update Services" -Status "Starting wuauserv..." -PercentComplete 25
Get-Service wuauserv | Set-Service -StartupType Manual -PassThru | Start-Service
Write-Progress -Id 9 -ParentId 0 -Activity "Starting Windows Update Services" -Status "Starting AppIDSvc..." -PercentComplete 50
# The AppIDSvc service is protected, so the startup type has to be changed in the registry
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\AppIDSvc" -Name "Start" -Value "3" # Manual
Start-Service AppIDSvc
Write-Progress -Id 9 -ParentId 0 -Activity "Starting Windows Update Services" -Status "Starting CryptSvc..." -PercentComplete 75
Get-Service CryptSvc | Set-Service -StartupType Manual -PassThru | Start-Service
Write-Progress -Id 9 -ParentId 0 -Activity "Starting Windows Update Services" -Status "Completed" -PercentComplete 100
# Force Windows Update to check for updates
Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Forcing discovery..." -PercentComplete 95
Write-Progress -Id 10 -ParentId 0 -Activity "Forcing discovery" -Status "Forcing discovery..." -PercentComplete 0
(New-Object -ComObject Microsoft.Update.AutoUpdate).DetectNow()
Start-Process -NoNewWindow -FilePath "wuauclt" -ArgumentList "/resetauthorization", "/detectnow"
Write-Progress -Id 10 -ParentId 0 -Activity "Forcing discovery" -Status "Completed" -PercentComplete 100
Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Completed" -PercentComplete 100
$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 "==============================================="
# Remove the progress bars
Write-Progress -Id 0 -Activity "Repairing Windows Update" -Completed
Write-Progress -Id 1 -Activity "Scanning for corruption" -Completed
Write-Progress -Id 2 -Activity "Stopping Services" -Completed
Write-Progress -Id 3 -Activity "Renaming/Removing Files" -Completed
Write-Progress -Id 4 -Activity "Resetting the WU Service Security Descriptors" -Completed
Write-Progress -Id 5 -Activity "Reregistering DLLs" -Completed
Write-Progress -Id 6 -Activity "Removing WSUS client settings" -Completed
Write-Progress -Id 7 -Activity "Resetting WinSock" -Completed
Write-Progress -Id 8 -Activity "Deleting BITS jobs" -Completed
Write-Progress -Id 9 -Activity "Starting Windows Update Services" -Completed
Write-Progress -Id 10 -Activity "Forcing discovery" -Completed
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json)

View File

@ -0,0 +1,58 @@
# WinGet Reinstall
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "WinGet Reinstall",
"category": "Fixes",
"panel": "1",
"Order": "a044_",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/features/Fixes/Winget"
}
```
</details>
## Function: Invoke-WPFFixesWinget
```powershell
function Invoke-WPFFixesWinget {
<#
.SYNOPSIS
Fixes Winget by running choco install winget
.DESCRIPTION
BravoNorris for the fantastic idea of a button to reinstall winget
#>
# Install Choco if not already present
Install-WinUtilChoco
Start-Process -FilePath "choco" -ArgumentList "install winget -y --force" -NoNewWindow -Wait
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json)

View File

@ -0,0 +1,65 @@
# Control Panel
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Control Panel",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/features/Legacy-Windows-Panels/control"
}
```
</details>
## Function: Invoke-WPFControlPanel
```powershell
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"}
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json)

View File

@ -0,0 +1,65 @@
# Network Connections
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Network Connections",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/features/Legacy-Windows-Panels/network"
}
```
</details>
## Function: Invoke-WPFControlPanel
```powershell
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"}
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json)

View File

@ -0,0 +1,65 @@
# Power Panel
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Power Panel",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/features/Legacy-Windows-Panels/power"
}
```
</details>
## Function: Invoke-WPFControlPanel
```powershell
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"}
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json)

View File

@ -0,0 +1,65 @@
# Region
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Region",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/features/Legacy-Windows-Panels/region"
}
```
</details>
## Function: Invoke-WPFControlPanel
```powershell
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"}
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json)

View File

@ -0,0 +1,65 @@
# Sound Settings
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Sound Settings",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/features/Legacy-Windows-Panels/sound"
}
```
</details>
## Function: Invoke-WPFControlPanel
```powershell
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"}
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json)

View File

@ -0,0 +1,65 @@
# System Properties
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "System Properties",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/features/Legacy-Windows-Panels/system"
}
```
</details>
## Function: Invoke-WPFControlPanel
```powershell
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"}
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json)

View File

@ -0,0 +1,65 @@
# User Accounts
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "User Accounts",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/features/Legacy-Windows-Panels/user"
}
```
</details>
## Function: Invoke-WPFControlPanel
```powershell
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"}
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json)

View File

@ -0,0 +1,76 @@
# Bing Search in Start Menu
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
If enable then includes web search results from Bing in your Start Menu search.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Bing Search in Start Menu",
"Description": "If enable then includes web search results from Bing in your Start Menu search.",
"category": "Customize Preferences",
"panel": "2",
"Order": "a101_",
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/BingSearch"
}
```
</details>
## Function: Invoke-WinUtilBingSearch
```powershell
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
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,78 @@
# Dark Theme for Windows
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Enable/Disable Dark Mode.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Dark Theme for Windows",
"Description": "Enable/Disable Dark Mode.",
"category": "Customize Preferences",
"panel": "2",
"Order": "a100_",
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/DarkMode"
}
```
</details>
## Function: Invoke-WinUtilDarkMode
```powershell
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
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,76 @@
# Detailed BSoD
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
If Enabled then you will see a detailed Blue Screen of Death (BSOD) with more information.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Detailed BSoD",
"Description": "If Enabled then you will see a detailed Blue Screen of Death (BSOD) with more information.",
"category": "Customize Preferences",
"panel": "2",
"Order": "a205_",
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/DetailedBSoD"
}
```
</details>
## Function: Invoke-WinUtilDetailedBSoD
```powershell
Function Invoke-WinUtilDetailedBSoD {
<#
.SYNOPSIS
Enables/Disables Detailed BSoD
(Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\CrashControl' -Name 'DisplayParameters').DisplayParameters
#>
Param($Enabled)
try {
if ($Enabled -eq $false) {
Write-Host "Enabling Detailed BSoD"
$value = 1
} else {
Write-Host "Disabling Detailed BSoD"
$value =0
}
$Path = "HKLM:\SYSTEM\CurrentControlSet\Control\CrashControl"
Set-ItemProperty -Path $Path -Name DisplayParameters -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
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,76 @@
# Show Hidden Files
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
If Enabled then Hidden Files will be shown.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Show Hidden Files",
"Description": "If Enabled then Hidden Files will be shown.",
"category": "Customize Preferences",
"panel": "2",
"Order": "a200_",
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/HiddenFiles"
}
```
</details>
## Function: Invoke-WinUtilHiddenFiles
```powershell
function Invoke-WinUtilHiddenFiles {
<#
.SYNOPSIS
Enable/Disable Hidden Files
.PARAMETER Enabled
Indicates whether to enable or disable Hidden Files
#>
Param($Enabled)
try {
if ($Enabled -eq $false) {
Write-Host "Enabling Hidden Files"
$value = 1
} else {
Write-Host "Disabling Hidden Files"
$value = 0
}
$Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
Set-ItemProperty -Path $Path -Name Hidden -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
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,84 @@
# Mouse Acceleration
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
If Enabled then Cursor movement is affected by the speed of your physical mouse movements.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Mouse Acceleration",
"Description": "If Enabled then Cursor movement is affected by the speed of your physical mouse movements.",
"category": "Customize Preferences",
"panel": "2",
"Order": "a107_",
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/MouseAcceleration"
}
```
</details>
## Function: Invoke-WinUtilMouseAcceleration
```powershell
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
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,77 @@
# NumLock on Startup
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Toggle the Num Lock key state when your computer starts.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "NumLock on Startup",
"Description": "Toggle the Num Lock key state when your computer starts.",
"category": "Customize Preferences",
"panel": "2",
"Order": "a102_",
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/NumLock"
}
```
</details>
## Function: Invoke-WinUtilNumLock
```powershell
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
}
New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS
$HKUPath = "HKU:\.Default\Control Panel\Keyboard"
$HKCUPath = "HKCU:\Control Panel\Keyboard"
Set-ItemProperty -Path $HKUPath -Name InitialKeyboardIndicators -Value $value
Set-ItemProperty -Path $HKCUPath -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
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,73 @@
# Show File Extensions
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
If enabled then File extensions (e.g., .txt, .jpg) are visible.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Show File Extensions",
"Description": "If enabled then File extensions (e.g., .txt, .jpg) are visible.",
"category": "Customize Preferences",
"panel": "2",
"Order": "a201_",
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/ShowExt"
}
```
</details>
## Function: Invoke-WinUtilShowExt
```powershell
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
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,76 @@
# Snap Assist Flyout
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
If enabled then Snap preview is disabled when maximize button is hovered.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Snap Assist Flyout",
"Description": "If enabled then Snap preview is disabled when maximize button is hovered.",
"category": "Customize Preferences",
"panel": "2",
"Order": "a105_",
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/SnapFlyout"
}
```
</details>
## Function: Invoke-WinUtilSnapFlyout
```powershell
function Invoke-WinUtilSnapFlyout {
<#
.SYNOPSIS
Disables/Enables Snap Assist Flyout on startup
.PARAMETER Enabled
Indicates whether to enable or disable Snap Assist Flyout on startup
#>
Param($Enabled)
try {
if ($Enabled -eq $false) {
Write-Host "Enabling Snap Assist Flyout On startup"
$value = 1
} else {
Write-Host "Disabling Snap Assist Flyout On startup"
$value = 0
}
# taskkill.exe /F /IM "explorer.exe"
$Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
taskkill.exe /F /IM "explorer.exe"
Set-ItemProperty -Path $Path -Name EnableSnapAssistFlyout -Value $value
Start-Process "explorer.exe"
} 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
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,76 @@
# Snap Assist Suggestion
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
If enabled then you will get suggestions to snap other applications in the left over spaces.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Snap Assist Suggestion",
"Description": "If enabled then you will get suggestions to snap other applications in the left over spaces.",
"category": "Customize Preferences",
"panel": "2",
"Order": "a106_",
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/SnapSuggestion"
}
```
</details>
## Function: Invoke-WinUtilSnapSuggestion
```powershell
function Invoke-WinUtilSnapSuggestion {
<#
.SYNOPSIS
Disables/Enables Snap Assist Suggestions on startup
.PARAMETER Enabled
Indicates whether to enable or disable Snap Assist Suggestions on startup
#>
Param($Enabled)
try {
if ($Enabled -eq $false) {
Write-Host "Enabling Snap Assist Suggestion On startup"
$value = 1
} else {
Write-Host "Disabling Snap Assist Suggestion On startup"
$value = 0
}
# taskkill.exe /F /IM "explorer.exe"
$Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
taskkill.exe /F /IM "explorer.exe"
Set-ItemProperty -Path $Path -Name SnapAssist -Value $value
Start-Process "explorer.exe"
} 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
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,73 @@
# Snap Window
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
If enabled you can align windows by dragging them. | Relogin Required
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Snap Window",
"Description": "If enabled you can align windows by dragging them. | Relogin Required",
"category": "Customize Preferences",
"panel": "2",
"Order": "a104_",
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/SnapWindow"
}
```
</details>
## Function: Invoke-WinUtilSnapWindow
```powershell
function Invoke-WinUtilSnapWindow {
<#
.SYNOPSIS
Disables/Enables Snapping Windows on startup
.PARAMETER Enabled
Indicates whether to enable or disable Snapping Windows on startup
#>
Param($Enabled)
try {
if ($Enabled -eq $false) {
Write-Host "Enabling Snap Windows On startup | Relogin Required"
$value = 1
} else {
Write-Host "Disabling Snap Windows On startup | Relogin Required"
$value = 0
}
$Path = "HKCU:\Control Panel\Desktop"
Set-ItemProperty -Path $Path -Name WindowArrangementActive -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
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,73 @@
# Sticky Keys
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
If Enabled then Sticky Keys is activated - Sticky keys is an accessibility feature of some graphical user interfaces which assists users who have physical disabilities or help users reduce repetitive strain injury.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Sticky Keys",
"Description": "If Enabled then Sticky Keys is activated - Sticky keys is an accessibility feature of some graphical user interfaces which assists users who have physical disabilities or help users reduce repetitive strain injury.",
"category": "Customize Preferences",
"panel": "2",
"Order": "a108_",
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/StickyKeys"
}
```
</details>
## Function: Invoke-WinUtilStickyKeys
```powershell
Function Invoke-WinUtilStickyKeys {
<#
.SYNOPSIS
Disables/Enables Sticky Keyss on startup
.PARAMETER Enabled
Indicates whether to enable or disable Sticky Keys on startup
#>
Param($Enabled)
try {
if ($Enabled -eq $false) {
Write-Host "Enabling Sticky Keys On startup"
$value = 510
} else {
Write-Host "Disabling Sticky Keys On startup"
$value = 58
}
$Path = "HKCU:\Control Panel\Accessibility\StickyKeys"
Set-ItemProperty -Path $Path -Name Flags -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
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,76 @@
# Task View Button in Taskbar
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
If Enabled then Task View Button in Taskbar will be shown.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Task View Button in Taskbar",
"Description": "If Enabled then Task View Button in Taskbar will be shown.",
"category": "Customize Preferences",
"panel": "2",
"Order": "a203_",
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/TaskView"
}
```
</details>
## Function: Invoke-WinUtilTaskView
```powershell
function Invoke-WinUtilTaskView {
<#
.SYNOPSIS
Enable/Disable Task View
.PARAMETER Enabled
Indicates whether to enable or disable Task View
#>
Param($Enabled)
try {
if ($Enabled -eq $false) {
Write-Host "Enabling Task View"
$value = 1
} else {
Write-Host "Disabling Task View"
$value = 0
}
$Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
Set-ItemProperty -Path $Path -Name ShowTaskViewButton -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
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,76 @@
# Center Taskbar Items
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
[Windows 11] If Enabled then the Taskbar Items will be shown on the Center, otherwise the Taskbar Items will be shown on the Left.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Center Taskbar Items",
"Description": "[Windows 11] If Enabled then the Taskbar Items will be shown on the Center, otherwise the Taskbar Items will be shown on the Left.",
"category": "Customize Preferences",
"panel": "2",
"Order": "a204_",
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/TaskbarAlignment"
}
```
</details>
## Function: Invoke-WinUtilTaskbarAlignment
```powershell
function Invoke-WinUtilTaskbarAlignment {
<#
.SYNOPSIS
Switches between Center & Left Taskbar Alignment
.PARAMETER Enabled
Indicates whether to make Taskbar Alignment Center or Left
#>
Param($Enabled)
try {
if ($Enabled -eq $false) {
Write-Host "Making Taskbar Alignment to the Center"
$value = 1
} else {
Write-Host "Making Taskbar Alignment to the Left"
$value = 0
}
$Path = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
Set-ItemProperty -Path $Path -Name "TaskbarAl" -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
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,76 @@
# Search Button in Taskbar
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
If Enabled Search Button will be on the taskbar.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Search Button in Taskbar",
"Description": "If Enabled Search Button will be on the taskbar.",
"category": "Customize Preferences",
"panel": "2",
"Order": "a202_",
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/TaskbarSearch"
}
```
</details>
## Function: Invoke-WinUtilTaskbarSearch
```powershell
function Invoke-WinUtilTaskbarSearch {
<#
.SYNOPSIS
Enable/Disable Taskbar Search Button.
.PARAMETER Enabled
Indicates whether to enable or disable Taskbar Search Button.
#>
Param($Enabled)
try {
if ($Enabled -eq $false) {
Write-Host "Enabling Search Button"
$value = 1
} else {
Write-Host "Disabling Search Button"
$value = 0
}
$Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Search\"
Set-ItemProperty -Path $Path -Name SearchboxTaskbarMode -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
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,76 @@
# Widgets Button in Taskbar
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
If Enabled then Widgets Button in Taskbar will be shown.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Widgets Button in Taskbar",
"Description": "If Enabled then Widgets Button in Taskbar will be shown.",
"category": "Customize Preferences",
"panel": "2",
"Order": "a204_",
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/TaskbarWidgets"
}
```
</details>
## Function: Invoke-WinUtilTaskbarWidgets
```powershell
function Invoke-WinUtilTaskbarWidgets {
<#
.SYNOPSIS
Enable/Disable Taskbar Widgets
.PARAMETER Enabled
Indicates whether to enable or disable Taskbar Widgets
#>
Param($Enabled)
try {
if ($Enabled -eq $false) {
Write-Host "Enabling Taskbar Widgets"
$value = 1
} else {
Write-Host "Disabling Taskbar Widgets"
$value = 0
}
$Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
Set-ItemProperty -Path $Path -Name TaskbarDa -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
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,73 @@
# Verbose Messages During Logon
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Show detailed messages during the login process for troubleshooting and diagnostics.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Verbose Messages During Logon",
"Description": "Show detailed messages during the login process for troubleshooting and diagnostics.",
"category": "Customize Preferences",
"panel": "2",
"Order": "a103_",
"Type": "Toggle",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/VerboseLogon"
}
```
</details>
## Function: Invoke-WinUtilVerboseLogon
```powershell
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
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,93 @@
# Disable Activity History
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
This erases recent docs, clipboard, and run history.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Disable Activity History",
"Description": "This erases recent docs, clipboard, and run history.",
"category": "Essential Tweaks",
"panel": "1",
"Order": "a005_",
"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"
}
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/AH"
}
```
</details>
## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
You can find information about the registry on [Wikipedia](https://www.wikiwand.com/en/Windows_Registry) and [Microsoft's Website](https://learn.microsoft.com/en-us/windows/win32/sysinfo/registry).
### Registry Key: EnableActivityFeed
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: PublishUserActivities
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: UploadUserActivities
**Type:** DWord
**Original Value:** 1
**New Value:** 0
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,63 @@
# Disable ConsumerFeatures
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Windows 10 will not automatically install any games, third-party apps, or application links from the Windows Store for the signed-in user. Some default Apps will be inaccessible (eg. Phone Link)
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Disable ConsumerFeatures",
"Description": "Windows 10 will not automatically install any games, third-party apps, or application links from the Windows Store for the signed-in user. Some default Apps will be inaccessible (eg. Phone Link)",
"category": "Essential Tweaks",
"panel": "1",
"Order": "a003_",
"registry": [
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\CloudContent",
"OriginalValue": "0",
"Name": "DisableWindowsConsumerFeatures",
"Value": "1",
"Type": "DWord"
}
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/ConsumerFeatures"
}
```
</details>
## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
You can find information about the registry on [Wikipedia](https://www.wikiwand.com/en/Windows_Registry) and [Microsoft's Website](https://learn.microsoft.com/en-us/windows/win32/sysinfo/registry).
### Registry Key: DisableWindowsConsumerFeatures
**Type:** DWord
**Original Value:** 0
**New Value:** 1
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,123 @@
# Disable GameDVR
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
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.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Disable GameDVR",
"Description": "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.",
"category": "Essential Tweaks",
"panel": "1",
"Order": "a005_",
"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_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"
}
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/DVR"
}
```
</details>
## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
You can find information about the registry on [Wikipedia](https://www.wikiwand.com/en/Windows_Registry) and [Microsoft's Website](https://learn.microsoft.com/en-us/windows/win32/sysinfo/registry).
### Registry Key: GameDVR_FSEBehavior
**Type:** DWord
**Original Value:** 1
**New Value:** 2
### Registry Key: GameDVR_Enabled
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: GameDVR_HonorUserFSEBehaviorMode
**Type:** DWord
**Original Value:** 0
**New Value:** 1
### Registry Key: GameDVR_EFSEFeatureFlags
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: AllowGameDVR
**Type:** DWord
**Original Value:** 1
**New Value:** 0
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,50 @@
# Delete Temporary Files
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Erases TEMP Folders
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Delete Temporary Files",
"Description": "Erases TEMP Folders",
"category": "Essential Tweaks",
"panel": "1",
"Order": "a002_",
"InvokeScript": [
"Get-ChildItem -Path \"C:\\Windows\\Temp\" *.* -Recurse | Remove-Item -Force -Recurse
Get-ChildItem -Path $env:TEMP *.* -Recurse | Remove-Item -Force -Recurse"
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/DeleteTempFiles"
}
```
</details>
## Invoke Script
```powershell
Get-ChildItem -Path "C:\Windows\Temp" *.* -Recurse | Remove-Item -Force -Recurse
Get-ChildItem -Path $env:TEMP *.* -Recurse | Remove-Item -Force -Recurse
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,54 @@
# Run Disk Cleanup
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Runs Disk Cleanup on Drive C: and removes old Windows Updates.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Run Disk Cleanup",
"Description": "Runs Disk Cleanup on Drive C: and removes old Windows Updates.",
"category": "Essential Tweaks",
"panel": "1",
"Order": "a009_",
"InvokeScript": [
"
cleanmgr.exe /d C: /VERYLOWDISK
Dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase
"
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/DiskCleanup"
}
```
</details>
## Invoke Script
```powershell
cleanmgr.exe /d C: /VERYLOWDISK
Dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,363 @@
# Debloat Edge
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Disables various telemetry options, popups, and other annoyances in Edge.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Debloat Edge",
"Description": "Disables various telemetry options, popups, and other annoyances in Edge.",
"category": "Essential Tweaks",
"panel": "1",
"Order": "a016_",
"registry": [
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\EdgeUpdate",
"Name": "CreateDesktopShortcutDefault",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "EdgeEnhanceImagesEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "PersonalizationReportingEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "ShowRecommendationsEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "HideFirstRunExperience",
"Type": "DWord",
"Value": "1",
"OriginalValue": "0"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "UserFeedbackAllowed",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "ConfigureDoNotTrack",
"Type": "DWord",
"Value": "1",
"OriginalValue": "0"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "AlternateErrorPagesEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "EdgeCollectionsEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "EdgeFollowEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "EdgeShoppingAssistantEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "MicrosoftEdgeInsiderPromotionEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "PersonalizationReportingEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "ShowMicrosoftRewards",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "WebWidgetAllowed",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "DiagnosticData",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "EdgeAssetDeliveryServiceEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "EdgeCollectionsEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "CryptoWalletEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "ConfigureDoNotTrack",
"Type": "DWord",
"Value": "1",
"OriginalValue": "0"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
"Name": "WalletDonationEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
}
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/EdgeDebloat"
}
```
</details>
## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
You can find information about the registry on [Wikipedia](https://www.wikiwand.com/en/Windows_Registry) and [Microsoft's Website](https://learn.microsoft.com/en-us/windows/win32/sysinfo/registry).
### Registry Key: CreateDesktopShortcutDefault
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: EdgeEnhanceImagesEnabled
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: PersonalizationReportingEnabled
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: ShowRecommendationsEnabled
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: HideFirstRunExperience
**Type:** DWord
**Original Value:** 0
**New Value:** 1
### Registry Key: UserFeedbackAllowed
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: ConfigureDoNotTrack
**Type:** DWord
**Original Value:** 0
**New Value:** 1
### Registry Key: AlternateErrorPagesEnabled
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: EdgeCollectionsEnabled
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: EdgeFollowEnabled
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: EdgeShoppingAssistantEnabled
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: MicrosoftEdgeInsiderPromotionEnabled
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: PersonalizationReportingEnabled
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: ShowMicrosoftRewards
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: WebWidgetAllowed
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: DiagnosticData
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: EdgeAssetDeliveryServiceEnabled
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: EdgeCollectionsEnabled
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: CryptoWalletEnabled
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: ConfigureDoNotTrack
**Type:** DWord
**Original Value:** 0
**New Value:** 1
### Registry Key: WalletDonationEnabled
**Type:** DWord
**Original Value:** 1
**New Value:** 0
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,97 @@
# Enable End Task With Right Click
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Enables option to end task when right clicking a program in the taskbar
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Enable End Task With Right Click",
"Description": "Enables option to end task when right clicking a program in the taskbar",
"category": "Essential Tweaks",
"panel": "1",
"Order": "a006_",
"InvokeScript": [
"$path = \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\TaskbarDeveloperSettings\"
$name = \"TaskbarEndTask\"
$value = 1
# Ensure the registry key exists
if (-not (Test-Path $path)) {
New-Item -Path $path -Force | Out-Null
}
# Set the property, creating it if it doesn't exist
New-ItemProperty -Path $path -Name $name -PropertyType DWord -Value $value -Force | Out-Null"
],
"UndoScript": [
"$path = \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\TaskbarDeveloperSettings\"
$name = \"TaskbarEndTask\"
$value = 0
# Ensure the registry key exists
if (-not (Test-Path $path)) {
New-Item -Path $path -Force | Out-Null
}
# Set the property, creating it if it doesn't exist
New-ItemProperty -Path $path -Name $name -PropertyType DWord -Value $value -Force | Out-Null"
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/EndTaskOnTaskbar"
}
```
</details>
## Invoke Script
```powershell
$path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\TaskbarDeveloperSettings"
$name = "TaskbarEndTask"
$value = 1
# Ensure the registry key exists
if (-not (Test-Path $path)) {
New-Item -Path $path -Force | Out-Null
}
# Set the property, creating it if it doesn't exist
New-ItemProperty -Path $path -Name $name -PropertyType DWord -Value $value -Force | Out-Null
```
## Undo Script
```powershell
$path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\TaskbarDeveloperSettings"
$name = "TaskbarEndTask"
$value = 0
# Ensure the registry key exists
if (-not (Test-Path $path)) {
New-Item -Path $path -Force | Out-Null
}
# Set the property, creating it if it doesn't exist
New-ItemProperty -Path $path -Name $name -PropertyType DWord -Value $value -Force | Out-Null
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,96 @@
# Disable Hibernation
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
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.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Disable Hibernation",
"Description": "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.",
"category": "Essential Tweaks",
"panel": "1",
"Order": "a005_",
"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"
],
"UndoScript": [
"powercfg.exe /hibernate on"
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/Hiber"
}
```
</details>
## Invoke Script
```powershell
powercfg.exe /hibernate off
```
## Undo Script
```powershell
powercfg.exe /hibernate on
```
## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
You can find information about the registry on [Wikipedia](https://www.wikiwand.com/en/Windows_Registry) and [Microsoft's Website](https://learn.microsoft.com/en-us/windows/win32/sysinfo/registry).
### Registry Key: HibernateEnabled
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: ShowHibernateOption
**Type:** DWord
**Original Value:** 1
**New Value:** 0
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,70 @@
# Disable Homegroup
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Disables HomeGroup - HomeGroup is a password-protected home networking service that lets you share your stuff with other PCs that are currently running and connected to your network.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Disable Homegroup",
"Description": "Disables HomeGroup - HomeGroup is a password-protected home networking service that lets you share your stuff with other PCs that are currently running and connected to your network.",
"category": "Essential Tweaks",
"panel": "1",
"Order": "a005_",
"service": [
{
"Name": "HomeGroupListener",
"StartupType": "Manual",
"OriginalType": "Automatic"
},
{
"Name": "HomeGroupProvider",
"StartupType": "Manual",
"OriginalType": "Automatic"
}
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/Home"
}
```
</details>
## Service Changes
Windows services are background processes for system functions or applications. Setting some to manual optimizes performance by starting them only when needed.
You can find information about services on [Wikipedia](https://www.wikiwand.com/en/Windows_service) and [Microsoft's Website](https://learn.microsoft.com/en-us/dotnet/framework/windows-services/introduction-to-windows-service-applications).
### Service Name: HomeGroupListener
**Startup Type:** Manual
**Original Type:** Automatic
### Service Name: HomeGroupProvider
**Startup Type:** Manual
**Original Type:** Automatic
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,132 @@
# Set Hibernation as default (good for laptops)
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Most modern laptops have connected standby enabled which drains the battery, this sets hibernation as default which will not drain the battery. See issue https://github.com/ChrisTitusTech/winutil/issues/1399
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Set Hibernation as default (good for laptops)",
"Description": "Most modern laptops have connected standby enabled which drains the battery, this sets hibernation as default which will not drain the battery. See issue https://github.com/ChrisTitusTech/winutil/issues/1399",
"category": "Essential Tweaks",
"panel": "1",
"Order": "a014_",
"registry": [
{
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Power\\PowerSettings\\238C9FA8-0AAD-41ED-83F4-97BE242C8F20\\7bc4a2f9-d8fc-4469-b07b-33eb785aaca0",
"OriginalValue": "1",
"Name": "Attributes",
"Value": "2",
"Type": "DWord"
},
{
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Power\\PowerSettings\\abfc2519-3608-4c2a-94ea-171b0ed546ab\\94ac6d29-73ce-41a6-809f-6363ba21b47e",
"OriginalValue": "0",
"Name": "Attributes ",
"Value": "2",
"Type": "DWord"
}
],
"InvokeScript": [
"
Write-Host \"Turn on Hibernation\"
Start-Process -FilePath powercfg -ArgumentList \"/hibernate on\" -NoNewWindow -Wait
# Set hibernation as the default action
Start-Process -FilePath powercfg -ArgumentList \"/change standby-timeout-ac 60\" -NoNewWindow -Wait
Start-Process -FilePath powercfg -ArgumentList \"/change standby-timeout-dc 60\" -NoNewWindow -Wait
Start-Process -FilePath powercfg -ArgumentList \"/change monitor-timeout-ac 10\" -NoNewWindow -Wait
Start-Process -FilePath powercfg -ArgumentList \"/change monitor-timeout-dc 1\" -NoNewWindow -Wait
"
],
"UndoScript": [
"
Write-Host \"Turn off Hibernation\"
Start-Process -FilePath powercfg -ArgumentList \"/hibernate off\" -NoNewWindow -Wait
# Set standby to detault values
Start-Process -FilePath powercfg -ArgumentList \"/change standby-timeout-ac 15\" -NoNewWindow -Wait
Start-Process -FilePath powercfg -ArgumentList \"/change standby-timeout-dc 15\" -NoNewWindow -Wait
Start-Process -FilePath powercfg -ArgumentList \"/change monitor-timeout-ac 15\" -NoNewWindow -Wait
Start-Process -FilePath powercfg -ArgumentList \"/change monitor-timeout-dc 15\" -NoNewWindow -Wait
"
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/LaptopHibernation"
}
```
</details>
## Invoke Script
```powershell
Write-Host "Turn on Hibernation"
Start-Process -FilePath powercfg -ArgumentList "/hibernate on" -NoNewWindow -Wait
# Set hibernation as the default action
Start-Process -FilePath powercfg -ArgumentList "/change standby-timeout-ac 60" -NoNewWindow -Wait
Start-Process -FilePath powercfg -ArgumentList "/change standby-timeout-dc 60" -NoNewWindow -Wait
Start-Process -FilePath powercfg -ArgumentList "/change monitor-timeout-ac 10" -NoNewWindow -Wait
Start-Process -FilePath powercfg -ArgumentList "/change monitor-timeout-dc 1" -NoNewWindow -Wait
```
## Undo Script
```powershell
Write-Host "Turn off Hibernation"
Start-Process -FilePath powercfg -ArgumentList "/hibernate off" -NoNewWindow -Wait
# Set standby to detault values
Start-Process -FilePath powercfg -ArgumentList "/change standby-timeout-ac 15" -NoNewWindow -Wait
Start-Process -FilePath powercfg -ArgumentList "/change standby-timeout-dc 15" -NoNewWindow -Wait
Start-Process -FilePath powercfg -ArgumentList "/change monitor-timeout-ac 15" -NoNewWindow -Wait
Start-Process -FilePath powercfg -ArgumentList "/change monitor-timeout-dc 15" -NoNewWindow -Wait
```
## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
You can find information about the registry on [Wikipedia](https://www.wikiwand.com/en/Windows_Registry) and [Microsoft's Website](https://learn.microsoft.com/en-us/windows/win32/sysinfo/registry).
### Registry Key: Attributes
**Type:** DWord
**Original Value:** 1
**New Value:** 2
### Registry Key: Attributes
**Type:** DWord
**Original Value:** 0
**New Value:** 2
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,108 @@
# Disable Location Tracking
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Disables Location Tracking...DUH!
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Disable Location Tracking",
"Description": "Disables Location Tracking...DUH!",
"category": "Essential Tweaks",
"panel": "1",
"Order": "a005_",
"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"
}
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/Loc"
}
```
</details>
## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
You can find information about the registry on [Wikipedia](https://www.wikiwand.com/en/Windows_Registry) and [Microsoft's Website](https://learn.microsoft.com/en-us/windows/win32/sysinfo/registry).
### Registry Key: Value
**Type:** String
**Original Value:** Allow
**New Value:** Deny
### Registry Key: SensorPermissionState
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: Status
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: AutoUpdateEnabled
**Type:** DWord
**Original Value:** 1
**New Value:** 0
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,416 @@
# Change Windows Terminal default: PowerShell 5 -> PowerShell 7
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
This will edit the config file of the Windows Terminal replacing PowerShell 5 with PowerShell 7 and installing PS7 if necessary
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Change Windows Terminal default: PowerShell 5 -> PowerShell 7",
"Description": "This will edit the config file of the Windows Terminal replacing PowerShell 5 with PowerShell 7 and installing PS7 if necessary",
"category": "Essential Tweaks",
"panel": "1",
"Order": "a009_",
"InvokeScript": [
"Invoke-WPFTweakPS7 -action \"PS7\""
],
"UndoScript": [
"Invoke-WPFTweakPS7 -action \"PS5\""
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/Powershell7"
}
```
</details>
## Invoke Script
```powershell
Invoke-WPFTweakPS7 -action "PS7"
```
## Undo Script
```powershell
Invoke-WPFTweakPS7 -action "PS5"
```
## Function: Invoke-WPFTweakPS7
```powershell
function Invoke-WPFTweakPS7{
<#
.SYNOPSIS
This will edit the config file of the Windows Terminal Replacing the Powershell 5 to Powershell 7 and install Powershell 7 if necessary
.PARAMETER action
PS7: Configures Powershell 7 to be the default Terminal
PS5: Configures Powershell 5 to be the default Terminal
#>
param (
[ValidateSet("PS7", "PS5")]
[string]$action
)
switch ($action) {
"PS7"{
if (Test-Path -Path "$env:ProgramFiles\PowerShell\7") {
Write-Host "Powershell 7 is already installed."
} else {
Write-Host "Installing Powershell 7..."
Invoke-WinUtilWingetProgram -Action Install -Programs @("Microsoft.PowerShell")
}
$targetTerminalName = "PowerShell"
}
"PS5"{
$targetTerminalName = "Windows PowerShell"
}
}
# Check if the Windows Terminal is installed and return if not (Prerequisite for the following code)
if (-not (Get-Command "wt" -ErrorAction SilentlyContinue)) {
Write-Host "Windows Terminal not installed. Skipping Terminal preference"
return
}
# Check if the Windows Terminal settings.json file exists and return if not (Prereqisite for the following code)
$settingsPath = "$env:LOCALAPPDATA\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json"
if (-not (Test-Path -Path $settingsPath)) {
Write-Host "Windows Terminal Settings file not found at $settingsPath"
return
}
Write-Host "Settings file found."
$settingsContent = Get-Content -Path $settingsPath | ConvertFrom-Json
$ps7Profile = $settingsContent.profiles.list | Where-Object { $_.name -eq $targetTerminalName }
if ($ps7Profile) {
$settingsContent.defaultProfile = $ps7Profile.guid
$updatedSettings = $settingsContent | ConvertTo-Json -Depth 100
Set-Content -Path $settingsPath -Value $updatedSettings
Write-Host "Default profile updated to " -NoNewline
Write-Host "$targetTerminalName " -ForegroundColor White -NoNewline
Write-Host "using the name attribute."
} else {
Write-Host "No PowerShell 7 profile found in Windows Terminal settings using the name attribute."
}
}
```
## Function: Invoke-WinUtilWingetProgram
```powershell
Function Invoke-WinUtilWingetProgram {
<#
.SYNOPSIS
Runs the designated action on the provided programs using Winget
.PARAMETER Programs
A list of programs to process
.PARAMETER action
The action to perform on the programs, can be either 'Install' or 'Uninstall'
.NOTES
The triple quotes are required any time you need a " in a normal script block.
The winget Return codes are documented here: https://github.com/microsoft/winget-cli/blob/master/doc/windows/package-actionr/winget/returnCodes.md
#>
param(
[Parameter(Mandatory, Position=0)]$Programs,
[Parameter(Mandatory, Position=1)]
[ValidateSet("Install", "Uninstall")]
[String]$Action
)
Function Invoke-Winget {
<#
.SYNOPSIS
Invokes the winget.exe with the provided arguments and return the exit code
.PARAMETER wingetId
The Id of the Program that Winget should Install/Uninstall
.PARAMETER scope
Determines the installation mode. Can be "user" or "machine" (For more info look at the winget documentation)
.PARAMETER credential
The PSCredential Object of the user that should be used to run winget
.NOTES
Invoke Winget uses the public variable $Action defined outside the function to determine if a Program should be installed or removed
#>
param (
[string]$wingetId,
[string]$scope = "",
[PScredential]$credential = $null
)
$commonArguments = "--id $wingetId --silent"
$arguments = if ($Action -eq "Install") {
"install $commonArguments --accept-source-agreements --accept-package-agreements $(if ($scope) {" --scope $scope"})"
} else {
"uninstall $commonArguments"
}
$processParams = @{
FilePath = "winget"
ArgumentList = $arguments
Wait = $true
PassThru = $true
NoNewWindow = $true
}
if ($credential) {
$processParams.credential = $credential
}
return (Start-Process @processParams).ExitCode
}
Function Invoke-Install {
<#
.SYNOPSIS
Contains the Install Logic and return code handling from winget
.PARAMETER Program
The Winget ID of the Program that should be installed
#>
param (
[string]$Program
)
$status = Invoke-Winget -wingetId $Program
if ($status -eq 0) {
Write-Host "$($Program) installed successfully."
return $true
} elseif ($status -eq -1978335189) {
Write-Host "$($Program) No applicable update found"
return $true
}
Write-Host "Attempt installation of $($Program) with User scope"
$status = Invoke-Winget -wingetId $Program -scope "user"
if ($status -eq 0) {
Write-Host "$($Program) installed successfully with User scope."
return $true
} elseif ($status -eq -1978335189) {
Write-Host "$($Program) No applicable update found"
return $true
}
$userChoice = [System.Windows.MessageBox]::Show("Do you want to attempt $($Program) installation with specific user credentials? Select 'Yes' to proceed or 'No' to skip.", "User credential Prompt", [System.Windows.MessageBoxButton]::YesNo)
if ($userChoice -eq 'Yes') {
$getcreds = Get-Credential
$status = Invoke-Winget -wingetId $Program -credential $getcreds
if ($status -eq 0) {
Write-Host "$($Program) installed successfully with User prompt."
return $true
}
} else {
Write-Host "Skipping installation with specific user credentials."
}
Write-Host "Failed to install $($Program)."
return $false
}
Function Invoke-Uninstall {
<#
.SYNOPSIS
Contains the Uninstall Logic and return code handling from winget
.PARAMETER Program
The Winget ID of the Program that should be uninstalled
#>
param (
[psobject]$Program
)
try {
$status = Invoke-Winget -wingetId $Program
if ($status -eq 0) {
Write-Host "$($Program) uninstalled successfully."
return $true
} else {
Write-Host "Failed to uninstall $($Program)."
return $false
}
} catch {
Write-Host "Failed to uninstall $($Program) due to an error: $_"
return $false
}
}
$count = $Programs.Count
$failedPackages = @()
Write-Host "==========================================="
Write-Host "-- Configuring winget packages ---"
Write-Host "==========================================="
for ($i = 0; $i -lt $count; $i++) {
$Program = $Programs[$i]
$result = $false
Set-WinUtilProgressBar -label "$Action $($Program)" -percent ($i / $count * 100)
$sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -value ($i / $count)})
$result = switch ($Action) {
"Install" {Invoke-Install -Program $Program}
"Uninstall" {Invoke-Uninstall -Program $Program}
default {throw "[Install-WinUtilProgramWinget] Invalid action: $Action"}
}
if (-not $result) {
$failedPackages += $Program
}
}
Set-WinUtilProgressBar -label "$($Action)ation done" -percent 100
return $failedPackages
}
```
## Function: Set-WinUtilProgressbar
```powershell
function Set-WinUtilProgressbar{
<#
.SYNOPSIS
This function is used to Update the Progress Bar displayed in the winutil GUI.
It will be automatically hidden if the user clicks something and no process is running
.PARAMETER Label
The Text to be overlayed onto the Progress Bar
.PARAMETER PERCENT
The percentage of the Progress Bar that should be filled (0-100)
.PARAMETER Hide
If provided, the Progress Bar and the label will be hidden
#>
param(
[string]$Label,
[ValidateRange(0,100)]
[int]$Percent,
$Hide
)
if ($hide) {
$sync.form.Dispatcher.Invoke([action]{$sync.ProgressBarLabel.Visibility = "Collapsed"})
$sync.form.Dispatcher.Invoke([action]{$sync.ProgressBar.Visibility = "Collapsed"})
} else {
$sync.form.Dispatcher.Invoke([action]{$sync.ProgressBarLabel.Visibility = "Visible"})
$sync.form.Dispatcher.Invoke([action]{$sync.ProgressBar.Visibility = "Visible"})
}
$sync.form.Dispatcher.Invoke([action]{$sync.ProgressBarLabel.Content.Text = $label})
$sync.form.Dispatcher.Invoke([action]{$sync.ProgressBarLabel.Content.ToolTip = $label})
$sync.form.Dispatcher.Invoke([action]{ $sync.ProgressBar.Value = $percent})
}
```
## Function: Set-WinUtilTaskbarItem
```powershell
function Set-WinUtilTaskbaritem {
<#
.SYNOPSIS
Modifies the Taskbaritem of the WPF Form
.PARAMETER value
Value can be between 0 and 1, 0 being no progress done yet and 1 being fully completed
Value does not affect item without setting the state to 'Normal', 'Error' or 'Paused'
Set-WinUtilTaskbaritem -value 0.5
.PARAMETER state
State can be 'None' > No progress, 'Indeterminate' > inf. loading gray, 'Normal' > Gray, 'Error' > Red, 'Paused' > Yellow
no value needed:
- Set-WinUtilTaskbaritem -state "None"
- Set-WinUtilTaskbaritem -state "Indeterminate"
value needed:
- Set-WinUtilTaskbaritem -state "Error"
- Set-WinUtilTaskbaritem -state "Normal"
- Set-WinUtilTaskbaritem -state "Paused"
.PARAMETER overlay
Overlay icon to display on the taskbar item, there are the presets 'None', 'logo' and 'checkmark' or you can specify a path/link to an image file.
CTT logo preset:
- Set-WinUtilTaskbaritem -overlay "logo"
Checkmark preset:
- Set-WinUtilTaskbaritem -overlay "checkmark"
Warning preset:
- Set-WinUtilTaskbaritem -overlay "warning"
No overlay:
- Set-WinUtilTaskbaritem -overlay "None"
Custom icon (needs to be supported by WPF):
- Set-WinUtilTaskbaritem -overlay "C:\path\to\icon.png"
.PARAMETER description
Description to display on the taskbar item preview
Set-WinUtilTaskbaritem -description "This is a description"
#>
param (
[string]$state,
[double]$value,
[string]$overlay,
[string]$description
)
if ($value) {
$sync["Form"].taskbarItemInfo.ProgressValue = $value
}
if ($state) {
switch ($state) {
'None' { $sync["Form"].taskbarItemInfo.ProgressState = "None" }
'Indeterminate' { $sync["Form"].taskbarItemInfo.ProgressState = "Indeterminate" }
'Normal' { $sync["Form"].taskbarItemInfo.ProgressState = "Normal" }
'Error' { $sync["Form"].taskbarItemInfo.ProgressState = "Error" }
'Paused' { $sync["Form"].taskbarItemInfo.ProgressState = "Paused" }
default { throw "[Set-WinUtilTaskbarItem] Invalid state" }
}
}
if ($overlay) {
switch ($overlay) {
'logo' {
$sync["Form"].taskbarItemInfo.Overlay = "$env:LOCALAPPDATA\winutil\cttlogo.png"
}
'checkmark' {
$sync["Form"].taskbarItemInfo.Overlay = "$env:LOCALAPPDATA\winutil\checkmark.png"
}
'warning' {
$sync["Form"].taskbarItemInfo.Overlay = "$env:LOCALAPPDATA\winutil\warning.png"
}
'None' {
$sync["Form"].taskbarItemInfo.Overlay = $null
}
default {
if (Test-Path $overlay) {
$sync["Form"].taskbarItemInfo.Overlay = $overlay
}
}
}
}
if ($description) {
$sync["Form"].taskbarItemInfo.Description = $description
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,57 @@
# Disable Powershell 7 Telemetry
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
This will create an Environment Variable called 'POWERSHELL_TELEMETRY_OPTOUT' with a value of '1' which will tell Powershell 7 to not send Telemetry Data.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Disable Powershell 7 Telemetry",
"Description": "This will create an Environment Variable called 'POWERSHELL_TELEMETRY_OPTOUT' with a value of '1' which will tell Powershell 7 to not send Telemetry Data.",
"category": "Essential Tweaks",
"panel": "1",
"Order": "a009_",
"InvokeScript": [
"[Environment]::SetEnvironmentVariable('POWERSHELL_TELEMETRY_OPTOUT', '1', 'Machine')"
],
"UndoScript": [
"[Environment]::SetEnvironmentVariable('POWERSHELL_TELEMETRY_OPTOUT', '', 'Machine')"
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/Powershell7Tele"
}
```
</details>
## Invoke Script
```powershell
[Environment]::SetEnvironmentVariable('POWERSHELL_TELEMETRY_OPTOUT', '1', 'Machine')
```
## Undo Script
```powershell
[Environment]::SetEnvironmentVariable('POWERSHELL_TELEMETRY_OPTOUT', '', 'Machine')
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,139 @@
# Create Restore Point
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Creates a restore point at runtime in case a revert is needed from WinUtil modifications
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Create Restore Point",
"Description": "Creates a restore point at runtime in case a revert is needed from WinUtil modifications",
"category": "Essential Tweaks",
"panel": "1",
"Checked": "False",
"Order": "a001_",
"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
}
# Attempt to load the required module for Get-ComputerRestorePoint
try {
Import-Module Microsoft.PowerShell.Management -ErrorAction Stop
} catch {
Write-Host \"Failed to load the Microsoft.PowerShell.Management module: $_\"
return
}
# Get all the restore points for the current day
try {
$existingRestorePoints = Get-ComputerRestorePoint | Where-Object { $_.CreationTime.Date -eq (Get-Date).Date }
} catch {
Write-Host \"Failed to retrieve restore points: $_\"
return
}
# 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\"
}
"
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/RestorePoint"
}
```
</details>
## Invoke Script
```powershell
# 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
}
# Attempt to load the required module for Get-ComputerRestorePoint
try {
Import-Module Microsoft.PowerShell.Management -ErrorAction Stop
} catch {
Write-Host "Failed to load the Microsoft.PowerShell.Management module: $_"
return
}
# Get all the restore points for the current day
try {
$existingRestorePoints = Get-ComputerRestorePoint | Where-Object { $_.CreationTime.Date -eq (Get-Date).Date }
} catch {
Write-Host "Failed to retrieve restore points: $_"
return
}
# 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"
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,57 @@
# Disable Storage Sense
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Storage Sense deletes temp files automatically.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Disable Storage Sense",
"Description": "Storage Sense deletes temp files automatically.",
"category": "Essential Tweaks",
"panel": "1",
"Order": "a005_",
"InvokeScript": [
"Set-ItemProperty -Path \"HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\StorageSense\\Parameters\\StoragePolicy\" -Name \"01\" -Value 0 -Type Dword -Force"
],
"UndoScript": [
"Set-ItemProperty -Path \"HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\StorageSense\\Parameters\\StoragePolicy\" -Name \"01\" -Value 1 -Type Dword -Force"
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/Storage"
}
```
</details>
## Invoke Script
```powershell
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\StorageSense\Parameters\StoragePolicy" -Name "01" -Value 0 -Type Dword -Force
```
## Undo Script
```powershell
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\StorageSense\Parameters\StoragePolicy" -Name "01" -Value 1 -Type Dword -Force
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,830 @@
# Disable Telemetry
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Disables Microsoft Telemetry. Note: This will lock many Edge Browser settings. Microsoft spies heavily on you when using the Edge browser.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Disable Telemetry",
"Description": "Disables Microsoft Telemetry. Note: This will lock many Edge Browser settings. Microsoft spies heavily on you when using the Edge browser.",
"category": "Essential Tweaks",
"panel": "1",
"Order": "a003_",
"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": "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": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\UserProfileEngagement",
"OriginalValue": "1",
"Name": "ScoobeSystemSettingEnabled",
"Value": "0",
"Type": "DWord"
}
],
"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
"
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/Tele"
}
```
</details>
## Invoke Script
```powershell
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
```
## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
You can find information about the registry on [Wikipedia](https://www.wikiwand.com/en/Windows_Registry) and [Microsoft's Website](https://learn.microsoft.com/en-us/windows/win32/sysinfo/registry).
### Registry Key: AllowTelemetry
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: AllowTelemetry
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: ContentDeliveryAllowed
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: OemPreInstalledAppsEnabled
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: PreInstalledAppsEnabled
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: PreInstalledAppsEverEnabled
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: SilentInstalledAppsEnabled
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: SubscribedContent-338387Enabled
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: SubscribedContent-338388Enabled
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: SubscribedContent-338389Enabled
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: SubscribedContent-353698Enabled
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: SystemPaneSuggestionsEnabled
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: NumberOfSIUFInPeriod
**Type:** DWord
**Original Value:** 0
**New Value:** 0
### Registry Key: DoNotShowFeedbackNotifications
**Type:** DWord
**Original Value:** 0
**New Value:** 1
### Registry Key: DisableTailoredExperiencesWithDiagnosticData
**Type:** DWord
**Original Value:** 0
**New Value:** 1
### Registry Key: DisabledByGroupPolicy
**Type:** DWord
**Original Value:** 0
**New Value:** 1
### Registry Key: Disabled
**Type:** DWord
**Original Value:** 0
**New Value:** 1
### Registry Key: DODownloadMode
**Type:** DWord
**Original Value:** 1
**New Value:** 1
### Registry Key: fAllowToGetHelp
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: EnthusiastMode
**Type:** DWord
**Original Value:** 0
**New Value:** 1
### Registry Key: ShowTaskViewButton
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: PeopleBand
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: LaunchTo
**Type:** DWord
**Original Value:** 1
**New Value:** 1
### Registry Key: LongPathsEnabled
**Type:** DWord
**Original Value:** 0
**New Value:** 1
### Registry Key: SearchOrderConfig
**Type:** DWord
**Original Value:** 1
**New Value:** 1
### Registry Key: SystemResponsiveness
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: NetworkThrottlingIndex
**Type:** DWord
**Original Value:** 1
**New Value:** 4294967295
### Registry Key: MenuShowDelay
**Type:** DWord
**Original Value:** 1
**New Value:** 1
### Registry Key: AutoEndTasks
**Type:** DWord
**Original Value:** 1
**New Value:** 1
### Registry Key: ClearPageFileAtShutdown
**Type:** DWord
**Original Value:** 0
**New Value:** 0
### Registry Key: Start
**Type:** DWord
**Original Value:** 1
**New Value:** 2
### Registry Key: MouseHoverTime
**Type:** String
**Original Value:** 400
**New Value:** 400
### Registry Key: IRPStackSize
**Type:** DWord
**Original Value:** 20
**New Value:** 30
### Registry Key: EnableFeeds
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: ShellFeedsTaskbarViewMode
**Type:** DWord
**Original Value:** 1
**New Value:** 2
### Registry Key: HideSCAMeetNow
**Type:** DWord
**Original Value:** 1
**New Value:** 1
### Registry Key: ScoobeSystemSettingEnabled
**Type:** DWord
**Original Value:** 1
**New Value:** 0
## Scheduled Task Changes
Windows scheduled tasks are used to run scripts or programs at specific times or events. Disabling unnecessary tasks can improve system performance and reduce unwanted background activity.
You can find information about scheduled tasks on [Wikipedia](https://www.wikiwand.com/en/Windows_Task_Scheduler) and [Microsoft's Website](https://learn.microsoft.com/en-us/windows/desktop/taskschd/about-the-task-scheduler).
### Task Name: Microsoft\Windows\Application Experience\Microsoft Compatibility Appraiser
**State:** Disabled
**Original State:** Enabled
### Task Name: Microsoft\Windows\Application Experience\ProgramDataUpdater
**State:** Disabled
**Original State:** Enabled
### Task Name: Microsoft\Windows\Autochk\Proxy
**State:** Disabled
**Original State:** Enabled
### Task Name: Microsoft\Windows\Customer Experience Improvement Program\Consolidator
**State:** Disabled
**Original State:** Enabled
### Task Name: Microsoft\Windows\Customer Experience Improvement Program\UsbCeip
**State:** Disabled
**Original State:** Enabled
### Task Name: Microsoft\Windows\DiskDiagnostic\Microsoft-Windows-DiskDiagnosticDataCollector
**State:** Disabled
**Original State:** Enabled
### Task Name: Microsoft\Windows\Feedback\Siuf\DmClient
**State:** Disabled
**Original State:** Enabled
### Task Name: Microsoft\Windows\Feedback\Siuf\DmClientOnScenarioDownload
**State:** Disabled
**Original State:** Enabled
### Task Name: Microsoft\Windows\Windows Error Reporting\QueueReporting
**State:** Disabled
**Original State:** Enabled
### Task Name: Microsoft\Windows\Application Experience\MareBackup
**State:** Disabled
**Original State:** Enabled
### Task Name: Microsoft\Windows\Application Experience\StartupAppTask
**State:** Disabled
**Original State:** Enabled
### Task Name: Microsoft\Windows\Application Experience\PcaPatchDbTask
**State:** Disabled
**Original State:** Enabled
### Task Name: Microsoft\Windows\Maps\MapsUpdateTask
**State:** Disabled
**Original State:** Enabled
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,81 @@
# Disable Teredo
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Teredo network tunneling is a ipv6 feature that can cause additional latency.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Disable Teredo",
"Description": "Teredo network tunneling is a ipv6 feature that can cause additional latency.",
"category": "Essential Tweaks",
"panel": "1",
"Order": "a005_",
"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"
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/Teredo"
}
```
</details>
## Invoke Script
```powershell
netsh interface teredo set state disabled
```
## Undo Script
```powershell
netsh interface teredo set state default
```
## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
You can find information about the registry on [Wikipedia](https://www.wikiwand.com/en/Windows_Registry) and [Microsoft's Website](https://learn.microsoft.com/en-us/windows/win32/sysinfo/registry).
### Registry Key: DisabledComponents
**Type:** DWord
**Original Value:** 0
**New Value:** 1
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,78 @@
# Disable Wifi-Sense
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Wifi Sense is a spying service that phones home all nearby scanned wifi networks and your current geo location.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Disable Wifi-Sense",
"Description": "Wifi Sense is a spying service that phones home all nearby scanned wifi networks and your current geo location.",
"category": "Essential Tweaks",
"panel": "1",
"Order": "a005_",
"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"
}
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/Wifi"
}
```
</details>
## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
You can find information about the registry on [Wikipedia](https://www.wikiwand.com/en/Windows_Registry) and [Microsoft's Website](https://learn.microsoft.com/en-us/windows/win32/sysinfo/registry).
### Registry Key: Value
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: Value
**Type:** DWord
**Original Value:** 1
**New Value:** 0
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,97 @@
# Add and Activate Ultimate Performance Profile
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Add and Activate Ultimate Performance Profile",
"category": "Performance Plans",
"panel": "2",
"Order": "a080_",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Performance-Plans/AddUltPerf"
}
```
</details>
## Function: Invoke-WPFUltimatePerformance
```powershell
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 {
# Check if Ultimate Performance plan is installed
$ultimatePlan = powercfg -list | Select-String -Pattern "Ultimate Performance"
if($state -eq "Enable") {
if ($ultimatePlan) {
Write-Host "Ultimate Performance plan is already installed."
} else {
Write-Host "Installing Ultimate Performance plan..."
powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61
Write-Host "> Ultimate Performance plan installed."
}
# Set the Ultimate Performance plan as active
$ultimatePlanGUID = (powercfg -list | Select-String -Pattern "Ultimate Performance").Line.Split()[3]
powercfg -setactive $ultimatePlanGUID
Write-Host "Ultimate Performance plan is now active."
}
elseif($state -eq "Disable") {
if ($ultimatePlan) {
# Extract the GUID of the Ultimate Performance plan
$ultimatePlanGUID = $ultimatePlan.Line.Split()[3]
# Set a different power plan as active before deleting the Ultimate Performance plan
$balancedPlanGUID = (powercfg -list | Select-String -Pattern "Balanced").Line.Split()[3]
powercfg -setactive $balancedPlanGUID
# Delete the Ultimate Performance plan
powercfg -delete $ultimatePlanGUID
Write-Host "Ultimate Performance plan has been uninstalled."
Write-Host "> Balanced plan is now active."
} else {
Write-Host "Ultimate Performance plan is not installed."
}
}
} catch {
Write-Warning $psitem.Exception.Message
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,97 @@
# Remove Ultimate Performance Profile
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Remove Ultimate Performance Profile",
"category": "Performance Plans",
"panel": "2",
"Order": "a081_",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Performance-Plans/RemoveUltPerf"
}
```
</details>
## Function: Invoke-WPFUltimatePerformance
```powershell
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 {
# Check if Ultimate Performance plan is installed
$ultimatePlan = powercfg -list | Select-String -Pattern "Ultimate Performance"
if($state -eq "Enable") {
if ($ultimatePlan) {
Write-Host "Ultimate Performance plan is already installed."
} else {
Write-Host "Installing Ultimate Performance plan..."
powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61
Write-Host "> Ultimate Performance plan installed."
}
# Set the Ultimate Performance plan as active
$ultimatePlanGUID = (powercfg -list | Select-String -Pattern "Ultimate Performance").Line.Split()[3]
powercfg -setactive $ultimatePlanGUID
Write-Host "Ultimate Performance plan is now active."
}
elseif($state -eq "Disable") {
if ($ultimatePlan) {
# Extract the GUID of the Ultimate Performance plan
$ultimatePlanGUID = $ultimatePlan.Line.Split()[3]
# Set a different power plan as active before deleting the Ultimate Performance plan
$balancedPlanGUID = (powercfg -list | Select-String -Pattern "Balanced").Line.Split()[3]
powercfg -setactive $balancedPlanGUID
# Delete the Ultimate Performance plan
powercfg -delete $ultimatePlanGUID
Write-Host "Ultimate Performance plan has been uninstalled."
Write-Host "> Balanced plan is now active."
} else {
Write-Host "Ultimate Performance plan is not installed."
}
}
} catch {
Write-Warning $psitem.Exception.Message
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,113 @@
# Create WinUtil Shortcut
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Create WinUtil Shortcut",
"category": "Shortcuts",
"panel": "2",
"Order": "a082_",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://christitustech.github.io/winutil/dev/tweaks/Shortcuts/Shortcut"
}
```
</details>
## Function: Invoke-WPFShortcut
```powershell
function Invoke-WPFShortcut {
<#
.SYNOPSIS
Creates a shortcut and prompts for a save location
.PARAMETER ShortcutToAdd
The name of the shortcut to add
.PARAMETER RunAsAdmin
A boolean value to make 'Run as administrator' property on (true) or off (false), defaults to off
#>
param(
$ShortcutToAdd,
[bool]$RunAsAdmin = $false
)
# Preper the Shortcut Fields and add an a Custom Icon if it's available, else don't add a Custom Icon.
Switch ($ShortcutToAdd) {
"WinUtil" {
# Use Powershell 7 if installed and fallback to PS5 if not
if (Get-Command "pwsh" -ErrorAction SilentlyContinue) {
$shell = "pwsh.exe"
} else {
$shell = "powershell.exe"
}
$shellArgs = "-ExecutionPolicy Bypass -Command `"Start-Process $shell -verb runas -ArgumentList `'-Command `"irm https://github.com/ChrisTitusTech/winutil/releases/latest/download/winutil.ps1 | iex`"`'"
$DestinationName = "WinUtil.lnk"
}
}
# Show a File Dialog Browser, to let the User choose the Name and Location of where to save the Shortcut
$FileBrowser = New-Object System.Windows.Forms.SaveFileDialog
$FileBrowser.InitialDirectory = [Environment]::GetFolderPath('Desktop')
$FileBrowser.Filter = "Shortcut Files (*.lnk)|*.lnk"
$FileBrowser.FileName = $DestinationName
# Do an Early Return if the Save Operation was canceled by User's Input.
$FileBrowserResult = $FileBrowser.ShowDialog()
$DialogResultEnum = New-Object System.Windows.Forms.DialogResult
if (-not ($FileBrowserResult -eq $DialogResultEnum::OK)) {
return
}
# Prepare the Shortcut paramter
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut($FileBrowser.FileName)
$Shortcut.TargetPath = $shell
$Shortcut.Arguments = $shellArgs
if (Test-Path -Path $winutildir["logo.ico"]) {
$shortcut.IconLocation = $winutildir["logo.ico"]
}
# Save the Shortcut to disk
$Shortcut.Save()
if ($RunAsAdmin -eq $true) {
$bytes = [System.IO.File]::ReadAllBytes($FileBrowser.FileName)
# Set byte value at position 0x15 in hex, or 21 in decimal, from the value 0x00 to 0x20 in hex
$bytes[0x15] = $bytes[0x15] -bor 0x20
[System.IO.File]::WriteAllBytes($FileBrowser.FileName, $bytes)
}
Write-Host "Shortcut for $ShortcutToAdd has been saved to $($FileBrowser.FileName) with 'Run as administrator' set to $RunAsAdmin"
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,245 @@
# Adobe Network Block
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Reduce user interruptions by selectively blocking connections to Adobe's activation and telemetry servers. Credit: Ruddernation-Designs
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Adobe Network Block",
"Description": "Reduce user interruptions by selectively blocking connections to Adobe's activation and telemetry servers. Credit: Ruddernation-Designs",
"category": "z__Advanced Tweaks - CAUTION",
"panel": "1",
"Order": "a021_",
"InvokeScript": [
"
# Define the URL of the remote HOSTS file and the local paths
$remoteHostsUrl = \"https://raw.githubusercontent.com/Ruddernation-Designs/Adobe-URL-Block-List/master/hosts\"
$localHostsPath = \"C:\\Windows\\System32\\drivers\\etc\\hosts\"
$tempHostsPath = \"C:\\Windows\\System32\\drivers\\etc\\temp_hosts\"
# Download the remote HOSTS file to a temporary location
try {
Invoke-WebRequest -Uri $remoteHostsUrl -OutFile $tempHostsPath
Write-Output \"Downloaded the remote HOSTS file to a temporary location.\"
} catch {
Write-Error \"Failed to download the HOSTS file. Error: $_\"
}
# Check if the AdobeNetBlock has already been started
try {
$localHostsContent = Get-Content $localHostsPath -ErrorAction Stop
# Check if AdobeNetBlock markers exist
$blockStartExists = $localHostsContent -like \"*#AdobeNetBlock-start*\"
if ($blockStartExists) {
Write-Output \"AdobeNetBlock-start already exists. Skipping addition of new block.\"
} else {
# Load the new block from the downloaded file
$newBlockContent = Get-Content $tempHostsPath -ErrorAction Stop
$newBlockContent = $newBlockContent | Where-Object { $_ -notmatch \"^\\s*#\" -and $_ -ne \"\" } # Exclude empty lines and comments
$newBlockHeader = \"#AdobeNetBlock-start\"
$newBlockFooter = \"#AdobeNetBlock-end\"
# Combine the contents, ensuring new block is properly formatted
$combinedContent = $localHostsContent + $newBlockHeader, $newBlockContent, $newBlockFooter | Out-String
# Write the combined content back to the original HOSTS file
$combinedContent | Set-Content $localHostsPath -Encoding ASCII
Write-Output \"Successfully added the AdobeNetBlock.\"
}
} catch {
Write-Error \"Error during processing: $_\"
}
# Clean up temporary file
Remove-Item $tempHostsPath -ErrorAction Ignore
# Flush the DNS resolver cache
try {
Invoke-Expression \"ipconfig /flushdns\"
Write-Output \"DNS cache flushed successfully.\"
} catch {
Write-Error \"Failed to flush DNS cache. Error: $_\"
}
"
],
"UndoScript": [
"
# Define the local path of the HOSTS file
$localHostsPath = \"C:\\Windows\\System32\\drivers\\etc\\hosts\"
# Load the content of the HOSTS file
try {
$hostsContent = Get-Content $localHostsPath -ErrorAction Stop
} catch {
Write-Error \"Failed to load the HOSTS file. Error: $_\"
return
}
# Initialize flags and buffer for new content
$recording = $true
$newContent = @()
# Iterate over each line of the HOSTS file
foreach ($line in $hostsContent) {
if ($line -match \"#AdobeNetBlock-start\") {
$recording = $false
}
if ($recording) {
$newContent += $line
}
if ($line -match \"#AdobeNetBlock-end\") {
$recording = $true
}
}
# Write the filtered content back to the HOSTS file
try {
$newContent | Set-Content $localHostsPath -Encoding ASCII
Write-Output \"Successfully removed the AdobeNetBlock section from the HOSTS file.\"
} catch {
Write-Error \"Failed to write back to the HOSTS file. Error: $_\"
}
# Flush the DNS resolver cache
try {
Invoke-Expression \"ipconfig /flushdns\"
Write-Output \"DNS cache flushed successfully.\"
} catch {
Write-Error \"Failed to flush DNS cache. Error: $_\"
}
"
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/BlockAdobeNet"
}
```
</details>
## Invoke Script
```powershell
# Define the URL of the remote HOSTS file and the local paths
$remoteHostsUrl = "https://raw.githubusercontent.com/Ruddernation-Designs/Adobe-URL-Block-List/master/hosts"
$localHostsPath = "C:\Windows\System32\drivers\etc\hosts"
$tempHostsPath = "C:\Windows\System32\drivers\etc\temp_hosts"
# Download the remote HOSTS file to a temporary location
try {
Invoke-WebRequest -Uri $remoteHostsUrl -OutFile $tempHostsPath
Write-Output "Downloaded the remote HOSTS file to a temporary location."
} catch {
Write-Error "Failed to download the HOSTS file. Error: $_"
}
# Check if the AdobeNetBlock has already been started
try {
$localHostsContent = Get-Content $localHostsPath -ErrorAction Stop
# Check if AdobeNetBlock markers exist
$blockStartExists = $localHostsContent -like "*#AdobeNetBlock-start*"
if ($blockStartExists) {
Write-Output "AdobeNetBlock-start already exists. Skipping addition of new block."
} else {
# Load the new block from the downloaded file
$newBlockContent = Get-Content $tempHostsPath -ErrorAction Stop
$newBlockContent = $newBlockContent | Where-Object { $_ -notmatch "^\s*#" -and $_ -ne "" } # Exclude empty lines and comments
$newBlockHeader = "#AdobeNetBlock-start"
$newBlockFooter = "#AdobeNetBlock-end"
# Combine the contents, ensuring new block is properly formatted
$combinedContent = $localHostsContent + $newBlockHeader, $newBlockContent, $newBlockFooter | Out-String
# Write the combined content back to the original HOSTS file
$combinedContent | Set-Content $localHostsPath -Encoding ASCII
Write-Output "Successfully added the AdobeNetBlock."
}
} catch {
Write-Error "Error during processing: $_"
}
# Clean up temporary file
Remove-Item $tempHostsPath -ErrorAction Ignore
# Flush the DNS resolver cache
try {
Invoke-Expression "ipconfig /flushdns"
Write-Output "DNS cache flushed successfully."
} catch {
Write-Error "Failed to flush DNS cache. Error: $_"
}
```
## Undo Script
```powershell
# Define the local path of the HOSTS file
$localHostsPath = "C:\Windows\System32\drivers\etc\hosts"
# Load the content of the HOSTS file
try {
$hostsContent = Get-Content $localHostsPath -ErrorAction Stop
} catch {
Write-Error "Failed to load the HOSTS file. Error: $_"
return
}
# Initialize flags and buffer for new content
$recording = $true
$newContent = @()
# Iterate over each line of the HOSTS file
foreach ($line in $hostsContent) {
if ($line -match "#AdobeNetBlock-start") {
$recording = $false
}
if ($recording) {
$newContent += $line
}
if ($line -match "#AdobeNetBlock-end") {
$recording = $true
}
}
# Write the filtered content back to the HOSTS file
try {
$newContent | Set-Content $localHostsPath -Encoding ASCII
Write-Output "Successfully removed the AdobeNetBlock section from the HOSTS file."
} catch {
Write-Error "Failed to write back to the HOSTS file. Error: $_"
}
# Flush the DNS resolver cache
try {
Invoke-Expression "ipconfig /flushdns"
Write-Output "DNS cache flushed successfully."
} catch {
Write-Error "Failed to flush DNS cache. Error: $_"
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,189 @@
# Remove ALL MS Store Apps - NOT RECOMMENDED
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
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!
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Remove ALL MS Store Apps - NOT RECOMMENDED",
"Description": "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!",
"category": "z__Advanced Tweaks - CAUTION",
"panel": "1",
"Order": "a028_",
"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.YourPhone",
"Microsoft.WindowsSoundRecorder",
"Microsoft.XboxApp",
"Microsoft.ConnectivityStore",
"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()
}
"
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/DeBloat"
}
```
</details>
## Invoke Script
```powershell
$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()
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,342 @@
# Adobe Debloat
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Manages Adobe Services, Adobe Desktop Service, and Acrobat Updates
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Adobe Debloat",
"Description": "Manages Adobe Services, Adobe Desktop Service, and Acrobat Updates",
"category": "z__Advanced Tweaks - CAUTION",
"panel": "1",
"Order": "a021_",
"InvokeScript": [
"
function CCStopper {
$path = \"C:\\Program Files (x86)\\Common Files\\Adobe\\Adobe Desktop Common\\ADS\\Adobe Desktop Service.exe\"
# Test if the path exists before proceeding
if (Test-Path $path) {
Takeown /f $path
$acl = Get-Acl $path
$acl.SetOwner([System.Security.Principal.NTAccount]\"Administrators\")
$acl | Set-Acl $path
Rename-Item -Path $path -NewName \"Adobe Desktop Service.exe.old\" -Force
} else {
Write-Host \"Adobe Desktop Service is not in the default location.\"
}
}
function AcrobatUpdates {
# Editing Acrobat Updates. The last folder before the key is dynamic, therefore using a script.
# Possible Values for the edited key:
# 0 = Do not download or install updates automatically
# 2 = Automatically download updates but let the user choose when to install them
# 3 = Automatically download and install updates (default value)
# 4 = Notify the user when an update is available but don't download or install it automatically
# = It notifies the user using Windows Notifications. It runs on startup without having to have a Service/Acrobat/Reader running, therefore 0 is the next best thing.
$rootPath = \"HKLM:\\SOFTWARE\\WOW6432Node\\Adobe\\Adobe ARM\\Legacy\\Acrobat\"
# Get all subkeys under the specified root path
$subKeys = Get-ChildItem -Path $rootPath | Where-Object { $_.PSChildName -like \"{*}\" }
# Loop through each subkey
foreach ($subKey in $subKeys) {
# Get the full registry path
$fullPath = Join-Path -Path $rootPath -ChildPath $subKey.PSChildName
try {
Set-ItemProperty -Path $fullPath -Name Mode -Value 0
Write-Host \"Acrobat Updates have been disabled.\"
} catch {
Write-Host \"Registry Key for changing Acrobat Updates does not exist in $fullPath\"
}
}
}
CCStopper
AcrobatUpdates
"
],
"UndoScript": [
"
function RestoreCCService {
$originalPath = \"C:\\Program Files (x86)\\Common Files\\Adobe\\Adobe Desktop Common\\ADS\\Adobe Desktop Service.exe.old\"
$newPath = \"C:\\Program Files (x86)\\Common Files\\Adobe\\Adobe Desktop Common\\ADS\\Adobe Desktop Service.exe\"
if (Test-Path -Path $originalPath) {
Rename-Item -Path $originalPath -NewName \"Adobe Desktop Service.exe\" -Force
Write-Host \"Adobe Desktop Service has been restored.\"
} else {
Write-Host \"Backup file does not exist. No changes were made.\"
}
}
function AcrobatUpdates {
# Default Value:
# 3 = Automatically download and install updates
$rootPath = \"HKLM:\\SOFTWARE\\WOW6432Node\\Adobe\\Adobe ARM\\Legacy\\Acrobat\"
# Get all subkeys under the specified root path
$subKeys = Get-ChildItem -Path $rootPath | Where-Object { $_.PSChildName -like \"{*}\" }
# Loop through each subkey
foreach ($subKey in $subKeys) {
# Get the full registry path
$fullPath = Join-Path -Path $rootPath -ChildPath $subKey.PSChildName
try {
Set-ItemProperty -Path $fullPath -Name Mode -Value 3
} catch {
Write-Host \"Registry Key for changing Acrobat Updates does not exist in $fullPath\"
}
}
}
RestoreCCService
AcrobatUpdates
"
],
"service": [
{
"Name": "AGSService",
"StartupType": "Disabled",
"OriginalType": "Automatic"
},
{
"Name": "AGMService",
"StartupType": "Disabled",
"OriginalType": "Automatic"
},
{
"Name": "AdobeUpdateService",
"StartupType": "Manual",
"OriginalType": "Automatic"
},
{
"Name": "Adobe Acrobat Update",
"StartupType": "Manual",
"OriginalType": "Automatic"
},
{
"Name": "Adobe Genuine Monitor Service",
"StartupType": "Disabled",
"OriginalType": "Automatic"
},
{
"Name": "AdobeARMservice",
"StartupType": "Manual",
"OriginalType": "Automatic"
},
{
"Name": "Adobe Licensing Console",
"StartupType": "Manual",
"OriginalType": "Automatic"
},
{
"Name": "CCXProcess",
"StartupType": "Manual",
"OriginalType": "Automatic"
},
{
"Name": "AdobeIPCBroker",
"StartupType": "Manual",
"OriginalType": "Automatic"
},
{
"Name": "CoreSync",
"StartupType": "Manual",
"OriginalType": "Automatic"
}
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/DebloatAdobe"
}
```
</details>
## Invoke Script
```powershell
function CCStopper {
$path = "C:\Program Files (x86)\Common Files\Adobe\Adobe Desktop Common\ADS\Adobe Desktop Service.exe"
# Test if the path exists before proceeding
if (Test-Path $path) {
Takeown /f $path
$acl = Get-Acl $path
$acl.SetOwner([System.Security.Principal.NTAccount]"Administrators")
$acl | Set-Acl $path
Rename-Item -Path $path -NewName "Adobe Desktop Service.exe.old" -Force
} else {
Write-Host "Adobe Desktop Service is not in the default location."
}
}
function AcrobatUpdates {
# Editing Acrobat Updates. The last folder before the key is dynamic, therefore using a script.
# Possible Values for the edited key:
# 0 = Do not download or install updates automatically
# 2 = Automatically download updates but let the user choose when to install them
# 3 = Automatically download and install updates (default value)
# 4 = Notify the user when an update is available but don't download or install it automatically
# = It notifies the user using Windows Notifications. It runs on startup without having to have a Service/Acrobat/Reader running, therefore 0 is the next best thing.
$rootPath = "HKLM:\SOFTWARE\WOW6432Node\Adobe\Adobe ARM\Legacy\Acrobat"
# Get all subkeys under the specified root path
$subKeys = Get-ChildItem -Path $rootPath | Where-Object { $_.PSChildName -like "{*}" }
# Loop through each subkey
foreach ($subKey in $subKeys) {
# Get the full registry path
$fullPath = Join-Path -Path $rootPath -ChildPath $subKey.PSChildName
try {
Set-ItemProperty -Path $fullPath -Name Mode -Value 0
Write-Host "Acrobat Updates have been disabled."
} catch {
Write-Host "Registry Key for changing Acrobat Updates does not exist in $fullPath"
}
}
}
CCStopper
AcrobatUpdates
```
## Undo Script
```powershell
function RestoreCCService {
$originalPath = "C:\Program Files (x86)\Common Files\Adobe\Adobe Desktop Common\ADS\Adobe Desktop Service.exe.old"
$newPath = "C:\Program Files (x86)\Common Files\Adobe\Adobe Desktop Common\ADS\Adobe Desktop Service.exe"
if (Test-Path -Path $originalPath) {
Rename-Item -Path $originalPath -NewName "Adobe Desktop Service.exe" -Force
Write-Host "Adobe Desktop Service has been restored."
} else {
Write-Host "Backup file does not exist. No changes were made."
}
}
function AcrobatUpdates {
# Default Value:
# 3 = Automatically download and install updates
$rootPath = "HKLM:\SOFTWARE\WOW6432Node\Adobe\Adobe ARM\Legacy\Acrobat"
# Get all subkeys under the specified root path
$subKeys = Get-ChildItem -Path $rootPath | Where-Object { $_.PSChildName -like "{*}" }
# Loop through each subkey
foreach ($subKey in $subKeys) {
# Get the full registry path
$fullPath = Join-Path -Path $rootPath -ChildPath $subKey.PSChildName
try {
Set-ItemProperty -Path $fullPath -Name Mode -Value 3
} catch {
Write-Host "Registry Key for changing Acrobat Updates does not exist in $fullPath"
}
}
}
RestoreCCService
AcrobatUpdates
```
## Service Changes
Windows services are background processes for system functions or applications. Setting some to manual optimizes performance by starting them only when needed.
You can find information about services on [Wikipedia](https://www.wikiwand.com/en/Windows_service) and [Microsoft's Website](https://learn.microsoft.com/en-us/dotnet/framework/windows-services/introduction-to-windows-service-applications).
### Service Name: AGSService
**Startup Type:** Disabled
**Original Type:** Automatic
### Service Name: AGMService
**Startup Type:** Disabled
**Original Type:** Automatic
### Service Name: AdobeUpdateService
**Startup Type:** Manual
**Original Type:** Automatic
### Service Name: Adobe Acrobat Update
**Startup Type:** Manual
**Original Type:** Automatic
### Service Name: Adobe Genuine Monitor Service
**Startup Type:** Disabled
**Original Type:** Automatic
### Service Name: AdobeARMservice
**Startup Type:** Manual
**Original Type:** Automatic
### Service Name: Adobe Licensing Console
**Startup Type:** Manual
**Original Type:** Automatic
### Service Name: CCXProcess
**Startup Type:** Manual
**Original Type:** Automatic
### Service Name: AdobeIPCBroker
**Startup Type:** Manual
**Original Type:** Automatic
### Service Name: CoreSync
**Startup Type:** Manual
**Original Type:** Automatic
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,63 @@
# Disable Background Apps
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Disables all Microsoft Store apps from running in the background, which has to be done individually since Win11
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Disable Background Apps",
"Description": "Disables all Microsoft Store apps from running in the background, which has to be done individually since Win11",
"category": "z__Advanced Tweaks - CAUTION",
"panel": "1",
"Order": "a024_",
"registry": [
{
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\BackgroundAccessApplications",
"Name": "GlobalUserDisabled",
"Value": "1",
"OriginalValue": "0",
"Type": "DWord"
}
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/DisableBGapps"
}
```
</details>
## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
You can find information about the registry on [Wikipedia](https://www.wikiwand.com/en/Windows_Registry) and [Microsoft's Website](https://learn.microsoft.com/en-us/windows/win32/sysinfo/registry).
### Registry Key: GlobalUserDisabled
**Type:** DWord
**Original Value:** 0
**New Value:** 1
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,63 @@
# Disable Fullscreen Optimizations
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Disables FSO in all applications. NOTE: This will disable Color Management in Exclusive Fullscreen
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Disable Fullscreen Optimizations",
"Description": "Disables FSO in all applications. NOTE: This will disable Color Management in Exclusive Fullscreen",
"category": "z__Advanced Tweaks - CAUTION",
"panel": "1",
"Order": "a024_",
"registry": [
{
"Path": "HKCU:\\System\\GameConfigStore",
"Name": "GameDVR_DXGIHonorFSEWindowsCompatible",
"Value": "1",
"OriginalValue": "0",
"Type": "DWord"
}
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/DisableFSO"
}
```
</details>
## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
You can find information about the registry on [Wikipedia](https://www.wikiwand.com/en/Windows_Registry) and [Microsoft's Website](https://learn.microsoft.com/en-us/windows/win32/sysinfo/registry).
### Registry Key: GameDVR_DXGIHonorFSEWindowsCompatible
**Type:** DWord
**Original Value:** 0
**New Value:** 1
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,145 @@
# Disable Intel MM (vPro LMS)
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Intel LMS service is always listening on all ports and could be a huge security risk. There is no need to run LMS on home machines and even in the Enterprise there are better solutions.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Disable Intel MM (vPro LMS)",
"Description": "Intel LMS service is always listening on all ports and could be a huge security risk. There is no need to run LMS on home machines and even in the Enterprise there are better solutions.",
"category": "z__Advanced Tweaks - CAUTION",
"panel": "1",
"Order": "a026_",
"InvokeScript": [
"
Write-Host \"Kill LMS\"
$serviceName = \"LMS\"
Write-Host \"Stopping and disabling service: $serviceName\"
Stop-Service -Name $serviceName -Force -ErrorAction SilentlyContinue;
Set-Service -Name $serviceName -StartupType Disabled -ErrorAction SilentlyContinue;
Write-Host \"Removing service: $serviceName\";
sc.exe delete $serviceName;
Write-Host \"Removing LMS driver packages\";
$lmsDriverPackages = Get-ChildItem -Path \"C:\\Windows\\System32\\DriverStore\\FileRepository\" -Recurse -Filter \"lms.inf*\";
foreach ($package in $lmsDriverPackages) {
Write-Host \"Removing driver package: $($package.Name)\";
pnputil /delete-driver $($package.Name) /uninstall /force;
}
if ($lmsDriverPackages.Count -eq 0) {
Write-Host \"No LMS driver packages found in the driver store.\";
} else {
Write-Host \"All found LMS driver packages have been removed.\";
}
Write-Host \"Searching and deleting LMS executable files\";
$programFilesDirs = @(\"C:\\Program Files\", \"C:\\Program Files (x86)\");
$lmsFiles = @();
foreach ($dir in $programFilesDirs) {
$lmsFiles += Get-ChildItem -Path $dir -Recurse -Filter \"LMS.exe\" -ErrorAction SilentlyContinue;
}
foreach ($file in $lmsFiles) {
Write-Host \"Taking ownership of file: $($file.FullName)\";
& icacls $($file.FullName) /grant Administrators:F /T /C /Q;
& takeown /F $($file.FullName) /A /R /D Y;
Write-Host \"Deleting file: $($file.FullName)\";
Remove-Item $($file.FullName) -Force -ErrorAction SilentlyContinue;
}
if ($lmsFiles.Count -eq 0) {
Write-Host \"No LMS.exe files found in Program Files directories.\";
} else {
Write-Host \"All found LMS.exe files have been deleted.\";
}
Write-Host 'Intel LMS vPro service has been disabled, removed, and blocked.';
"
],
"UndoScript": [
"
Write-Host \"LMS vPro needs to be redownloaded from intel.com\"
"
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/DisableLMS1"
}
```
</details>
## Invoke Script
```powershell
Write-Host "Kill LMS"
$serviceName = "LMS"
Write-Host "Stopping and disabling service: $serviceName"
Stop-Service -Name $serviceName -Force -ErrorAction SilentlyContinue;
Set-Service -Name $serviceName -StartupType Disabled -ErrorAction SilentlyContinue;
Write-Host "Removing service: $serviceName";
sc.exe delete $serviceName;
Write-Host "Removing LMS driver packages";
$lmsDriverPackages = Get-ChildItem -Path "C:\Windows\System32\DriverStore\FileRepository" -Recurse -Filter "lms.inf*";
foreach ($package in $lmsDriverPackages) {
Write-Host "Removing driver package: $($package.Name)";
pnputil /delete-driver $($package.Name) /uninstall /force;
}
if ($lmsDriverPackages.Count -eq 0) {
Write-Host "No LMS driver packages found in the driver store.";
} else {
Write-Host "All found LMS driver packages have been removed.";
}
Write-Host "Searching and deleting LMS executable files";
$programFilesDirs = @("C:\Program Files", "C:\Program Files (x86)");
$lmsFiles = @();
foreach ($dir in $programFilesDirs) {
$lmsFiles += Get-ChildItem -Path $dir -Recurse -Filter "LMS.exe" -ErrorAction SilentlyContinue;
}
foreach ($file in $lmsFiles) {
Write-Host "Taking ownership of file: $($file.FullName)";
& icacls $($file.FullName) /grant Administrators:F /T /C /Q;
& takeown /F $($file.FullName) /A /R /D Y;
Write-Host "Deleting file: $($file.FullName)";
Remove-Item $($file.FullName) -Force -ErrorAction SilentlyContinue;
}
if ($lmsFiles.Count -eq 0) {
Write-Host "No LMS.exe files found in Program Files directories.";
} else {
Write-Host "All found LMS.exe files have been deleted.";
}
Write-Host 'Intel LMS vPro service has been disabled, removed, and blocked.';
```
## Undo Script
```powershell
Write-Host "LMS vPro needs to be redownloaded from intel.com"
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,78 @@
# Disable Notification Tray/Calendar
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Disables all Notifications INCLUDING Calendar
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Disable Notification Tray/Calendar",
"Description": "Disables all Notifications INCLUDING Calendar",
"category": "z__Advanced Tweaks - CAUTION",
"panel": "1",
"Order": "a026_",
"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"
}
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/DisableNotifications"
}
```
</details>
## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
You can find information about the registry on [Wikipedia](https://www.wikiwand.com/en/Windows_Registry) and [Microsoft's Website](https://learn.microsoft.com/en-us/windows/win32/sysinfo/registry).
### Registry Key: DisableNotificationCenter
**Type:** DWord
**Original Value:** 0
**New Value:** 1
### Registry Key: ToastEnabled
**Type:** DWord
**Original Value:** 1
**New Value:** 0
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,81 @@
# Disable IPv6
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Disables IPv6.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Disable IPv6",
"Description": "Disables IPv6.",
"category": "z__Advanced Tweaks - CAUTION",
"panel": "1",
"Order": "a023_",
"registry": [
{
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Services\\Tcpip6\\Parameters",
"Name": "DisabledComponents",
"Value": "255",
"OriginalValue": "0",
"Type": "DWord"
}
],
"InvokeScript": [
"Disable-NetAdapterBinding -Name \"*\" -ComponentID ms_tcpip6"
],
"UndoScript": [
"Enable-NetAdapterBinding -Name \"*\" -ComponentID ms_tcpip6"
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/Disableipsix"
}
```
</details>
## Invoke Script
```powershell
Disable-NetAdapterBinding -Name "*" -ComponentID ms_tcpip6
```
## Undo Script
```powershell
Enable-NetAdapterBinding -Name "*" -ComponentID ms_tcpip6
```
## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
You can find information about the registry on [Wikipedia](https://www.wikiwand.com/en/Windows_Registry) and [Microsoft's Website](https://learn.microsoft.com/en-us/windows/win32/sysinfo/registry).
### Registry Key: DisabledComponents
**Type:** DWord
**Original Value:** 0
**New Value:** 255
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

View File

@ -0,0 +1,261 @@
# Set Display for Performance
Last Updated: 2024-08-07
!!! info
The Development Documentation is auto generated for every compilation of WinUtil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Sets the system preferences to performance. You can do this manually with sysdm.cpl as well.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Set Display for Performance",
"Description": "Sets the system preferences to performance. You can do this manually with sysdm.cpl as well.",
"category": "z__Advanced Tweaks - CAUTION",
"panel": "1",
"Order": "a027_",
"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\""
],
"link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/Display"
}
```
</details>
## Invoke Script
```powershell
Set-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "UserPreferencesMask" -Type Binary -Value ([byte[]](144,18,3,128,16,0,0,0))
```
## Undo Script
```powershell
Remove-ItemProperty -Path "HKCU:\Control Panel\Desktop" -Name "UserPreferencesMask"
```
## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
You can find information about the registry on [Wikipedia](https://www.wikiwand.com/en/Windows_Registry) and [Microsoft's Website](https://learn.microsoft.com/en-us/windows/win32/sysinfo/registry).
### Registry Key: DragFullWindows
**Type:** String
**Original Value:** 1
**New Value:** 0
### Registry Key: MenuShowDelay
**Type:** String
**Original Value:** 1
**New Value:** 200
### Registry Key: MinAnimate
**Type:** String
**Original Value:** 1
**New Value:** 0
### Registry Key: KeyboardDelay
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: ListviewAlphaSelect
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: ListviewShadow
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: TaskbarAnimations
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: VisualFXSetting
**Type:** DWord
**Original Value:** 1
**New Value:** 3
### Registry Key: EnableAeroPeek
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: TaskbarMn
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: TaskbarDa
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: ShowTaskViewButton
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: SearchboxTaskbarMode
**Type:** DWord
**Original Value:** 1
**New Value:** 0
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json)

Some files were not shown because too many files have changed in this diff Show More