mirror of
https://github.com/ChrisTitusTech/winutil
synced 2026-02-06 07:50:10 +00:00
Compare commits
39 Commits
f59598cf07
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
68ab69a19c | ||
|
|
29efb989bd | ||
|
|
99eb70d81b | ||
|
|
9013753d88 | ||
|
|
8ad96a9b6e | ||
|
|
8ed3a31424 | ||
|
|
424d4030c1 | ||
|
|
f88c9be70d | ||
|
|
bc4cd84127 | ||
|
|
54b4bcdda1 | ||
|
|
c5c23d8d18 | ||
|
|
28e84af33d | ||
|
|
832af914e9 | ||
|
|
6d9ed9026d | ||
|
|
9e877afe0e | ||
|
|
0c0ced381a | ||
|
|
8ebd127857 | ||
|
|
25a392877f | ||
|
|
ef2c91b616 | ||
|
|
b52ead87f4 | ||
|
|
2dcfc2b109 | ||
|
|
59a9c59064 | ||
|
|
fcc57fde50 | ||
|
|
06e5477d0e | ||
|
|
a5271597e9 | ||
|
|
d841792f8d | ||
|
|
132260ab96 | ||
|
|
919b2e0b8f | ||
|
|
22e083182d | ||
|
|
2ec37f952a | ||
|
|
aa719b49bf | ||
|
|
e9a6cd32d8 | ||
|
|
b02c7f3eab | ||
|
|
eb29dfced8 | ||
|
|
f9b01fdc81 | ||
|
|
61a80e270d | ||
|
|
a31c9cb235 | ||
|
|
2587a98848 | ||
|
|
a5cf3a2ba7 |
61
.github/CODEOWNERS
vendored
61
.github/CODEOWNERS
vendored
@@ -1,59 +1,2 @@
|
||||
# This is a comment.
|
||||
# Each line is a file pattern followed by one or more owners.
|
||||
|
||||
# These owners will be the default owners for everything in
|
||||
# the repo. Unless a later match takes precedence,
|
||||
# @global-owner1 and @global-owner2 will be requested for
|
||||
# review when someone opens a pull request.
|
||||
* @ChrisTitusTech
|
||||
|
||||
# Order is important; the last matching pattern takes the most
|
||||
# precedence. When someone opens a pull request that only
|
||||
# modifies JS files, only @js-owner and not the global
|
||||
# owner(s) will be requested for a review.
|
||||
# *.js @js-owner #This is an inline comment.
|
||||
|
||||
# You can also use email addresses if you prefer. They'll be
|
||||
# used to look up users just like we do for commit author
|
||||
# emails.
|
||||
# *.go docs@example.com
|
||||
|
||||
# Teams can be specified as code owners as well. Teams should
|
||||
# be identified in the format @org/team-name. Teams must have
|
||||
# explicit write access to the repository. In this example,
|
||||
# the octocats team in the octo-org organization owns all .txt files.
|
||||
# *.txt @octo-org/octocats
|
||||
|
||||
# In this example, @doctocat owns any files in the build/logs
|
||||
# directory at the root of the repository and any of its
|
||||
# subdirectories.
|
||||
# /build/logs/ @doctocat
|
||||
|
||||
# The `docs/*` pattern will match files like
|
||||
# `docs/getting-started.md` but not further nested files like
|
||||
# `docs/build-app/troubleshooting.md`.
|
||||
# docs/* docs@example.com
|
||||
|
||||
# In this example, @octocat owns any file in an apps directory
|
||||
# anywhere in your repository.
|
||||
# apps/ @octocat
|
||||
|
||||
# In this example, @doctocat owns any file in the `/docs`
|
||||
# directory in the root of your repository and any of its
|
||||
# subdirectories.
|
||||
# /docs/ @doctocat
|
||||
|
||||
# In this example, any change inside the `/scripts` directory
|
||||
# will require approval from @doctocat or @octocat.
|
||||
# /scripts/ @doctocat @octocat
|
||||
|
||||
# In this example, @octocat owns any file in a `/logs` directory such as
|
||||
# `/build/logs`, `/scripts/logs`, and `/deeply/nested/logs`. Any changes
|
||||
# in a `/logs` directory will require approval from @octocat.
|
||||
# **/logs @octocat
|
||||
|
||||
# In this example, @octocat owns any file in the `/apps`
|
||||
# directory in the root of your repository except for the `/apps/github`
|
||||
# subdirectory, as its owners are left empty.
|
||||
# /apps/ @octocat
|
||||
# /apps/github
|
||||
# Chris rules EVERYTHING (including paths listed below)
|
||||
* @ChrisTitusTech
|
||||
8
.github/PULL_REQUEST_TEMPLATE.md
vendored
8
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -4,11 +4,11 @@
|
||||
- [ ] New feature
|
||||
- [ ] Bug fix
|
||||
- [ ] Documentation update
|
||||
- [ ] Refactoring
|
||||
- [ ] Hotfix
|
||||
- [ ] Security patch
|
||||
- [ ] UI/UX improvement
|
||||
|
||||
<!-- This automatically adds labels to your PR based on the selections above. -->
|
||||
|
||||
## Description
|
||||
<!--[Provide a detailed explanation of the changes you have made. Include the reasons behind these changes and any relevant context. Link any related issues.]-->
|
||||
|
||||
@@ -18,7 +18,5 @@
|
||||
|
||||
## Checklist
|
||||
- [ ] My code adheres to the coding and style guidelines of the project.
|
||||
- [ ] I have performed a self-review of my own code.
|
||||
- [ ] I have commented my code, particularly in hard-to-understand areas.
|
||||
- [ ] I have made corresponding changes to the documentation.
|
||||
- [ ] My changes generate no errors/warnings/merge conflicts.
|
||||
- [ ] I have made corresponding changes to the documentation.
|
||||
12
.github/release-drafter.yml
vendored
12
.github/release-drafter.yml
vendored
@@ -4,15 +4,16 @@ categories:
|
||||
labels:
|
||||
- 'feature'
|
||||
- 'enhancement'
|
||||
- 'new feature'
|
||||
- title: '🐛 Bug Fixes'
|
||||
labels:
|
||||
- 'fix'
|
||||
- 'hotfix'
|
||||
- 'bugfix'
|
||||
- 'bug'
|
||||
- title: '📚 Documentation'
|
||||
label: 'documentation'
|
||||
- title: '🔒 Security'
|
||||
label: 'security'
|
||||
- title: '🎨 UI/UX Improvements'
|
||||
label: 'ui update'
|
||||
change-template: '- $TITLE @$AUTHOR (#$NUMBER)'
|
||||
template: |
|
||||
## Changes
|
||||
@@ -31,7 +32,7 @@ autolabeler:
|
||||
- '/fix\/.+/'
|
||||
title:
|
||||
- '/fix/i'
|
||||
- label: 'enhancement'
|
||||
- label: 'new feature'
|
||||
branch:
|
||||
- '/feature\/.+/'
|
||||
body:
|
||||
@@ -40,9 +41,6 @@ autolabeler:
|
||||
files:
|
||||
- '**/*.md'
|
||||
- 'docs/**/*'
|
||||
- label: 'security'
|
||||
branch:
|
||||
- '/security\/.+/'
|
||||
replacers:
|
||||
- search: /"/g
|
||||
replace: ''
|
||||
|
||||
2
.github/workflows/close-old-issues.yaml
vendored
2
.github/workflows/close-old-issues.yaml
vendored
@@ -14,7 +14,7 @@ jobs:
|
||||
contents: none
|
||||
steps:
|
||||
- name: Close inactive issues
|
||||
uses: actions/stale@v8
|
||||
uses: actions/stale@v10
|
||||
with:
|
||||
# A list of labels to reference when looking through issues,
|
||||
# and only when one (or even more) of these labels are found..
|
||||
|
||||
7
.github/workflows/docs.yaml
vendored
7
.github/workflows/docs.yaml
vendored
@@ -7,7 +7,7 @@ on:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- 'docs/**' # ONLY triggers if files in the 'docs' folder are changed
|
||||
- "docs/**" # ONLY triggers if files in the 'docs' folder are changed
|
||||
|
||||
# Allows you to run this workflow manually from the Actions tab
|
||||
workflow_dispatch:
|
||||
@@ -34,7 +34,7 @@ jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
HUGO_VERSION: 0.145.0
|
||||
HUGO_VERSION: 0.147.7
|
||||
HUGO_ENVIRONMENT: production
|
||||
TZ: America/Chicago
|
||||
steps:
|
||||
@@ -59,8 +59,7 @@ jobs:
|
||||
path: |
|
||||
${{ runner.temp }}/hugo_cache
|
||||
key: hugo-${{ github.run_id }}
|
||||
restore-keys:
|
||||
hugo-
|
||||
restore-keys: hugo-
|
||||
- name: Build with Hugo
|
||||
run: |
|
||||
hugo \
|
||||
|
||||
2
.github/workflows/issue-slash-commands.yaml
vendored
2
.github/workflows/issue-slash-commands.yaml
vendored
@@ -67,7 +67,7 @@ jobs:
|
||||
id: check_user
|
||||
if: env.command == 'true'
|
||||
run: |
|
||||
ALLOWED_USERS=("ChrisTitusTech" "og-mrk" "Marterich" "MyDrift-user" "Real-MullaC" "CodingWonders")
|
||||
ALLOWED_USERS=("ChrisTitusTech" "og-mrk" "Marterich" "MyDrift-user" "Real-MullaC" "CodingWonders" "GabiNun")
|
||||
if [[ " ${ALLOWED_USERS[@]} " =~ " ${{ github.event.comment.user.login }} " ]]; then
|
||||
echo "user=true" >> $GITHUB_ENV
|
||||
else
|
||||
|
||||
45
.github/workflows/label-pr.yaml
vendored
Normal file
45
.github/workflows/label-pr.yaml
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
name: Label PRs by Type of Change
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
types: [opened, edited, synchronize]
|
||||
|
||||
jobs:
|
||||
label-pr:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
pull-requests: write
|
||||
issues: write
|
||||
contents: read # Often needed for github-script
|
||||
steps:
|
||||
- name: Check PR body for Type of Change
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
const prBody = context.payload.pull_request.body || '';
|
||||
const labelsToAdd = [];
|
||||
|
||||
if (/\[x\]\s*New feature/i.test(prBody)) {
|
||||
labelsToAdd.push('new feature');
|
||||
}
|
||||
if (/\[x\]\s*Bug fix/i.test(prBody)) {
|
||||
labelsToAdd.push('bug');
|
||||
}
|
||||
if (/\[x\]\s*Documentation update/i.test(prBody)) {
|
||||
labelsToAdd.push('documentation');
|
||||
}
|
||||
if (/\[x\]\s*Hotfix/i.test(prBody)) {
|
||||
labelsToAdd.push('hotfix');
|
||||
}
|
||||
if (/\[x\]\s*UI\/UX improvement/i.test(prBody)) {
|
||||
labelsToAdd.push('ui update');
|
||||
}
|
||||
|
||||
if (labelsToAdd.length > 0) {
|
||||
await github.rest.issues.addLabels({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
issue_number: context.payload.pull_request.number,
|
||||
labels: labelsToAdd
|
||||
});
|
||||
}
|
||||
2
.github/workflows/pre-release.yaml
vendored
2
.github/workflows/pre-release.yaml
vendored
@@ -56,7 +56,7 @@ jobs:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
config-name: release-drafter.yml
|
||||
version: ${{ env.VERSION }} # Pass the version variable
|
||||
version: ${{ env.VERSION }}
|
||||
|
||||
- name: Create and Upload Release
|
||||
id: create_release
|
||||
|
||||
7
.gitignore
vendored
7
.gitignore
vendored
@@ -55,4 +55,9 @@ winutil.ps1
|
||||
|
||||
binary/
|
||||
|
||||
.preprocessor_hashes.json
|
||||
.preprocessor_hashes.json
|
||||
|
||||
# Hugo Files
|
||||
docs/public/
|
||||
docs/.hugo_build.lock
|
||||
docs/resources/
|
||||
12
Compile.ps1
12
Compile.ps1
@@ -36,15 +36,6 @@ function Update-Progress {
|
||||
Write-Progress -Activity $Activity -Status $StatusMessage -PercentComplete $Percent
|
||||
}
|
||||
|
||||
$header = @"
|
||||
################################################################################################################
|
||||
### ###
|
||||
### WARNING: This file is automatically generated DO NOT modify this file directly as it will be overwritten ###
|
||||
### ###
|
||||
################################################################################################################
|
||||
"@
|
||||
|
||||
|
||||
Update-Progress "Pre-req: Running Preprocessor..." 0
|
||||
|
||||
# Dot source the 'Invoke-Preprocessing' Function from 'tools/Invoke-Preprocessing.ps1' Script
|
||||
@@ -76,9 +67,6 @@ Invoke-Preprocessing -WorkingDir "$workingdir" -ExcludedFiles $excludedFiles -Pr
|
||||
Update-Progress "Pre-req: Allocating Memory" 0
|
||||
$script_content = [System.Collections.Generic.List[string]]::new()
|
||||
|
||||
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)"))
|
||||
|
||||
|
||||
@@ -39,9 +39,6 @@ If you have Issues, refer to [Known Issues](https://winutil.christitus.com/known
|
||||
|
||||
## 🎓 Documentation
|
||||
|
||||
> [!NOTE]
|
||||
> To contribute to the documentation, please visit [WinUtil Docs Repo](https://github.com/Chris-Titus-Docs/winutil-docs) for more info.
|
||||
|
||||
### [WinUtil Official Documentation](https://winutil.christitus.com/)
|
||||
|
||||
### [YouTube Tutorial](https://www.youtube.com/watch?v=6UQZ5oQg8XA)
|
||||
@@ -79,7 +76,7 @@ You'll see a new file named `winutil.ps1`, which's created by `Compile.ps1` scri
|
||||
|
||||
These are the sponsors that help keep this project alive with monthly contributions.
|
||||
|
||||
<!-- sponsors --><a href="https://github.com/markamos"><img src="https://github.com/markamos.png" width="60px" alt="User avatar: Mark Amos" /></a><a href="https://github.com/dwelfusius"><img src="https://github.com/dwelfusius.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/mews-se"><img src="https://github.com/mews-se.png" width="60px" alt="User avatar: Martin Stockzell" /></a><a href="https://github.com/jdiegmueller"><img src="https://github.com/jdiegmueller.png" width="60px" alt="User avatar: Jason A. Diegmueller" /></a><a href="https://github.com/robertsandrock"><img src="https://github.com/robertsandrock.png" width="60px" alt="User avatar: RMS" /></a><a href="https://github.com/KenichiQaz"><img src="https://github.com/KenichiQaz.png" width="60px" alt="User avatar: Stefan" /></a><a href="https://github.com/paulsheets"><img src="https://github.com/paulsheets.png" width="60px" alt="User avatar: Paul" /></a><a href="https://github.com/djones369"><img src="https://github.com/djones369.png" width="60px" alt="User avatar: Dave J (WhamGeek)" /></a><a href="https://github.com/anthonymendez"><img src="https://github.com/anthonymendez.png" width="60px" alt="User avatar: Anthony Mendez" /></a><a href="https://github.com/FatBastard0"><img src="https://github.com/FatBastard0.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/DursleyGuy"><img src="https://github.com/DursleyGuy.png" width="60px" alt="User avatar: DursleyGuy" /></a><a href="https://github.com/quaszi"><img src="https://github.com/quaszi.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/DwayneTheRockLobster1"><img src="https://github.com/DwayneTheRockLobster1.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/KieraKujisawa"><img src="https://github.com/KieraKujisawa.png" width="60px" alt="User avatar: Kiera Meredith" /></a><a href="https://github.com/TaNorbs"><img src="https://github.com/TaNorbs.png" width="60px" alt="User avatar: Norbs" /></a><!-- sponsors -->
|
||||
<!-- sponsors --><a href="https://github.com/markamos"><img src="https://github.com/markamos.png" width="60px" alt="User avatar: Mark Amos" /></a><a href="https://github.com/dwelfusius"><img src="https://github.com/dwelfusius.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/mews-se"><img src="https://github.com/mews-se.png" width="60px" alt="User avatar: Martin Stockzell" /></a><a href="https://github.com/jdiegmueller"><img src="https://github.com/jdiegmueller.png" width="60px" alt="User avatar: Jason A. Diegmueller" /></a><a href="https://github.com/robertsandrock"><img src="https://github.com/robertsandrock.png" width="60px" alt="User avatar: RMS" /></a><a href="https://github.com/KenichiQaz"><img src="https://github.com/KenichiQaz.png" width="60px" alt="User avatar: Stefan" /></a><a href="https://github.com/paulsheets"><img src="https://github.com/paulsheets.png" width="60px" alt="User avatar: Paul" /></a><a href="https://github.com/djones369"><img src="https://github.com/djones369.png" width="60px" alt="User avatar: Dave J (WhamGeek)" /></a><a href="https://github.com/anthonymendez"><img src="https://github.com/anthonymendez.png" width="60px" alt="User avatar: Anthony Mendez" /></a><a href="https://github.com/FatBastard0"><img src="https://github.com/FatBastard0.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/DursleyGuy"><img src="https://github.com/DursleyGuy.png" width="60px" alt="User avatar: DursleyGuy" /></a><a href="https://github.com/quaszi"><img src="https://github.com/quaszi.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/DwayneTheRockLobster1"><img src="https://github.com/DwayneTheRockLobster1.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/KieraKujisawa"><img src="https://github.com/KieraKujisawa.png" width="60px" alt="User avatar: Kiera Meredith" /></a><a href="https://github.com/andrewpayne68"><img src="https://github.com/andrewpayne68.png" width="60px" alt="User avatar: Andrew P" /></a><!-- sponsors -->
|
||||
|
||||
## 🏅 Thanks to all Contributors
|
||||
Thanks a lot for spending your time helping Winutil grow. Thanks a lot! Keep rocking 🍻.
|
||||
|
||||
@@ -552,6 +552,14 @@
|
||||
"link": "https://espanso.org/",
|
||||
"winget": "Espanso.Espanso"
|
||||
},
|
||||
"ffmpeg": {
|
||||
"category": "Utilities",
|
||||
"choco": "na",
|
||||
"content": "eibol.FFmpegBatchAVConverter",
|
||||
"description": "FFmpeg Batch AV Converter is a universal audio and video encoder, that allows to use the full potential of ffmpeg command line with a few mouse clicks in a convenient GUI with drag and drop, progress information.",
|
||||
"link": "https://ffmpeg-batch.sourceforge.io/",
|
||||
"winget": "eibol.FFmpegBatchAVConverter"
|
||||
},
|
||||
"falkon": {
|
||||
"category": "Browsers",
|
||||
"choco": "falkon",
|
||||
@@ -912,6 +920,14 @@
|
||||
"link": "https://www.cpuid.com/softwares/hwmonitor.html",
|
||||
"winget": "CPUID.HWMonitor"
|
||||
},
|
||||
"imhex": {
|
||||
"category": "Development",
|
||||
"choco": "na",
|
||||
"content": "ImHex (Hex Editor)",
|
||||
"description": "A modern, featureful Hex Editor for Reverse Engineers and Developers.",
|
||||
"link": "https://imhex.werwolv.net/",
|
||||
"winget": "WerWolv.ImHex"
|
||||
},
|
||||
"imageglass": {
|
||||
"category": "Multimedia Tools",
|
||||
"choco": "imageglass",
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
"WPFTweaksActivity",
|
||||
"WPFTweaksConsumerFeatures",
|
||||
"WPFTweaksDisableExplorerAutoDiscovery",
|
||||
"WPFTweaksWPBT",
|
||||
"WPFTweaksDVR",
|
||||
"WPFTweaksLocation",
|
||||
"WPFTweaksServices",
|
||||
@@ -16,6 +17,7 @@
|
||||
"Minimal": [
|
||||
"WPFTweaksConsumerFeatures",
|
||||
"WPFTweaksDisableExplorerAutoDiscovery",
|
||||
"WPFTweaksWPBT",
|
||||
"WPFTweaksServices",
|
||||
"WPFTweaksTelemetry"
|
||||
]
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
"OriginalValue": "<RemoveEntry>"
|
||||
}
|
||||
],
|
||||
"link": "https://winutil.christitus.com/dev/tweaks/essential-tweaks/ah"
|
||||
"link": "https://winutil.christitus.com/dev/tweaks/essential-tweaks/activity"
|
||||
},
|
||||
"WPFTweaksHiber": {
|
||||
"Content": "Disable Hibernation",
|
||||
@@ -58,7 +58,7 @@
|
||||
"UndoScript": [
|
||||
"powercfg.exe /hibernate on"
|
||||
],
|
||||
"link": "https://winutil.christitus.com/dev/tweaks/essential-tweaks/hiber"
|
||||
"link": "https://winutil.christitus.com/dev/tweaks/essential-tweaks/hibernation"
|
||||
},
|
||||
"WPFTweaksLaptopHibernation": {
|
||||
"Content": "Set Hibernation as default (good for laptops)",
|
||||
@@ -144,7 +144,7 @@
|
||||
"OriginalValue": "1"
|
||||
}
|
||||
],
|
||||
"link": "https://winutil.christitus.com/dev/tweaks/essential-tweaks/loc"
|
||||
"link": "https://winutil.christitus.com/dev/tweaks/essential-tweaks/location"
|
||||
},
|
||||
"WPFTweaksServices": {
|
||||
"Content": "Set Services to Manual",
|
||||
@@ -1140,6 +1140,13 @@
|
||||
"Type": "DWord",
|
||||
"Value": "0",
|
||||
"OriginalValue": "<RemoveEntry>"
|
||||
},
|
||||
{
|
||||
"Path": "HKLM:\\SOFTWARE\\Policies\\BraveSoftware\\Brave",
|
||||
"Name": "BraveStatsPingEnabled",
|
||||
"Type": "DWord",
|
||||
"Value": "0",
|
||||
"OriginalValue": "<RemoveEntry>"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -1164,6 +1171,13 @@
|
||||
"Value": "0",
|
||||
"OriginalValue": "<RemoveEntry>"
|
||||
},
|
||||
{
|
||||
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
|
||||
"Name": "ofefcgjbeghpigppfmkologfjadafddi",
|
||||
"Type": "String",
|
||||
"Value": "1",
|
||||
"OriginalValue": "<RemoveEntry>"
|
||||
},
|
||||
{
|
||||
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Edge",
|
||||
"Name": "ShowRecommendationsEnabled",
|
||||
@@ -1584,71 +1598,26 @@
|
||||
"
|
||||
# Disable Defender Auto Sample Submission
|
||||
Set-MpPreference -SubmitSamplesConsent 2
|
||||
|
||||
$Memory = (Get-CimInstance Win32_PhysicalMemory | Measure-Object Capacity -Sum).Sum / 1KB
|
||||
Set-ItemProperty -Path \"HKLM:\\SYSTEM\\CurrentControlSet\\Control\" -Name SvcHostSplitThresholdInKB -Value $Memory
|
||||
"
|
||||
],
|
||||
"link": "https://winutil.christitus.com/dev/tweaks/essential-tweaks/tele"
|
||||
"link": "https://winutil.christitus.com/dev/tweaks/essential-tweaks/telemetry"
|
||||
},
|
||||
"WPFTweaksDisableEdge": {
|
||||
"Content": "Disable Edge",
|
||||
"Description": "Prevent msedge.exe from running with explorer policies.",
|
||||
"WPFTweaksRemoveEdge": {
|
||||
"Content": "Remove Microsoft Edge",
|
||||
"Description": "Unblocks Microsoft Edge uninstaller restrictions than uses that uninstaller to remove Microsoft Edge",
|
||||
"category": "z__Advanced Tweaks - CAUTION",
|
||||
"panel": "1",
|
||||
"Order": "a023_",
|
||||
"registry": [
|
||||
{
|
||||
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\DisallowRun",
|
||||
"Name": "DisableEdge",
|
||||
"Type": "String",
|
||||
"Value": "msedge.exe",
|
||||
"OriginalValue": "<RemoveEntry>"
|
||||
},
|
||||
{
|
||||
"Path": "HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer",
|
||||
"Name": "DisallowRun",
|
||||
"Type": "DWord",
|
||||
"Value": "1",
|
||||
"OriginalValue": "<RemoveEntry>"
|
||||
}
|
||||
],
|
||||
"link": ""
|
||||
},
|
||||
"WPFTweaksMakeEdgeUninstallable": {
|
||||
"Content": "Make Edge Uninstallable via settings",
|
||||
"Description": "Makes it so you can uninstall edge via settings > installed apps",
|
||||
"category": "z__Advanced Tweaks - CAUTION",
|
||||
"panel": "1",
|
||||
"Order": "a026_",
|
||||
"registry": [
|
||||
{
|
||||
"Path": "HKLM:\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Microsoft Edge",
|
||||
"Name": "NoRemove",
|
||||
"Type": "Dword",
|
||||
"Value": "0",
|
||||
"OriginalValue": "1"
|
||||
}
|
||||
],
|
||||
"Order": "a028_",
|
||||
"InvokeScript": [
|
||||
"
|
||||
$File = \"C:\\Windows\\System32\\IntegratedServicesRegionPolicySet.json\"
|
||||
|
||||
takeown /f $File
|
||||
icacls $File /grant \"Administrators:(F)\"
|
||||
|
||||
$FileContent = Get-Content $File
|
||||
$FileContent[7] = $FileContent[7] -replace \"disabled\", \"enabled\"
|
||||
Set-Content $File $FileContent
|
||||
"
|
||||
"Invoke-WinUtilRemoveEdge"
|
||||
],
|
||||
"UndoScript": [
|
||||
"
|
||||
$File = \"C:\\Windows\\System32\\IntegratedServicesRegionPolicySet.json\"
|
||||
|
||||
takeown /f $File
|
||||
icacls $File /grant \"Administrators:(F)\"
|
||||
|
||||
$FileContent = Get-Content $File
|
||||
$FileContent[7] = $FileContent[7] -replace \"enabled\", \"disabled\"
|
||||
Set-Content $File $FileContent
|
||||
Write-Host 'Installing Microsoft Edge...'
|
||||
winget install Microsoft.Edge --source winget
|
||||
"
|
||||
],
|
||||
"link": ""
|
||||
@@ -1663,13 +1632,45 @@
|
||||
{
|
||||
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\TimeZoneInformation",
|
||||
"Name": "RealTimeIsUniversal",
|
||||
"Type": "DWord",
|
||||
"Type": "QWord",
|
||||
"Value": "1",
|
||||
"OriginalValue": "0"
|
||||
}
|
||||
],
|
||||
"link": "https://winutil.christitus.com/dev/tweaks/z--advanced-tweaks---caution/utc"
|
||||
},
|
||||
"WPFTweaksRemoveOneDrive": {
|
||||
"Content": "Remove OneDrive",
|
||||
"Description": "Denys permission to remove onedrive user files than uses its own uninstaller to remove it than brings back permissions",
|
||||
"category": "z__Advanced Tweaks - CAUTION",
|
||||
"panel": "1",
|
||||
"Order": "a029_",
|
||||
"InvokeScript": [
|
||||
"
|
||||
# Deny permission to remove OneDrive folder
|
||||
icacls $Env:OneDrive /deny \"Administrators:(D,DC)\"
|
||||
|
||||
Write-Host \"Uninstalling OneDrive...\"
|
||||
Start-Process 'C:\\Windows\\System32\\OneDriveSetup.exe' -ArgumentList '/uninstall' -Wait
|
||||
|
||||
# Some of OneDrive files use explorer, and OneDrive uses FileCoAuth
|
||||
Write-Host \"Removing leftover OneDrive Files...\"
|
||||
Stop-Process -Name FileCoAuth,Explorer
|
||||
Remove-Item \"$Env:LocalAppData\\Microsoft\\OneDrive\" -Recurse -Force
|
||||
Remove-Item \"C:\\ProgramData\\Microsoft OneDrive\" -Recurse -Force
|
||||
|
||||
# Grant back permission to accses OneDrive folder
|
||||
icacls $Env:OneDrive /grant \"Administrators:(D,DC)\"
|
||||
"
|
||||
],
|
||||
"UndoScript": [
|
||||
"
|
||||
Write-Host \"Installing OneDrive\"
|
||||
winget install Microsoft.Onedrive --source winget
|
||||
"
|
||||
],
|
||||
"link": "https://winutil.christitus.com/dev/tweaks/z--advanced-tweaks---caution/removeonedrive"
|
||||
},
|
||||
"WPFTweaksRemoveHome": {
|
||||
"Content": "Remove Home from Explorer",
|
||||
"Description": "Removes the Home from Explorer and sets This PC as default",
|
||||
@@ -1688,7 +1689,7 @@
|
||||
Set-ItemProperty -Path \"HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\" -Name LaunchTo -Value 0
|
||||
"
|
||||
],
|
||||
"link": "https://winutil.christitus.com/dev/tweaks/z--advanced-tweaks---caution/removehomegallery"
|
||||
"link": "https://winutil.christitus.com/dev/tweaks/z--advanced-tweaks---caution/removehome"
|
||||
},
|
||||
"WPFTweaksRemoveGallery": {
|
||||
"Content": "Remove Gallery from explorer",
|
||||
@@ -1706,7 +1707,7 @@
|
||||
New-Item \"HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Desktop\\NameSpace\\{e88865ea-0e1c-4e20-9aa6-edcd0212c87c}\"
|
||||
"
|
||||
],
|
||||
"link": "https://winutil.christitus.com/dev/tweaks/z--advanced-tweaks---caution/removehomegallery"
|
||||
"link": "https://winutil.christitus.com/dev/tweaks/z--advanced-tweaks---caution/removegallery"
|
||||
},
|
||||
"WPFTweaksDisplay": {
|
||||
"Content": "Set Display for Performance",
|
||||
@@ -1785,13 +1786,6 @@
|
||||
"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",
|
||||
@@ -2048,6 +2042,12 @@
|
||||
Write-Host \"Remove Copilot\"
|
||||
Get-AppxPackage -AllUsers *Copilot* | Remove-AppxPackage -AllUsers
|
||||
Get-AppxPackage -AllUsers Microsoft.MicrosoftOfficeHub | Remove-AppxPackage -AllUsers
|
||||
|
||||
$Appx = (Get-AppxPackage MicrosoftWindows.Client.CoreAI).PackageFullName
|
||||
$Sid = (Get-LocalUser $Env:UserName).Sid.Value
|
||||
|
||||
New-Item \"HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Appx\\AppxAllUserStore\\EndOfLife\\$Sid\\$Appx\" -Force
|
||||
Remove-AppxPackage $Appx
|
||||
"
|
||||
],
|
||||
"UndoScript": [
|
||||
@@ -2061,9 +2061,9 @@
|
||||
"WPFTweaksWPBT": {
|
||||
"Content": "Disable Windows Platform Binary Table (WPBT)",
|
||||
"Description": "If enabled then allows your computer vendor to execute a program each time it boots. It enables computer vendors to force install anti-theft software, software drivers, or a software program conveniently. This could also be a security risk.",
|
||||
"category": "z__Advanced Tweaks - CAUTION",
|
||||
"category": "Essential Tweaks",
|
||||
"panel": "1",
|
||||
"Order": "a025_",
|
||||
"Order": "a005_",
|
||||
"registry": [
|
||||
{
|
||||
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager",
|
||||
@@ -2154,7 +2154,7 @@
|
||||
|
||||
Copy-Item $hosts \"$hosts.bak\"
|
||||
Invoke-WebRequest $hostsUrl -OutFile $hosts
|
||||
ipconfig flushdns
|
||||
ipconfig /flushdns
|
||||
|
||||
Write-Host \"Added Adobe url block list from host file\"
|
||||
"
|
||||
@@ -2166,7 +2166,7 @@
|
||||
|
||||
Copy-Item $backup $hosts
|
||||
Remove-Item $backup
|
||||
ipconfig flushdns
|
||||
ipconfig /flushdns
|
||||
|
||||
Write-Host \"Removed Adobe url block list from host file\"
|
||||
"
|
||||
@@ -2227,7 +2227,7 @@
|
||||
"WPFTweaksDVR": {
|
||||
"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",
|
||||
"category": "z__Advanced Tweaks - CAUTION",
|
||||
"panel": "1",
|
||||
"Order": "a005_",
|
||||
"registry": [
|
||||
@@ -2267,7 +2267,7 @@
|
||||
"Type": "DWord"
|
||||
}
|
||||
],
|
||||
"link": "https://winutil.christitus.com/dev/tweaks/essential-tweaks/dvr"
|
||||
"link": "https://winutil.christitus.com/dev/tweaks/essential-tweaks/gamedvr"
|
||||
},
|
||||
"WPFTweaksIPv46": {
|
||||
"Content": "Prefer IPv4 over IPv6",
|
||||
@@ -2330,7 +2330,7 @@
|
||||
"UndoScript": [
|
||||
"Enable-NetAdapterBinding -Name * -ComponentID ms_tcpip6"
|
||||
],
|
||||
"link": "https://winutil.christitus.com/dev/tweaks/z--advanced-tweaks---caution/disableipsix"
|
||||
"link": "https://winutil.christitus.com/dev/tweaks/z--advanced-tweaks---caution/disableipv6"
|
||||
},
|
||||
"WPFTweaksDisableBGapps": {
|
||||
"Content": "Disable Background Apps",
|
||||
@@ -2537,83 +2537,6 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"WPFToggleSnapWindow": {
|
||||
"Content": "Snap Window",
|
||||
"Description": "If enabled you can align windows by dragging them. | Relogin Required",
|
||||
"category": "Customize Preferences",
|
||||
"panel": "2",
|
||||
"Order": "a106_",
|
||||
"Type": "Toggle",
|
||||
"registry": [
|
||||
{
|
||||
"Path": "HKCU:\\Control Panel\\Desktop",
|
||||
"Name": "WindowArrangementActive",
|
||||
"Value": "1",
|
||||
"OriginalValue": "0",
|
||||
"DefaultState": "true",
|
||||
"Type": "String"
|
||||
}
|
||||
],
|
||||
"link": "https://winutil.christitus.com/dev/tweaks/customize-preferences/snapwindow"
|
||||
},
|
||||
"WPFToggleSnapFlyout": {
|
||||
"Content": "Snap Assist Flyout",
|
||||
"Description": "If disabled then Snap preview is disabled when maximize button is hovered.",
|
||||
"category": "Customize Preferences",
|
||||
"panel": "2",
|
||||
"Order": "a107_",
|
||||
"Type": "Toggle",
|
||||
"registry": [
|
||||
{
|
||||
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
|
||||
"Name": "EnableSnapAssistFlyout",
|
||||
"Value": "1",
|
||||
"OriginalValue": "0",
|
||||
"DefaultState": "true",
|
||||
"Type": "DWord"
|
||||
}
|
||||
],
|
||||
"InvokeScript": [
|
||||
"
|
||||
Invoke-WinUtilExplorerUpdate -action \"restart\"
|
||||
"
|
||||
],
|
||||
"UndoScript": [
|
||||
"
|
||||
Invoke-WinUtilExplorerUpdate -action \"restart\"
|
||||
"
|
||||
],
|
||||
"link": "https://winutil.christitus.com/dev/tweaks/customize-preferences/snapflyout"
|
||||
},
|
||||
"WPFToggleSnapSuggestion": {
|
||||
"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": "a108_",
|
||||
"Type": "Toggle",
|
||||
"registry": [
|
||||
{
|
||||
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
|
||||
"Name": "SnapAssist",
|
||||
"Value": "1",
|
||||
"OriginalValue": "0",
|
||||
"DefaultState": "true",
|
||||
"Type": "DWord"
|
||||
}
|
||||
],
|
||||
"InvokeScript": [
|
||||
"
|
||||
Invoke-WinUtilExplorerUpdate -action \"restart\"
|
||||
"
|
||||
],
|
||||
"UndoScript": [
|
||||
"
|
||||
Invoke-WinUtilExplorerUpdate -action \"restart\"
|
||||
"
|
||||
],
|
||||
"link": "https://winutil.christitus.com/dev/tweaks/customize-preferences/snapsuggestion"
|
||||
},
|
||||
"WPFToggleMouseAcceleration": {
|
||||
"Content": "Mouse Acceleration",
|
||||
"Description": "If Enabled then Cursor movement is affected by the speed of your physical mouse movements.",
|
||||
@@ -2827,25 +2750,6 @@
|
||||
],
|
||||
"link": "https://winutil.christitus.com/dev/tweaks/customize-preferences/taskview"
|
||||
},
|
||||
"WPFToggleTaskbarWidgets": {
|
||||
"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",
|
||||
"registry": [
|
||||
{
|
||||
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
|
||||
"Name": "TaskbarDa",
|
||||
"Value": "1",
|
||||
"OriginalValue": "0",
|
||||
"DefaultState": "true",
|
||||
"Type": "DWord"
|
||||
}
|
||||
],
|
||||
"link": "https://winutil.christitus.com/dev/tweaks/customize-preferences/taskbarwidgets"
|
||||
},
|
||||
"WPFToggleTaskbarAlignment": {
|
||||
"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.",
|
||||
|
||||
@@ -4,6 +4,7 @@ toc: true
|
||||
---
|
||||
|
||||
### Download not working
|
||||
|
||||
If `https://christitus.com/win` is not working, or you want to download the code from GitHub directly, you can use the direct download link:
|
||||
|
||||
```
|
||||
@@ -21,192 +22,208 @@ If it still isn't working and you live in India, it might be due to India blocki
|
||||
|
||||
If you are still having issues, try using a **VPN**, or changing your **DNS provider** to one of following two providers:
|
||||
|
||||
| Provider | Primary DNS | Secondary DNS |
|
||||
|:------------:|:------------:|:-------------:|
|
||||
| Cloudflare | `1.1.1.1` | `1.0.0.1` |
|
||||
| Google | `8.8.8.8` | `8.8.4.4` |
|
||||
|
||||
| Provider | Primary DNS | Secondary DNS |
|
||||
| :--------: | :---------: | :-----------: |
|
||||
| Cloudflare | `1.1.1.1` | `1.0.0.1` |
|
||||
| Google | `8.8.8.8` | `8.8.4.4` |
|
||||
|
||||
### Script blocked by Execution Policy
|
||||
1. Ensure you are running PowerShell as admin: Press `Windows Key`+`X` and select *PowerShell (Admin)* in Windows 10, or `Windows Terminal (Admin)` in Windows 11.
|
||||
|
||||
1. Ensure you are running PowerShell as admin: Press `Windows Key`+`X` and select _PowerShell (Admin)_ in Windows 10, or `Windows Terminal (Admin)` in Windows 11.
|
||||
2. In the PowerShell window, type this to allow unsigned code to execute and run the installation script:
|
||||
|
||||
```
|
||||
Set-ExecutionPolicy Unrestricted -Scope Process -Force
|
||||
irm https://christitus.com/win | iex
|
||||
```
|
||||
```
|
||||
Set-ExecutionPolicy Unrestricted -Scope Process -Force
|
||||
irm https://christitus.com/win | iex
|
||||
```
|
||||
|
||||
## Runtime Issues
|
||||
|
||||
### WinGet configuration
|
||||
|
||||
If you have not installed anything using PowerShell before, you may be prompted to configure WinGet. This requires user interaction on first run. You will need to manually type `y` into the PowerShell console and press enter to continue. Once you do it the first time, you will not be prompted again.
|
||||
|
||||
### MicroWin: Error `0x80041031`
|
||||
|
||||
This error code typically indicates an issue related to Windows Management Instrumentation (WMI). Here are a few steps you can try to resolve the issue:
|
||||
|
||||
1. **Reboot Your Computer:**
|
||||
|
||||
Sometimes, a simple reboot can resolve temporary issues. Restart your computer and try mounting the ISO again.
|
||||
Sometimes, a simple reboot can resolve temporary issues. Restart your computer and try mounting the ISO again.
|
||||
|
||||
3. **Check for System Corruption:**
|
||||
2. **Check for System Corruption:**
|
||||
|
||||
Run the System File Checker (SFC) utility to scan and repair system files that may be corrupted.
|
||||
```powershell
|
||||
sfc /scannow
|
||||
```
|
||||
Run the System File Checker (SFC) utility to scan and repair system files that may be corrupted.
|
||||
|
||||
4. **Update Your System:**
|
||||
```powershell
|
||||
sfc /scannow
|
||||
```
|
||||
|
||||
Make sure your operating system is up-to-date. Check for Windows updates and install any pending updates.
|
||||
3. **Update Your System:**
|
||||
|
||||
5. **Check WMI Service:**
|
||||
Make sure your operating system is up-to-date. Check for Windows updates and install any pending updates.
|
||||
|
||||
Ensure that the Windows Management Instrumentation (WMI) service is running. You can do this through the Services application:
|
||||
- Press `Win`+`R` to open the Run dialog.
|
||||
- Type `services.msc` and press Enter.
|
||||
- Locate *Windows Management Instrumentation* in the list.
|
||||
- Make sure to set its status to "Running" and the startup type to "Automatic".
|
||||
4. **Check WMI Service:**
|
||||
|
||||
6. **Check for Security Software Interference:**
|
||||
Ensure that the Windows Management Instrumentation (WMI) service is running. You can do this through the Services application:
|
||||
- Press `Win`+`R` to open the Run dialog.
|
||||
- Type `services.msc` and press Enter.
|
||||
- Locate _Windows Management Instrumentation_ in the list.
|
||||
- Make sure to set its status to "Running" and the startup type to "Automatic".
|
||||
|
||||
Security software can sometimes interfere with WMI operations. Temporarily disable your anti-virus or security software and check if the issue persists. WMI is a common attack/infection vector, so many anti-virus programs will limit its usage.
|
||||
5. **Check for Security Software Interference:**
|
||||
|
||||
7. **Event Viewer:**
|
||||
Security software can sometimes interfere with WMI operations. Temporarily disable your anti-virus or security software and check if the issue persists. WMI is a common attack/infection vector, so many anti-virus programs will limit its usage.
|
||||
|
||||
Check the Event Viewer for more detailed error information. Look for entries related to the `80041031` error and check if there are any additional details that can help identify the cause.
|
||||
6. **Event Viewer:**
|
||||
|
||||
- Press `Win`+`X` and select *Event Viewer*.
|
||||
- Navigate to *Windows Logs* > *Application* or *System*.
|
||||
- Look for entries with the source related to WMI or the application use to mount the ISO.
|
||||
Check the Event Viewer for more detailed error information. Look for entries related to the `80041031` error and check if there are any additional details that can help identify the cause.
|
||||
- Press `Win`+`X` and select _Event Viewer_.
|
||||
- Navigate to _Windows Logs_ > _Application_ or _System_.
|
||||
- Look for entries with the source related to WMI or the application use to mount the ISO.
|
||||
|
||||
8. **ISO File Integrity:**
|
||||
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.
|
||||
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.
|
||||
|
||||
## Windows Issues
|
||||
|
||||
### Windows takes longer to shut down
|
||||
|
||||
This could be for a number of reasons:
|
||||
|
||||
- Turn on fast startup: Press `Windows key`+`R`, then type:
|
||||
```bat
|
||||
control /name Microsoft.PowerOptions /page pageGlobalSettings
|
||||
```
|
||||
- If that doesn't work, disable Hibernation:
|
||||
- Press `Windows Key`+`X` and select *PowerShell (Admin)* in Windows 10, or `Windows Terminal (Admin)` in Windows 11.
|
||||
- In the PowerShell window, type:
|
||||
```bat
|
||||
powercfg /H off
|
||||
```
|
||||
|
||||
```bat
|
||||
control /name Microsoft.PowerOptions /page pageGlobalSettings
|
||||
```
|
||||
|
||||
If that doesn't work, disable Hibernation:
|
||||
|
||||
- Press `Windows Key`+`X` and select _PowerShell (Admin)_ in Windows 10, or `Windows Terminal (Admin)` in Windows 11. then type:
|
||||
|
||||
```bat
|
||||
powercfg /H off
|
||||
```
|
||||
|
||||
Related issue: [#69](https://github.com/ChrisTitusTech/Winutil/issues/69)
|
||||
|
||||
### Windows Search does not work
|
||||
Enable Background Apps. Related issues: [#69](https://github.com/ChrisTitusTech/Winutil/issues/69) [95](https://github.com/ChrisTitusTech/Winutil/issues/95) [#232](https://github.com/ChrisTitusTech/Winutil/issues/232)
|
||||
|
||||
Enable Background Apps. Related issues: [#69](https://github.com/ChrisTitusTech/Winutil/issues/69) [#95](https://github.com/ChrisTitusTech/Winutil/issues/95) [#232](https://github.com/ChrisTitusTech/Winutil/issues/232)
|
||||
|
||||
### Xbox Game Bar Activation Broken
|
||||
|
||||
Set the Xbox Accessory Management Service to Automatic:
|
||||
|
||||
```
|
||||
```powershell
|
||||
Get-Service -Name "XboxGipSvc" | Set-Service -StartupType Automatic
|
||||
```
|
||||
|
||||
Related issue: [#198](https://github.com/ChrisTitusTech/Winutil/issues/198)
|
||||
|
||||
### Windows 11: Quick Settings no longer works
|
||||
Launch the Script and click *Enable Action Center*.
|
||||
|
||||
Launch the Script and click _Enable Action Center_.
|
||||
|
||||
### Explorer (file browser) no longer launches
|
||||
- Press `Windows key`+`R` then type:
|
||||
```bat
|
||||
control /name Microsoft.FolderOptions
|
||||
```
|
||||
- Change the *Open File Explorer to* option to *This PC*.
|
||||
|
||||
- Press `Windows key`+`R` then type:
|
||||
|
||||
```bat
|
||||
control /name Microsoft.FolderOptions
|
||||
```
|
||||
|
||||
- Change the _Open File Explorer to_ option to _This PC_.
|
||||
|
||||
### Battery drains too fast
|
||||
|
||||
If you're using a laptop or tablet and find your battery drains too fast, please try the below troubleshooting steps, and report the results back to the Winutil community.
|
||||
|
||||
1. **Check Battery Health:**
|
||||
- Press `Windows Key`+`X` and select *PowerShell (Admin)* in Windows 10, or `Windows Terminal (Admin)` in Windows 11.
|
||||
- Run the following command to generate a battery report:
|
||||
```powershell
|
||||
powercfg /batteryreport /output "C:\battery_report.html"
|
||||
```
|
||||
- Open the generated HTML report to review information about battery health and usage. A battery with poor health may hold less charge, discharge faster, or cause other issues.
|
||||
- Press `Windows Key`+`X` and select _PowerShell (Admin)_ in Windows 10, or `Windows Terminal (Admin)` in Windows 11.
|
||||
- Run the following command to generate a battery report:
|
||||
```powershell
|
||||
powercfg /batteryreport /output "C:\battery_report.html"
|
||||
```
|
||||
- Open the generated HTML report to review information about battery health and usage. A battery with poor health may hold less charge, discharge faster, or cause other issues.
|
||||
|
||||
2. **Review Power Settings:**
|
||||
- Open the Settings app, and go to *System* > *Power & sleep*.
|
||||
- Adjust power plan settings based on your preferences and usage patterns.
|
||||
- Click on *Additional power settings* to access advanced power settings that may help.
|
||||
- Open the Settings app, and go to _System_ > _Power & sleep_.
|
||||
- Adjust power plan settings based on your preferences and usage patterns.
|
||||
- Click on _Additional power settings_ to access advanced power settings that may help.
|
||||
|
||||
3. **Identify Power-Hungry Apps:**
|
||||
- Right-click on the taskbar and select *Task Manager*.
|
||||
- Navigate to the *Processes* tab to identify applications with high CPU or memory usage.
|
||||
- Consider reconfiguring, closing, disabling, or uninstalling applications that use a lot of resources.
|
||||
- Right-click on the taskbar and select _Task Manager_.
|
||||
- Navigate to the _Processes_ tab to identify applications with high CPU or memory usage.
|
||||
- Consider reconfiguring, closing, disabling, or uninstalling applications that use a lot of resources.
|
||||
|
||||
4. **Update Drivers:**
|
||||
- Visit your device manufacturer's website or use Windows Update to check for driver updates.
|
||||
- Ensure graphics, chipset, and other essential drivers are up to date.
|
||||
- Visit your device manufacturer's website or use Windows Update to check for driver updates.
|
||||
- Ensure graphics, chipset, and other essential drivers are up to date.
|
||||
|
||||
5. **Check for Windows Updates:**
|
||||
- Open the Settings app, and go to *Update & Security* > *Windows Update*.
|
||||
- Check for and install any available updates for your operating system.
|
||||
- Open the Settings app, and go to _Update & Security_ > _Windows Update_.
|
||||
- Check for and install any available updates for your operating system.
|
||||
|
||||
6. **Reduce Screen Brightness:**
|
||||
- Open the Settings app, and go to *System* > *Display*.
|
||||
- Adjust screen brightness based on your preferences and lighting conditions.
|
||||
- Open the Settings app, and go to _System_ > _Display_.
|
||||
- Adjust screen brightness based on your preferences and lighting conditions.
|
||||
|
||||
7. **Enable Battery Saver:**
|
||||
- Open the Settings app, and go to *System* > *Battery*.
|
||||
- Turn on *Battery saver* to limit background activity and conserve power.
|
||||
- Open the Settings app, and go to _System_ > _Battery_.
|
||||
- Turn on _Battery saver_ to limit background activity and conserve power.
|
||||
|
||||
8. **Check Power Usage in Settings:**
|
||||
- Open the Settings app, and go to *System* > *Battery* > *Battery usage by app*.
|
||||
- Review the list of apps and their power usage. Disable or uninstall any you don't need.
|
||||
- Open the Settings app, and go to _System_ > _Battery_ > _Battery usage by app_.
|
||||
- Review the list of apps and their power usage. Disable or uninstall any you don't need.
|
||||
|
||||
9. **Check Background Apps:**
|
||||
- Open the Settings app, and go to *Privacy* > *Background apps*.
|
||||
- Disable or uninstall unnecessary apps running in the background.
|
||||
- Open the Settings app, and go to _Privacy_ > _Background apps_.
|
||||
- Disable or uninstall unnecessary apps running in the background.
|
||||
|
||||
10. **Use `powercfg` for Analysis:**
|
||||
- Press `Windows Key`+`X` and select *PowerShell (Admin)* in Windows 10, or `Windows Terminal (Admin)` in Windows 11.
|
||||
- Press `Windows Key`+`X` and select _PowerShell (Admin)_ in Windows 10, or `Windows Terminal (Admin)` in Windows 11.
|
||||
- Run the following command to analyze energy usage and generate a report:
|
||||
```powershell
|
||||
powercfg /energy /output "C:\energy_report.html"
|
||||
```
|
||||
```powershell
|
||||
powercfg /energy /output "C:\energy_report.html"
|
||||
```
|
||||
- Open the generated HTML report to identify energy consumption patterns.
|
||||
|
||||
11. **Review Event Logs:**
|
||||
- Open Event Viewer by searching for it in the Start menu.
|
||||
- Navigate to *Windows Logs* > *System*.
|
||||
- Look for events with the source *Power-Troubleshooter* to identify power-related events. These may highlight battery, input power, and other issues.
|
||||
- Navigate to _Windows Logs_ > _System_.
|
||||
- Look for events with the source _Power-Troubleshooter_ to identify power-related events. These may highlight battery, input power, and other issues.
|
||||
|
||||
12. **Check Wake-up Sources:**
|
||||
- Press `Windows Key`+`X` and select *PowerShell (Admin)* in Windows 10, or `Windows Terminal (Admin)` in Windows 11.
|
||||
- Press `Windows Key`+`X` and select _PowerShell (Admin)_ in Windows 10, or `Windows Terminal (Admin)` in Windows 11.
|
||||
- Use the command `powercfg /requests` to identify processes preventing sleep.
|
||||
- Use the command `powercfg /waketimers` to view active wake timers.
|
||||
- Check Task Scheduler to see if any of the discovered processes are scheduled to start on boot or at regular intervals.
|
||||
|
||||
13. **Advanced Identification of Power-Hungry Apps:**
|
||||
- Open Resource Monitor from the Start menu.
|
||||
- Navigate to the *CPU*, *Memory*, *Network*, and other tabs to identify processes with high resource usage.
|
||||
- Navigate to the _CPU_, _Memory_, _Network_, and other tabs to identify processes with high resource usage.
|
||||
- Consider reconfiguring, closing, disabling, or uninstalling applications that use a lot of resources.
|
||||
|
||||
14. **Disable Activity History:**
|
||||
- Open the Settings app, and go to *Privacy* > *Activity history*.
|
||||
- Turn off *Let Windows collect my activities from this PC*.
|
||||
- Open the Settings app, and go to _Privacy_ > _Activity history_.
|
||||
- Turn off _Let Windows collect my activities from this PC_.
|
||||
|
||||
15. **Prevent Network Adapters From Waking PC:**
|
||||
- Open Device Manager by searching for it in the Start menu.
|
||||
- Locate your network adapter, right-click, and go to *Properties*.
|
||||
- Under the *Power Management* tab, uncheck the option that allows the device to wake the computer.
|
||||
- Locate your network adapter, right-click, and go to _Properties_.
|
||||
- Under the _Power Management_ tab, uncheck the option that allows the device to wake the computer.
|
||||
|
||||
16. **Review Installed Applications:**
|
||||
- Manually review installed applications by searching for *Add or remove programs* in the Start menu.
|
||||
- Manually review installed applications by searching for _Add or remove programs_ in the Start menu.
|
||||
- Check settings/preferences of individual applications for power-related options.
|
||||
- Uninstall unnecessary or problematic software.
|
||||
|
||||
These troubleshooting steps are generic, but should help in most situations. You should have these key takeaways:
|
||||
|
||||
- Battery health is the most significant limiter on your device's runtime. A battery in poor health usually cannot be made to last like it used to, simply by closing some applications. Consider replacing your battery.
|
||||
- Background applications that use CPU and memory, make lots of or large network requests, read/write to disk frequently, or that keep your PC awake when it could be conserving energy are the next major concern. Avoid installing programs you don't need, only use programs you trust, and configure applications to use as little power and run as infrequently as possible.
|
||||
- Windows performs a lot of tasks that may affect battery life by default. Changing settings, stopping scheduled tasks, and disabling features can help the system stay in lower power states to conserve battery.
|
||||
|
||||
@@ -1,95 +1,43 @@
|
||||
---
|
||||
title: Developer Reference
|
||||
weight: 3
|
||||
---
|
||||
|
||||
> [!NOTE]
|
||||
> This section contains technical documentation for developers. For end-user documentation, see the [User Guide](../userguide/).
|
||||
|
||||
## Architecture
|
||||
|
||||
- [Architecture & Design](architecture/) - Code structure, data flow, and how Winutil works internally
|
||||
|
||||
## Tweaks
|
||||
|
||||
### Essential Tweaks
|
||||
|
||||
- [Create Restore Point](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/RestorePoint.md)
|
||||
- [Debloat Edge](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/EdgeDebloat.md)
|
||||
- [Delete Temporary Files](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/DeleteTempFiles.md)
|
||||
- [Disable Activity History](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/Activity.md)
|
||||
- [Disable ConsumerFeatures](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/ConsumerFeatures.md)
|
||||
- [Disable GameDVR](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/GameDVR.md)
|
||||
- [Disable Hibernation](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/Hibernation.md)
|
||||
- [Disable Location Tracking](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/Location.md)
|
||||
- [Disable Powershell 7 Telemetry](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/Powershell7Tele.md)
|
||||
- [Disable Storage Sense](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/Storage.md)
|
||||
- [Disable Telemetry](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/Telemetry.md)
|
||||
- [Enable End Task With Right Click](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/EndTaskOnTaskbar.md)
|
||||
- [Prefer IPv4 over IPv6](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/IPv46.md)
|
||||
- [Run Disk Cleanup](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/DiskCleanup.md)
|
||||
- [Set Hibernation as default (good for laptops)](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/LaptopHibernation.md)
|
||||
- [Set Services to Manual](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/Services.md)
|
||||
{{< autolinks section="dev/tweaks/essential-tweaks" >}}
|
||||
|
||||
### Advanced Tweaks (CAUTION)
|
||||
|
||||
- [Adobe Network Block](tweaks/z--advanced-tweaks---caution/blockadobenet/)
|
||||
- [Disable Background Apps](tweaks/z--advanced-tweaks---caution/disablebgapps/)
|
||||
- [Disable Fullscreen Optimizations](tweaks/z--advanced-tweaks---caution/disablefso/)
|
||||
- [Disable IPv6](tweaks/z--advanced-tweaks---caution/disableipsix/)
|
||||
- [Disable Microsoft Copilot](tweaks/z--advanced-tweaks---caution/removecopilot/)
|
||||
- [Disable Notification Tray/Calendar](tweaks/z--advanced-tweaks---caution/disablenotifications/)
|
||||
- [Disable Teredo](tweaks/z--advanced-tweaks---caution/teredo/)
|
||||
- [DNS](tweaks/z--advanced-tweaks---caution/changedns/)
|
||||
- [Remove ALL MS Store Apps - NOT RECOMMENDED](tweaks/z--advanced-tweaks---caution/debloat/)
|
||||
- [Remove Home and Gallery from explorer](tweaks/z--advanced-tweaks---caution/removehomegallery/)
|
||||
- [Make Edge Uninstallable](tweaks/z--advanced-tweaks---caution/edgeuninstall/)
|
||||
- [Run OO Shutup 10](tweaks/z--advanced-tweaks---caution/oosubutton/)
|
||||
- [Set Classic Right-Click Menu ](tweaks/z--advanced-tweaks---caution/rightclickmenu/)
|
||||
- [Set Display for Performance](tweaks/z--advanced-tweaks---caution/display/)
|
||||
- [Set Time to UTC (Dual Boot)](tweaks/z--advanced-tweaks---caution/utc/)
|
||||
{{< autolinks section="dev/tweaks/z--advanced-tweaks---caution" >}}
|
||||
|
||||
### Customize Preferences
|
||||
|
||||
- [Bing Search in Start Menu](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/BingSearch.md)
|
||||
- [Center Taskbar Items](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/TaskbarAlignment.md)
|
||||
- [Dark Theme for Windows](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/DarkMode.md)
|
||||
- [Detailed BSoD](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/DetailedBSoD.md)
|
||||
- [Mouse Acceleration](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/MouseAcceleration.md)
|
||||
- [NumLock on Startup](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/NumLock.md)
|
||||
- [Search Button in Taskbar](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/TaskbarSearch.md)
|
||||
- [Show File Extensions](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/ShowExt.md)
|
||||
- [Show Hidden Files](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/HiddenFiles.md)
|
||||
- [Snap Assist Flyout](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/SnapFlyout.md)
|
||||
- [Snap Assist Suggestion](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/SnapSuggestion.md)
|
||||
- [Snap Window](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/SnapWindow.md)
|
||||
- [Sticky Keys](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/StickyKeys.md)
|
||||
- [Task View Button in Taskbar](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/TaskView.md)
|
||||
- [Verbose Messages During Logon](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/VerboseLogon.md)
|
||||
- [Widgets Button in Taskbar](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/TaskbarWidgets.md)
|
||||
{{< autolinks section="dev/tweaks/customize-preferences" >}}
|
||||
|
||||
### Performance Plans
|
||||
|
||||
- [Add and Remove Ultimate Performance Profile](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Performance-Plans/Profile.md)
|
||||
{{< autolinks section="dev/tweaks/performance-plans" >}}
|
||||
|
||||
## Features
|
||||
|
||||
### Fixes
|
||||
|
||||
- [Remove Adobe Creative Cloud](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/RunAdobeCCCleanerTool.md)
|
||||
- [Reset Network](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/Network.md)
|
||||
- [Reset Windows Update](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/Update.md)
|
||||
- [Set Up Autologin](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/Autologin.md)
|
||||
- [System Corruption Scan](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/CorruptionScan.md)
|
||||
- [WinGet Reinstall](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/Winget.md)
|
||||
{{< autolinks section="dev/features/fixes" >}}
|
||||
|
||||
### Legacy Windows Panels
|
||||
|
||||
- [Control Panel](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/control.md)
|
||||
- [Network Connections](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/network.md)
|
||||
- [Power Panel](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/power.md)
|
||||
- [Printer Settings](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/printer.md)
|
||||
- [Region](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/region.md)
|
||||
- [Sound Settings](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/sound.md)
|
||||
- [System Properties](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/system.md)
|
||||
- [User Accounts](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/user.md)
|
||||
{{< autolinks section="dev/features/legacy-windows-panels" >}}
|
||||
|
||||
### Features
|
||||
|
||||
- [All .Net Framework (2,3,4)](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/dotnet.md)
|
||||
- [Disable Legacy F8 Boot Recovery](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/DisableLegacyRecovery.md)
|
||||
- [Enable Legacy F8 Boot Recovery](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/EnableLegacyRecovery.md)
|
||||
- [Enable Daily Registry Backup Task 12.30am](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/RegBackup.md)
|
||||
- [HyperV Virtualization](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/hyperv.md)
|
||||
- [Legacy Media (WMP, DirectPlay)](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/legacymedia.md)
|
||||
- [NFS - Network File System](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/nfs.md)
|
||||
- [Windows Sandbox](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/Sandbox.md)
|
||||
- [Windows Subsystem for Linux](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/wsl.md)
|
||||
{{< autolinks section="dev/features/features" >}}
|
||||
|
||||
550
docs/content/dev/architecture.md
Normal file
550
docs/content/dev/architecture.md
Normal file
@@ -0,0 +1,550 @@
|
||||
---
|
||||
title: Architecture & Design
|
||||
weight: 1
|
||||
toc: true
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Winutil is a PowerShell-based Windows utility with a WPF (Windows Presentation Foundation) GUI. This document explains the architecture, code structure, and how different components work together.
|
||||
|
||||
## High-Level Architecture
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────┐
|
||||
│ Winutil GUI │
|
||||
│ (WPF XAML Interface) │
|
||||
└──────────────────┬──────────────────────────────────┘
|
||||
│
|
||||
┌─────────┴─────────┐
|
||||
│ │
|
||||
┌────────▼──────┐ ┌───────▼────────┐
|
||||
│ Public APIs │ │ Private APIs │
|
||||
│ (User-facing)│ │ (Internal) │
|
||||
└───────┬───────┘ └───────┬────────┘
|
||||
│ │
|
||||
└────────┬──────────┘
|
||||
│
|
||||
┌────────────▼────────────┐
|
||||
│ Configuration Files │
|
||||
│ (JSON definitions) │
|
||||
└────────────┬────────────┘
|
||||
│
|
||||
┌────────────▼────────────┐
|
||||
│ External Tools │
|
||||
│ (WinGet, Chocolatey) │
|
||||
└─────────────────────────┘
|
||||
```
|
||||
|
||||
## Project Structure
|
||||
|
||||
### Directory Layout
|
||||
|
||||
```
|
||||
winutil/
|
||||
├── Compile.ps1 # Build script that combines all files
|
||||
├── winutil.ps1 # Compiled output (generated)
|
||||
├── scripts/
|
||||
│ ├── main.ps1 # Entry point and GUI initialization
|
||||
│ └── start.ps1 # Startup logic
|
||||
├── functions/
|
||||
│ ├── private/ # Internal helper functions
|
||||
│ │ ├── Get-WinUtilVariables.ps1
|
||||
│ │ ├── Install-WinUtilWinget.ps1
|
||||
│ │ └── ...
|
||||
│ ├── public/ # User-facing functions
|
||||
│ │ ├── Initialize-WPFUI.ps1
|
||||
│ │ └── ...
|
||||
│ └── microwin/ # MicroWin specific functions
|
||||
│ ├── Invoke-Microwin.ps1
|
||||
│ └── ...
|
||||
├── config/ # JSON configuration files
|
||||
│ ├── applications.json # Application definitions
|
||||
│ ├── tweaks.json # Tweak definitions
|
||||
│ ├── feature.json # Windows feature definitions
|
||||
│ └── preset.json # Preset configurations
|
||||
├── xaml/
|
||||
│ └── inputXML.xaml # GUI layout definition
|
||||
└── docs/ # Documentation
|
||||
```
|
||||
|
||||
### Key Components
|
||||
|
||||
#### 1. Compile.ps1
|
||||
**Purpose**: Combines all separate script files into a single `winutil.ps1` for distribution.
|
||||
|
||||
**Process**:
|
||||
1. Reads all function files from `/functions/`
|
||||
2. Includes configuration JSON files
|
||||
3. Embeds XAML GUI definition
|
||||
4. Combines into single script
|
||||
5. Outputs `winutil.ps1`
|
||||
|
||||
**Why**: Makes distribution easier (single file) and improves load time.
|
||||
|
||||
#### 2. scripts/main.ps1
|
||||
**Purpose**: Entry point that initializes the GUI and event system.
|
||||
|
||||
**Responsibilities**:
|
||||
- Load XAML and create WPF window
|
||||
- Initialize form elements
|
||||
- Set up event handlers
|
||||
- Load configurations
|
||||
- Display the GUI
|
||||
|
||||
#### 3. functions/public/
|
||||
**Purpose**: User-facing functions that implement main features.
|
||||
|
||||
**Key Functions**:
|
||||
- `Initialize-WPFUI.ps1`: Sets up the GUI
|
||||
- `Invoke-WPFTweak*`: Applies system tweaks
|
||||
- `Invoke-WPFFeature*`: Enables Windows features
|
||||
- `Install-WinUtilProgram*`: Installs applications
|
||||
|
||||
**Naming Convention**: Functions start with `WPF` or `Winutil` to be loaded into the runspace.
|
||||
|
||||
#### 4. functions/private/
|
||||
**Purpose**: Internal helper functions not directly called by users.
|
||||
|
||||
**Key Functions**:
|
||||
- `Get-WinUtilVariables.ps1`: Retrieves UI element references
|
||||
- `Install-WinUtilWinget.ps1`: Ensures WinGet is installed
|
||||
- `Get-WinUtilCheckBoxes.ps1`: Gets checkbox states
|
||||
- `Invoke-WinUtilCurrentSystem.ps1`: Gets system information
|
||||
|
||||
#### 5. config/*.json
|
||||
**Purpose**: Define available applications, tweaks, and features declaratively.
|
||||
|
||||
**Files**:
|
||||
- `applications.json`: Application definitions with WinGet/Choco IDs
|
||||
- `tweaks.json`: Registry tweaks and their undo actions
|
||||
- `feature.json`: Windows features that can be enabled/disabled
|
||||
- `preset.json`: Predefined tweak combinations
|
||||
- `dns.json`: DNS provider configurations
|
||||
|
||||
#### 6. xaml/inputXML.xaml
|
||||
**Purpose**: WPF GUI layout and design.
|
||||
|
||||
**Structure**:
|
||||
- TabControl for main tabs (Install, Tweaks, Config, MicroWin)
|
||||
- Buttons with event handlers
|
||||
- TextBoxes for input
|
||||
- CheckBoxes for options
|
||||
- ListBoxes for selections
|
||||
|
||||
## Data Flow
|
||||
|
||||
### Application Installation Flow
|
||||
|
||||
```
|
||||
User clicks "Install"
|
||||
↓
|
||||
Get-WinUtilCheckBoxes → Retrieves selected apps
|
||||
↓
|
||||
For each selected app:
|
||||
↓
|
||||
Check if WinGet/Choco installed
|
||||
↓
|
||||
Install-WinUtilWinget/Choco (if needed)
|
||||
↓
|
||||
Install-WinUtilProgramWinget/Choco → Install app
|
||||
↓
|
||||
Update UI with progress
|
||||
↓
|
||||
Display completion message
|
||||
```
|
||||
|
||||
### Tweak Application Flow
|
||||
|
||||
```
|
||||
User selects tweaks and clicks "Run Tweaks"
|
||||
↓
|
||||
Get-WinUtilCheckBoxes → Get selected tweaks
|
||||
↓
|
||||
For each selected tweak:
|
||||
↓
|
||||
Load tweak definition from tweaks.json
|
||||
↓
|
||||
Invoke-WPFTweak → Apply registry/service changes
|
||||
↓
|
||||
Log changes
|
||||
↓
|
||||
Store original values (for undo)
|
||||
↓
|
||||
Update UI
|
||||
↓
|
||||
Display completion
|
||||
```
|
||||
|
||||
### Undo Tweak Flow
|
||||
|
||||
```
|
||||
User selects tweaks and clicks "Undo"
|
||||
↓
|
||||
Get-WinUtilCheckBoxes → Get selected tweaks
|
||||
↓
|
||||
For each tweak:
|
||||
↓
|
||||
Retrieve "OriginalState" from tweak definition
|
||||
↓
|
||||
Invoke-WPFUndoTweak → Restore original values
|
||||
↓
|
||||
Remove from applied tweaks log
|
||||
↓
|
||||
Update UI
|
||||
```
|
||||
|
||||
## Configuration File Format
|
||||
|
||||
### applications.json Structure
|
||||
|
||||
```json
|
||||
{
|
||||
"WPFInstall<AppName>": {
|
||||
"category": "Browsers",
|
||||
"choco": "googlechrome",
|
||||
"content": "Google Chrome",
|
||||
"description": "Google Chrome browser",
|
||||
"link": "https://chrome.google.com",
|
||||
"winget": "Google.Chrome"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Fields**:
|
||||
- `category`: Which section in the Install tab
|
||||
- `content`: Display name in GUI
|
||||
- `description`: Tooltip/description text
|
||||
- `winget`: WinGet package ID
|
||||
- `choco`: Chocolatey package name
|
||||
- `link`: Official website
|
||||
|
||||
### tweaks.json Structure
|
||||
|
||||
```json
|
||||
{
|
||||
"WPFTweaksTelemetry": {
|
||||
"Content": "Disable Telemetry",
|
||||
"Description": "Disables Microsoft Telemetry",
|
||||
"category": "Essential Tweaks",
|
||||
"panel": "1",
|
||||
"Order": "a003_",
|
||||
"registry": [
|
||||
{
|
||||
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\DataCollection",
|
||||
"Name": "AllowTelemetry",
|
||||
"Type": "DWord",
|
||||
"Value": "0",
|
||||
"OriginalValue": "1"
|
||||
}
|
||||
],
|
||||
"ScheduledTask": [
|
||||
{
|
||||
"Name": "Microsoft\\Windows\\Autochk\\Proxy",
|
||||
"State": "Disabled",
|
||||
"OriginalState": "Enabled"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Fields**:
|
||||
- `Content`: Display name
|
||||
- `Description`: What it does
|
||||
- `category`: Essential/Advanced/Customize
|
||||
- `registry`: Registry changes to make
|
||||
- `ScheduledTask`: Scheduled tasks to modify
|
||||
- `service`: Services to change
|
||||
- `OriginalValue/State`: For undo functionality
|
||||
|
||||
## PowerShell Runspace
|
||||
|
||||
Winutil uses PowerShell runspaces for the GUI to remain responsive:
|
||||
|
||||
```powershell
|
||||
# Create runspace
|
||||
$sync.runspace = [runspacefactory]::CreateRunspace()
|
||||
$sync.runspace.Open()
|
||||
$sync.runspace.SessionStateProxy.SetVariable("sync", $sync)
|
||||
|
||||
# Run code in background
|
||||
$powershell = [powershell]::Create().AddScript($scriptblock)
|
||||
$powershell.Runspace = $sync.runspace
|
||||
$handle = $powershell.BeginInvoke()
|
||||
```
|
||||
|
||||
**Why**: Prevents UI freezing during long-running operations.
|
||||
|
||||
## WPF Event Handling
|
||||
|
||||
Events are wired up via XAML element names:
|
||||
|
||||
```powershell
|
||||
# Get all named elements
|
||||
$sync.keys | ForEach-Object {
|
||||
if($sync.$_.GetType().Name -eq "Button") {
|
||||
$sync.$_.Add_Click({
|
||||
$button = $sync.$($args[0].Name)
|
||||
& "Invoke-$($args[0].Name)"
|
||||
})
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Convention**: Button named `WPFInstallButton` calls function `Invoke-WPFInstallButton`.
|
||||
|
||||
## Package Manager Integration
|
||||
|
||||
### WinGet Integration
|
||||
|
||||
```powershell
|
||||
# Check if installed
|
||||
if (!(Get-Command winget -ErrorAction SilentlyContinue)) {
|
||||
Install-WinUtilWinget
|
||||
}
|
||||
|
||||
# Install package
|
||||
winget install --id $app.winget --silent --accept-source-agreements
|
||||
```
|
||||
|
||||
### Chocolatey Integration
|
||||
|
||||
```powershell
|
||||
# Check if installed
|
||||
if (!(Get-Command choco -ErrorAction SilentlyContinue)) {
|
||||
Install-WinUtilChoco
|
||||
}
|
||||
|
||||
# Install package
|
||||
choco install $app.choco -y
|
||||
```
|
||||
|
||||
## MicroWin Architecture
|
||||
|
||||
MicroWin operates in phases:
|
||||
|
||||
1. **Mount ISO**: Extract Windows image
|
||||
2. **Modify Image**: Remove components, apply tweaks
|
||||
3. **Inject Drivers**: Add custom drivers (optional)
|
||||
4. **Create Unattend**: Generate automated install configuration
|
||||
5. **Rebuild ISO**: Package modified image into new ISO
|
||||
|
||||
**Key Files**:
|
||||
- `Invoke-Microwin.ps1`: Main orchestration
|
||||
- `Microwin-RemovePackages.ps1`: Remove Windows packages
|
||||
- `Microwin-RemoveFeatures.ps1`: Disable features
|
||||
- `Microwin-NewUnattend.ps1`: Create unattend.xml
|
||||
|
||||
## Error Handling
|
||||
|
||||
Winutil uses PowerShell error handling:
|
||||
|
||||
```powershell
|
||||
try {
|
||||
# Attempt operation
|
||||
Invoke-SomeOperation
|
||||
}
|
||||
catch {
|
||||
Write-Host "Error: $_" -ForegroundColor Red
|
||||
# Log error
|
||||
Add-Content -Path $logfile -Value "ERROR: $_"
|
||||
}
|
||||
```
|
||||
|
||||
**Logging**: Errors and operations are logged for debugging.
|
||||
|
||||
## Configuration Loading
|
||||
|
||||
At startup, Winutil loads all configurations:
|
||||
|
||||
```powershell
|
||||
# Load JSON configs
|
||||
$sync.configs = @{}
|
||||
$sync.configs.applications = Get-Content "config/applications.json" | ConvertFrom-Json
|
||||
$sync.configs.tweaks = Get-Content "config/tweaks.json" | ConvertFrom-Json
|
||||
$sync.configs.features = Get-Content "config/feature.json" | ConvertFrom-Json
|
||||
```
|
||||
|
||||
**Sync Hash**: `$sync` hashtable shares state across runspaces.
|
||||
|
||||
## UI Update Pattern
|
||||
|
||||
UI updates must happen on the UI thread:
|
||||
|
||||
```powershell
|
||||
$sync.form.Dispatcher.Invoke([action]{
|
||||
$sync.WPFStatusLabel.Content = "Installing..."
|
||||
}, "Normal")
|
||||
```
|
||||
|
||||
**Why**: WPF requires UI updates on the main thread.
|
||||
|
||||
## Adding New Features
|
||||
|
||||
### Adding a New Application
|
||||
|
||||
1. Edit `config/applications.json`:
|
||||
```json
|
||||
{
|
||||
"WPFInstallNewApp": {
|
||||
"category": "Utilities",
|
||||
"content": "New App",
|
||||
"description": "Description of new app",
|
||||
"winget": "Publisher.AppName",
|
||||
"choco": "appname"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
2. Recompile: `.\Compile.ps1`
|
||||
3. The app appears automatically in Install tab
|
||||
|
||||
### Adding a New Tweak
|
||||
|
||||
1. Edit `config/tweaks.json`:
|
||||
```json
|
||||
{
|
||||
"WPFTweaksNewTweak": {
|
||||
"Content": "New Tweak",
|
||||
"Description": "What it does",
|
||||
"category": "Essential Tweaks",
|
||||
"registry": [
|
||||
{
|
||||
"Path": "HKLM:\\Path\\To\\Key",
|
||||
"Name": "ValueName",
|
||||
"Type": "DWord",
|
||||
"Value": "1",
|
||||
"OriginalValue": "0"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
2. Recompile: `.\Compile.ps1`
|
||||
3. Tweak appears in Tweaks tab
|
||||
|
||||
### Adding a New Function
|
||||
|
||||
1. Create file in `functions/public/` or `functions/private/`:
|
||||
```powershell
|
||||
# functions/public/Invoke-WPFNewFeature.ps1
|
||||
function Invoke-WPFNewFeature {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Does something new
|
||||
#>
|
||||
# Implementation
|
||||
}
|
||||
```
|
||||
|
||||
2. File naming must include "WPF" or "Winutil" to load
|
||||
3. Recompile: `.\Compile.ps1`
|
||||
|
||||
## Testing
|
||||
|
||||
### Manual Testing
|
||||
|
||||
```powershell
|
||||
# Compile and run with -run flag
|
||||
.\Compile.ps1 -run
|
||||
```
|
||||
|
||||
### Automated Tests
|
||||
|
||||
Tests are in `/pester/`:
|
||||
- `configs.Tests.ps1`: Validates JSON configurations
|
||||
- `functions.Tests.ps1`: Tests PowerShell functions
|
||||
|
||||
Run tests:
|
||||
```powershell
|
||||
Invoke-Pester
|
||||
```
|
||||
|
||||
## Build Process
|
||||
|
||||
### Development Build
|
||||
|
||||
```powershell
|
||||
.\Compile.ps1
|
||||
```
|
||||
|
||||
Outputs `winutil.ps1` in the root directory.
|
||||
|
||||
### Production Release
|
||||
|
||||
1. Tag release in Git
|
||||
2. GitHub Actions builds and uploads `winutil.ps1`
|
||||
3. Release appears on GitHub Releases
|
||||
4. Users download via `irm christitus.com/win`
|
||||
|
||||
## Dependencies
|
||||
|
||||
**Required**:
|
||||
- PowerShell 5.1+
|
||||
- .NET Framework 4.5+
|
||||
- Windows 10 1809+
|
||||
|
||||
**Optional (auto-installed)**:
|
||||
- WinGet (Windows Package Manager)
|
||||
- Chocolatey
|
||||
- oscdimg.exe (for MicroWin)
|
||||
|
||||
## Performance Considerations
|
||||
|
||||
**Optimization Strategies**:
|
||||
- Lazy-load configurations (only when needed)
|
||||
- Use runspaces for long operations
|
||||
- Cache expensive lookups
|
||||
- Minimize registry reads/writes
|
||||
- Batch operations when possible
|
||||
|
||||
## Security Considerations
|
||||
|
||||
**Safety Measures**:
|
||||
- All operations logged
|
||||
- Registry backups for undo
|
||||
- No credential storage
|
||||
- Open source (auditable)
|
||||
- Digitally signed (future)
|
||||
|
||||
## Contributing Guidelines
|
||||
|
||||
**Code Standards**:
|
||||
- Use proper PowerShell cmdlet naming (Verb-Noun)
|
||||
- Include comment-based help
|
||||
- Follow existing code style
|
||||
- Test thoroughly before PR
|
||||
- Document significant changes
|
||||
|
||||
**File Naming**:
|
||||
- Public functions: `Invoke-WPF*.ps1` or `Invoke-Winutil*.ps1`
|
||||
- Private functions: `Get-WinUtil*.ps1` or verb-WinUtil*.ps1`
|
||||
- Must include "WPF" or "Winutil" to load
|
||||
|
||||
## Future Architecture Plans
|
||||
|
||||
**Roadmap Considerations**:
|
||||
- Plugin system for community extensions
|
||||
- Config import/export
|
||||
- Cloud sync for configurations
|
||||
- Enhanced logging dashboard
|
||||
- Modular compilation (choose features)
|
||||
|
||||
## Related Documentation
|
||||
|
||||
- [Contributing Guide](../../contributing/) - How to contribute code
|
||||
- [User Guide](../../userguide/) - End-user documentation
|
||||
- [FAQ](../../faq/) - Common questions
|
||||
|
||||
## Additional Resources
|
||||
|
||||
- **GitHub Repository**: [ChrisTitusTech/winutil](https://github.com/ChrisTitusTech/winutil)
|
||||
- **PowerShell Docs**: [Microsoft Docs](https://docs.microsoft.com/powershell/)
|
||||
- **WPF Guide**: [WPF Documentation](https://docs.microsoft.com/dotnet/desktop/wpf/)
|
||||
|
||||
---
|
||||
|
||||
**Last Updated**: January 2026
|
||||
**Maintainers**: Chris Titus Tech and contributors
|
||||
@@ -1,11 +1,6 @@
|
||||
### Features
|
||||
---
|
||||
weight: 1
|
||||
title: "Features"
|
||||
---
|
||||
|
||||
- [All .Net Framework (2,3,4)](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/dotnet.md)
|
||||
- [Disable Legacy F8 Boot Recovery](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/DisableLegacyRecovery.md)
|
||||
- [Enable Legacy F8 Boot Recovery](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/EnableLegacyRecovery.md)
|
||||
- [Enable Daily Registry Backup Task 12.30am](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/RegBackup.md)
|
||||
- [HyperV Virtualization](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/hyperv.md)
|
||||
- [Legacy Media (WMP, DirectPlay)](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/legacymedia.md)
|
||||
- [NFS - Network File System](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/nfs.md)
|
||||
- [Windows Sandbox](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/Sandbox.md)
|
||||
- [Windows Subsystem for Linux](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/wsl.md)
|
||||
{{< autolinks section="dev/features/features" >}}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Set Up Autologin
|
||||
|
||||
```json
|
||||
```powershell
|
||||
function Invoke-WPFPanelAutologin {
|
||||
<#
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# System Corruption Scan
|
||||
|
||||
```json
|
||||
```powershell
|
||||
function Invoke-WPFSystemRepair {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Reset Network
|
||||
|
||||
```json
|
||||
```powershell
|
||||
function Invoke-WPFFixesNetwork {
|
||||
<#
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Remove Adobe Creative Cloud
|
||||
|
||||
```json
|
||||
```powershell
|
||||
function Invoke-WPFRunAdobeCCCleanerTool {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Reset Windows Update
|
||||
|
||||
```json
|
||||
```powershell
|
||||
function Invoke-WPFFixesUpdate {
|
||||
|
||||
<#
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# WinGet Reinstall
|
||||
|
||||
```json
|
||||
```powershell
|
||||
function Invoke-WPFFixesWinget {
|
||||
|
||||
<#
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
### Fixes
|
||||
---
|
||||
weight: 2
|
||||
title: "Fixes"
|
||||
---
|
||||
|
||||
- [Remove Adobe Creative Cloud](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/RunAdobeCCCleanerTool.md)
|
||||
- [Reset Network](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/Network.md)
|
||||
- [Reset Windows Update](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/Update.md)
|
||||
- [Set Up Autologin](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/Autologin.md)
|
||||
- [System Corruption Scan](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/CorruptionScan.md)
|
||||
- [WinGet Reinstall](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/Winget.md)
|
||||
{{< autolinks section="dev/features/fixes" >}}
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
### Legacy Windows Panels
|
||||
---
|
||||
weight: 3
|
||||
title: "Legacy Windows Panels"
|
||||
---
|
||||
|
||||
- [Control Panel](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/control.md)
|
||||
- [Network Connections](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/network.md)
|
||||
- [Power Panel](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/power.md)
|
||||
- [Printer Settings](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/printer.md)
|
||||
- [Region](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/region.md)
|
||||
- [Sound Settings](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/sound.md)
|
||||
- [System Properties](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/system.md)
|
||||
- [User Accounts](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/user.md)
|
||||
{{< autolinks section="dev/features/legacy-windows-panels" >}}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Control Panel
|
||||
|
||||
```json
|
||||
```powershell
|
||||
function Invoke-WPFControlPanel {
|
||||
<#
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Network Connections
|
||||
|
||||
```json
|
||||
```powershell
|
||||
function Invoke-WPFControlPanel {
|
||||
<#
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Power Panel
|
||||
|
||||
```json
|
||||
```powershell
|
||||
function Invoke-WPFControlPanel {
|
||||
<#
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Printer Settings
|
||||
|
||||
```json
|
||||
```powershell
|
||||
function Invoke-WPFControlPanel {
|
||||
<#
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Region
|
||||
|
||||
```json
|
||||
```powershell
|
||||
function Invoke-WPFControlPanel {
|
||||
<#
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Sound Settings
|
||||
|
||||
```json
|
||||
```powershell
|
||||
function Invoke-WPFControlPanel {
|
||||
<#
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# System Properties
|
||||
|
||||
```json
|
||||
```powershell
|
||||
function Invoke-WPFControlPanel {
|
||||
<#
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# User Accounts
|
||||
|
||||
```json
|
||||
```powershell
|
||||
function Invoke-WPFControlPanel {
|
||||
<#
|
||||
|
||||
|
||||
@@ -1,31 +1,16 @@
|
||||
---
|
||||
weight: 1
|
||||
title: "Features"
|
||||
---
|
||||
|
||||
### Fixes
|
||||
|
||||
- [Remove Adobe Creative Cloud](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/RunAdobeCCCleanerTool.md)
|
||||
- [Reset Network](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/Network.md)
|
||||
- [Reset Windows Update](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/Update.md)
|
||||
- [Set Up Autologin](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/Autologin.md)
|
||||
- [System Corruption Scan](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/CorruptionScan.md)
|
||||
- [WinGet Reinstall](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/Winget.md)
|
||||
{{< autolinks section="dev/features/fixes" >}}
|
||||
|
||||
### Legacy Windows Panels
|
||||
|
||||
- [Control Panel](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/control.md/control.md)
|
||||
- [Network Connections](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/network.md)
|
||||
- [Power Panel](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/power.md)
|
||||
- [Printer Settings](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/printer.md)
|
||||
- [Region](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/region.md)
|
||||
- [Sound Settings](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/sound.md)
|
||||
- [System Properties](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/system.md)
|
||||
- [User Accounts](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/user.md)
|
||||
{{< autolinks section="dev/features/legacy-windows-panels" >}}
|
||||
|
||||
### Features
|
||||
|
||||
- [All .Net Framework (2,3,4)](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/dotnet.md)
|
||||
- [Disable Legacy F8 Boot Recovery](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/DisableLegacyRecovery.md)
|
||||
- [Enable Legacy F8 Boot Recovery](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/EnableLegacyRecovery.md)
|
||||
- [Enable Daily Registry Backup Task 12.30am](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/RegBackup.md)
|
||||
- [HyperV Virtualization](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/hyperv.md)
|
||||
- [Legacy Media (WMP, DirectPlay)](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/legacymedia.md)
|
||||
- [NFS - Network File System](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/nfs.md)
|
||||
- [Windows Sandbox](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/Sandbox.md)
|
||||
- [Windows Subsystem for Linux](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/wsl.md)
|
||||
{{< autolinks section="dev/features/features" >}}
|
||||
|
||||
@@ -1,18 +1,8 @@
|
||||
---
|
||||
weight: 3
|
||||
title: "Customize Preferences"
|
||||
---
|
||||
|
||||
### Customize Preferences
|
||||
|
||||
- [Bing Search in Start Menu](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/BingSearch.md)
|
||||
- [Center Taskbar Items](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/TaskbarAlignment.md)
|
||||
- [Dark Theme for Windows](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/DarkMode.md)
|
||||
- [Detailed BSoD](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/DetailedBSoD.md)
|
||||
- [Mouse Acceleration](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/MouseAcceleration.md)
|
||||
- [NumLock on Startup](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/NumLock.md)
|
||||
- [Search Button in Taskbar](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/TaskbarSearch.md)
|
||||
- [Show File Extensions](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/ShowExt.md)
|
||||
- [Show Hidden Files](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/HiddenFiles.md)
|
||||
- [Snap Assist Flyout](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/SnapFlyout.md)
|
||||
- [Snap Assist Suggestion](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/SnapSuggestion.md)
|
||||
- [Snap Window](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/SnapWindow.md)
|
||||
- [Sticky Keys](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/StickyKeys.md)
|
||||
- [Task View Button in Taskbar](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/TaskView.md)
|
||||
- [Verbose Messages During Logon](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/VerboseLogon.md)
|
||||
- [Widgets Button in Taskbar](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/TaskbarWidgets.md)
|
||||
{{< autolinks section="dev/tweaks/customize-preferences" >}}
|
||||
|
||||
@@ -960,3 +960,46 @@
|
||||
}
|
||||
],
|
||||
```
|
||||
#Function
|
||||
```powershell
|
||||
Function Set-WinUtilService {
|
||||
<#
|
||||
|
||||
.SYNOPSIS
|
||||
Changes the startup type of the given service
|
||||
|
||||
.PARAMETER Name
|
||||
The name of the service to modify
|
||||
|
||||
.PARAMETER StartupType
|
||||
The startup type to set the service to
|
||||
|
||||
.EXAMPLE
|
||||
Set-WinUtilService -Name "HomeGroupListener" -StartupType "Manual"
|
||||
|
||||
#>
|
||||
param (
|
||||
$Name,
|
||||
$StartupType
|
||||
)
|
||||
try {
|
||||
Write-Host "Setting Service $Name to $StartupType"
|
||||
|
||||
# Check if the service exists
|
||||
$service = Get-Service -Name $Name -ErrorAction Stop
|
||||
|
||||
# Service exists, proceed with changing properties -- while handling auto delayed start for PWSH 5
|
||||
if (($PSVersionTable.PSVersion.Major -lt 7) -and ($StartupType -eq "AutomaticDelayedStart")) {
|
||||
sc.exe config $Name start=delayed-auto
|
||||
} else {
|
||||
$service | Set-Service -StartupType $StartupType -ErrorAction Stop
|
||||
}
|
||||
} catch [System.ServiceProcess.ServiceNotFoundException] {
|
||||
Write-Warning "Service $Name was not found"
|
||||
} catch {
|
||||
Write-Warning "Unable to set $Name due to unhandled exception"
|
||||
Write-Warning $_.Exception.Message
|
||||
}
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
@@ -1,18 +1,8 @@
|
||||
---
|
||||
weight: 1
|
||||
title: "Essential Tweaks"
|
||||
---
|
||||
|
||||
### Essential Tweaks
|
||||
|
||||
- [Create Restore Point](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/RestorePoint.md)
|
||||
- [Debloat Edge](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/EdgeDebloat.md)
|
||||
- [Delete Temporary Files](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/DeleteTempFiles.md)
|
||||
- [Disable Activity History](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/Activity.md)
|
||||
- [Disable ConsumerFeatures](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/ConsumerFeatures.md)
|
||||
- [Disable GameDVR](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/GameDVR.md)
|
||||
- [Disable Hibernation](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/Hibernation.md)
|
||||
- [Disable Location Tracking](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/Location.md)
|
||||
- [Disable Powershell 7 Telemetry](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/Powershell7Tele.md)
|
||||
- [Disable Storage Sense](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/Storage.md)
|
||||
- [Disable Telemetry](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/Telemetry.md)
|
||||
- [Enable End Task With Right Click](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/EndTaskOnTaskbar.md)
|
||||
- [Prefer IPv4 over IPv6](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/IPv46.md)
|
||||
- [Run Disk Cleanup](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/DiskCleanup.md)
|
||||
- [Set Hibernation as default (good for laptops)](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/LaptopHibernation.md)
|
||||
- [Set Services to Manual](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/Services.md)
|
||||
{{< autolinks section="dev/tweaks/essential-tweaks" >}}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Remove Ultimate Performance Profile
|
||||
|
||||
```json
|
||||
```powershell
|
||||
Function Invoke-WPFUltimatePerformance {
|
||||
<#
|
||||
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
---
|
||||
weight: 4
|
||||
title: "Performance Plans"
|
||||
---
|
||||
|
||||
### Performance Plans
|
||||
|
||||
- [Add and Remove Ultimate Performance Profile](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Performance-Plans/Profile.md)
|
||||
{{< autolinks section="dev/tweaks/performance-plans" >}}
|
||||
|
||||
@@ -1,57 +1,20 @@
|
||||
---
|
||||
weight: 2
|
||||
title: "Tweaks"
|
||||
---
|
||||
|
||||
### Essential Tweaks
|
||||
|
||||
- [Create Restore Point](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/RestorePoint.md)
|
||||
- [Debloat Edge](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/EdgeDebloat.md)
|
||||
- [Delete Temporary Files](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/DeleteTempFiles.md)
|
||||
- [Disable Activity History](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/Activity.md)
|
||||
- [Disable ConsumerFeatures](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/ConsumerFeatures.md)
|
||||
- [Disable GameDVR](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/GameDVR.md)
|
||||
- [Disable Hibernation](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/Hibernation.md)
|
||||
- [Disable Location Tracking](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/Location.md)
|
||||
- [Disable Powershell 7 Telemetry](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/Powershell7Tele.md)
|
||||
- [Disable Storage Sense](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/Storage.md)
|
||||
- [Disable Telemetry](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/Telemetry.md)
|
||||
- [Enable End Task With Right Click](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/EndTaskOnTaskbar.md)
|
||||
- [Prefer IPv4 over IPv6](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/IPv46.md)
|
||||
- [Run Disk Cleanup](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/DiskCleanup.md)
|
||||
- [Set Hibernation as default (good for laptops)](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/LaptopHibernation.md)
|
||||
- [Set Services to Manual](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Essential-Tweaks/Services.md)
|
||||
{{< autolinks section="dev/tweaks/essential-tweaks" >}}
|
||||
|
||||
### Advanced Tweaks (CAUTION)
|
||||
|
||||
- [Adobe Network Block](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/BlockAdobeNet.md)
|
||||
- [Disable Background Apps](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/DisableBGapps.md)
|
||||
- [Disable Fullscreen Optimizations](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/DisableFSO.md)
|
||||
- [Disable IPv6](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/DisableIPv6.md)
|
||||
- [Disable Notification Tray/Calendar](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/DisableNotifications.md)
|
||||
- [Disable Teredo](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/Teredo.md)
|
||||
- [Remove ALL MS Store Apps - NOT RECOMMENDED](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/DeBloat.md)
|
||||
- [Remove Gallery from explorer](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/RemoveGallery.md)
|
||||
- [Remove Home from explorer](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/RemoveHome.md)
|
||||
- [Run OO Shutup 10](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/OOSUbutton.md)
|
||||
- [Set Classic Right-Click Menu](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/RightClickMenu.md)
|
||||
- [Set Display for Performance](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/Display.md)
|
||||
- [Set Time to UTC (Dual Boot)](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/UTC.md)
|
||||
{{< autolinks section="dev/tweaks/z--advanced-tweaks---caution" >}}
|
||||
|
||||
### Customize Preferences
|
||||
|
||||
- [Bing Search in Start Menu](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/BingSearch.md)
|
||||
- [Center Taskbar Items](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/TaskbarAlignment.md)
|
||||
- [Dark Theme for Windows](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/DarkMode.md)
|
||||
- [Detailed BSoD](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/DetailedBSoD.md)
|
||||
- [Mouse Acceleration](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/MouseAcceleration.md)
|
||||
- [NumLock on Startup](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/NumLock.md)
|
||||
- [Search Button in Taskbar](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/TaskbarSearch.md)
|
||||
- [Show File Extensions](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/ShowExt.md)
|
||||
- [Show Hidden Files](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/HiddenFiles.md)
|
||||
- [Snap Assist Flyout](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/SnapFlyout.md)
|
||||
- [Snap Assist Suggestion](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/SnapSuggestion.md)
|
||||
- [Snap Window](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/SnapWindow.md)
|
||||
- [Sticky Keys](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/StickyKeys.md)
|
||||
- [Task View Button in Taskbar](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/TaskView.md)
|
||||
- [Verbose Messages During Logon](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/VerboseLogon.md)
|
||||
- [Widgets Button in Taskbar](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/TaskbarWidgets.md)
|
||||
{{< autolinks section="dev/tweaks/customize-preferences" >}}
|
||||
|
||||
### Performance Plans
|
||||
|
||||
- [Add and Remove Ultimate Performance Profile](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Performance-Plans/Profile.md)
|
||||
{{< autolinks section="dev/tweaks/performance-plans" >}}
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
# Remove Microsoft Edge
|
||||
|
||||
```json
|
||||
"WPFTweaksMakeEdgeUninstallable": {
|
||||
"Content": "Make Edge Uninstallable via settings",
|
||||
"Description": "Makes it so you can uninstall edge via settings > installed apps",
|
||||
"category": "z__Advanced Tweaks - CAUTION",
|
||||
"panel": "1",
|
||||
"Order": "a026_",
|
||||
"registry": [
|
||||
{
|
||||
"Path": "HKLM:\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Microsoft Edge",
|
||||
"Name": "NoRemove",
|
||||
"Type": "Dword",
|
||||
"Value": "0",
|
||||
"OriginalValue": "1"
|
||||
}
|
||||
],
|
||||
"InvokeScript": [
|
||||
"
|
||||
$File = \"C:\\Windows\\System32\\IntegratedServicesRegionPolicySet.json\"
|
||||
|
||||
takeown /f $File
|
||||
icacls $File /grant \"Administrators:(F)\"
|
||||
|
||||
$FileContent = Get-Content $File
|
||||
$FileContent[7] = $FileContent[7] -replace \"disabled\", \"enabled\"
|
||||
Set-Content $File $FileContent
|
||||
"
|
||||
],
|
||||
"UndoScript": [
|
||||
"
|
||||
$File = \"C:\\Windows\\System32\\IntegratedServicesRegionPolicySet.json\"
|
||||
|
||||
takeown /f $File
|
||||
icacls $File /grant \"Administrators:(F)\"
|
||||
|
||||
$FileContent = Get-Content $File
|
||||
$FileContent[7] = $FileContent[7] -replace \"enabled\", \"disabled\"
|
||||
Set-Content $File $FileContent
|
||||
"
|
||||
],
|
||||
```
|
||||
|
||||
## 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).
|
||||
@@ -1,6 +1,6 @@
|
||||
# Run OO Shutup 10
|
||||
|
||||
```json
|
||||
```powershell
|
||||
function Invoke-WPFOOSU {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
# Remove Microsoft Edge
|
||||
|
||||
# Json File
|
||||
```json
|
||||
"WPFTweaksRemoveEdge": {
|
||||
"Content": "Remove Microsoft Edge",
|
||||
"Description": "Unblocks Microsoft Edge uninstaller restrictions than uses that uninstaller to remove Microsoft Edge",
|
||||
"category": "z__Advanced Tweaks - CAUTION",
|
||||
"panel": "1",
|
||||
"Order": "a028_",
|
||||
"InvokeScript": [
|
||||
"Invoke-WinUtilRemoveEdge"
|
||||
],
|
||||
"UndoScript": [
|
||||
"
|
||||
Write-Host 'Installing Microsoft Edge...'
|
||||
winget install Microsoft.Edge --source winget
|
||||
"
|
||||
],
|
||||
```
|
||||
# Function
|
||||
```powershell
|
||||
function Invoke-WinUtilRemoveEdge {
|
||||
Write-Host "Unlocking The Offical Edge Uninstaller And Removing Microsoft Edge..."
|
||||
|
||||
$Path = (Get-ChildItem "C:\Program Files (x86)\Microsoft\Edge\Application\*\Installer\setup.exe")[0].FullName
|
||||
New-Item "C:\Windows\SystemApps\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\MicrosoftEdge.exe" -Force
|
||||
Start-Process $Path -ArgumentList '--uninstall --system-level --force-uninstall --delete-profile'
|
||||
}
|
||||
```
|
||||
@@ -0,0 +1,33 @@
|
||||
# Remove OneDrive
|
||||
```json
|
||||
"WPFTweaksRemoveOneDrive": {
|
||||
"Content": "Remove OneDrive",
|
||||
"Description": "Denys permission to remove onedrive user files than uses its own uninstaller to remove it than brings back permissions",
|
||||
"category": "z__Advanced Tweaks - CAUTION",
|
||||
"panel": "1",
|
||||
"Order": "a029_",
|
||||
"InvokeScript": [
|
||||
"
|
||||
# Deny permission to remove OneDrive folder
|
||||
icacls $Env:OneDrive /deny \"Administrators:(D,DC)\"
|
||||
|
||||
Write-Host \"Uninstalling OneDrive...\"
|
||||
Start-Process 'C:\\Windows\\System32\\OneDriveSetup.exe' -ArgumentList '/uninstall' -Wait
|
||||
|
||||
# Some of OneDrive files use explorer, and OneDrive uses FileCoAuth
|
||||
Write-Host \"Removing leftover OneDrive Files...\"
|
||||
Stop-Process -Name FileCoAuth,Explorer
|
||||
Remove-Item \"$Env:LocalAppData\\Microsoft\\OneDrive\" -Recurse -Force
|
||||
Remove-Item \"C:\\ProgramData\\Microsoft OneDrive\" -Recurse -Force
|
||||
|
||||
# Grant back permission to accses OneDrive folder
|
||||
icacls $Env:OneDrive /grant \"Administrators:(D,DC)\"
|
||||
"
|
||||
],
|
||||
"UndoScript": [
|
||||
"
|
||||
Write-Host \"Installing OneDrive\"
|
||||
winget install Microsoft.Onedrive --source winget
|
||||
"
|
||||
],
|
||||
```
|
||||
@@ -1,16 +1,8 @@
|
||||
---
|
||||
weight: 2
|
||||
title: "Advanced Tweaks (CAUTION)"
|
||||
---
|
||||
|
||||
### Advanced Tweaks (CAUTION)
|
||||
|
||||
- [Adobe Network Block](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/BlockAdobeNet.md)
|
||||
- [Disable Background Apps](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/DisableBGapps.md)
|
||||
- [Disable Fullscreen Optimizations](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/DisableFSO.md)
|
||||
- [Disable IPv6](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/DisableIPv6.md)
|
||||
- [Disable Notification Tray/Calendar](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/DisableNotifications.md)
|
||||
- [Disable Teredo](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/Teredo.md)
|
||||
- [Remove ALL MS Store Apps - NOT RECOMMENDED](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/DeBloat.md)
|
||||
- [Remove Gallery from explorer](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/RemoveGallery.md)
|
||||
- [Remove Home from explorer](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/RemoveHome.md)
|
||||
- [Make Edge Uninstallable](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/EdgeUninstall.md)
|
||||
- [Run OO Shutup 10](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/OOSUbutton.md)
|
||||
- [Set Classic Right-Click Menu](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/RightClickMenu.md)
|
||||
- [Set Display for Performance](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/Display.md)
|
||||
- [Set Time to UTC (Dual Boot)](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/UTC.md)
|
||||
{{< autolinks section="dev/tweaks/z--advanced-tweaks---caution" >}}
|
||||
|
||||
@@ -1,10 +1,301 @@
|
||||
---
|
||||
title: FAQ's
|
||||
toc: false
|
||||
title: Frequently Asked Questions
|
||||
toc: true
|
||||
---
|
||||
|
||||
## How do I uninstall Winutil?
|
||||
* You do not have to uninstall Winutil. As it is a script you run from Powershell it only loads into your RAM. This means as soon as you close Winutil it will be deleted off your system.
|
||||
## General Questions
|
||||
|
||||
## I applied a tweak and now something doesn't work, what do I do?
|
||||
* If you applied a tweak and it breaks something, you can always revert the tweak by selecting the tweak and clicking "Undo Selected Tweaks".
|
||||
### How do I uninstall Winutil?
|
||||
You do not have to uninstall Winutil. As it is a script you run from PowerShell, it only loads into your RAM. This means as soon as you close Winutil, it will be cleared from your system. Winutil doesn't install itself permanently on your computer.
|
||||
|
||||
### Is Winutil safe to use?
|
||||
Yes, Winutil is open source and the code is publicly available on GitHub. Thousands of users run it daily. However, like any system modification tool, you should:
|
||||
- Run it as Administrator (required)
|
||||
- Create a restore point before major changes
|
||||
- Understand what tweaks you're applying
|
||||
- Download only from official sources
|
||||
|
||||
### Do I need to keep running Winutil?
|
||||
No. Once you've applied tweaks or installed applications, you can close Winutil. Changes persist after closing. You only need to run Winutil again when you want to make additional changes or undo tweaks.
|
||||
|
||||
### Does Winutil require internet access?
|
||||
- **For downloading**: Yes, installing applications requires internet
|
||||
- **For tweaks**: No, most tweaks work offline
|
||||
- **Initial run**: Yes, to download the latest script
|
||||
|
||||
### How often is Winutil updated?
|
||||
Winutil is actively maintained with frequent updates. New features, bug fixes, and application additions are released regularly. The script auto-downloads the latest version each time you run it.
|
||||
|
||||
## Installation & Running
|
||||
|
||||
### How do I run Winutil?
|
||||
1. Open PowerShell as Administrator
|
||||
2. Run: `irm "https://christitus.com/win" | iex`
|
||||
3. Wait for the GUI to appear
|
||||
|
||||
### Why do I need Administrator rights?
|
||||
Winutil makes system-level changes (registry edits, service modifications, software installation) that require elevated permissions. Without admin rights, most features won't work.
|
||||
|
||||
### The script won't download. What do I do?
|
||||
Try these solutions in order:
|
||||
|
||||
1. **Use the direct GitHub link**:
|
||||
```powershell
|
||||
irm https://github.com/ChrisTitusTech/Winutil/releases/latest/download/Winutil.ps1 | iex
|
||||
```
|
||||
|
||||
2. **Force TLS 1.2** (for older Windows):
|
||||
```powershell
|
||||
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
||||
irm "https://christitus.com/win" | iex
|
||||
```
|
||||
|
||||
3. **Change DNS** to Cloudflare (1.1.1.1) or Google (8.8.8.8)
|
||||
|
||||
4. **Use a VPN** if GitHub is blocked in your region
|
||||
|
||||
### I get an "Execution Policy" error. How do I fix it?
|
||||
Run this command first to allow script execution:
|
||||
```powershell
|
||||
Set-ExecutionPolicy Unrestricted -Scope Process -Force
|
||||
irm "https://christitus.com/win" | iex
|
||||
```
|
||||
|
||||
This only affects the current PowerShell session and is safe.
|
||||
|
||||
## Tweaks & Modifications
|
||||
|
||||
### I applied a tweak and now something doesn't work. What do I do?
|
||||
If you applied a tweak and it breaks something, you can revert it:
|
||||
1. Open Winutil again
|
||||
2. Go to the **Tweaks** tab
|
||||
3. Select the same tweak you applied
|
||||
4. Click **"Undo Selected Tweaks"**
|
||||
5. The system will revert to the previous state
|
||||
|
||||
Alternatively, use System Restore if you created a restore point.
|
||||
|
||||
### Which tweaks are safe to apply?
|
||||
**Safe for everyone (Essential Tweaks)**:
|
||||
- Disable Telemetry
|
||||
- Disable Activity History
|
||||
- Disable Location Tracking
|
||||
- Delete Temporary Files
|
||||
- Run Disk Cleanup
|
||||
- Create Restore Point
|
||||
|
||||
**Caution needed (Advanced Tweaks)**:
|
||||
- Remove Microsoft Store
|
||||
- Disable Windows Defender
|
||||
- Remove all bloatware
|
||||
- Disable system services
|
||||
|
||||
Start with Essential Tweaks. Only use Advanced Tweaks if you understand the implications.
|
||||
|
||||
### Will tweaks survive Windows Updates?
|
||||
Most tweaks persist through updates, but some may be reset by major Windows updates (feature updates). You may need to reapply certain tweaks after major updates.
|
||||
|
||||
### Can I create my own tweak presets?
|
||||
Currently, Winutil uses predefined presets (Desktop, Laptop, Minimal, Standard). Custom presets aren't directly supported in the GUI, but you can script your preferred configuration.
|
||||
|
||||
### What's the difference between Essential and Advanced tweaks?
|
||||
- **Essential Tweaks**: Safe for most users, improve performance/privacy with minimal risk
|
||||
- **Advanced Tweaks**: More aggressive changes that may break functionality or compatibility. Use with caution.
|
||||
|
||||
## Application Installation
|
||||
|
||||
### How does Winutil install applications?
|
||||
Winutil uses Windows Package Manager (WinGet) and Chocolatey to automate installations. It downloads applications from official sources and installs them silently without bloatware.
|
||||
|
||||
### Can I install multiple applications at once?
|
||||
Yes! Check the boxes for all applications you want, then click "Install Selected". They'll install sequentially.
|
||||
|
||||
### WinGet isn't working. How do I fix it?
|
||||
1. Go to the **Config** tab
|
||||
2. Find **Fixes** section
|
||||
3. Click **"WinGet Reinstall"**
|
||||
4. Wait for completion
|
||||
5. Try installing applications again
|
||||
|
||||
### Do installed applications have bloatware or bundled software?
|
||||
No. WinGet and Chocolatey install clean versions of applications without bundled offers, toolbars, or bloatware.
|
||||
|
||||
### Can I uninstall applications through Winutil?
|
||||
Winutil focuses on installation. To uninstall:
|
||||
- Use Windows Settings > Apps > Installed Apps
|
||||
- Or use the application's built-in uninstaller
|
||||
|
||||
### Will installed apps auto-update?
|
||||
Applications with built-in update mechanisms will auto-update. You can also update them via WinGet/Chocolatey commands or through Winutil's "Upgrade Selected" feature.
|
||||
|
||||
## MicroWin
|
||||
|
||||
### What is MicroWin?
|
||||
MicroWin is a feature that creates custom Windows installation ISOs with bloatware removed, optimizations applied, and unnecessary components stripped out before installation.
|
||||
|
||||
### Is MicroWin legal?
|
||||
Modifying Windows ISOs is a gray area legally. Use MicroWin for personal/educational purposes. You still need a valid Windows license to use the resulting installation.
|
||||
|
||||
### Can I install Windows updates on MicroWin?
|
||||
Yes, Windows Update works normally on MicroWin installations. Some removed components may be restored by updates.
|
||||
|
||||
### How much smaller is a MicroWin ISO?
|
||||
Depends on what you remove. Typically:
|
||||
- Standard Windows 11: ~5.5 GB ISO, ~20-25 GB installed
|
||||
- MicroWin (aggressive): ~3.5 GB ISO, ~10-15 GB installed
|
||||
|
||||
### Will all software work on MicroWin?
|
||||
Most desktop applications work fine. Microsoft Store apps won't work if you removed the Store. Some features may be missing if you removed their dependencies.
|
||||
|
||||
## Updates & Maintenance
|
||||
|
||||
### Should I disable Windows Updates?
|
||||
Generally, **no**. Security updates are important. However, you might:
|
||||
- Use "Security Updates Only" to avoid feature updates
|
||||
- Pause updates temporarily for stability
|
||||
- Disable only during critical work periods
|
||||
|
||||
### How do I re-enable updates after disabling them?
|
||||
1. Open Winutil
|
||||
2. Go to **Updates** tab
|
||||
3. Click **"Enable Updates"**
|
||||
4. Updates will resume normally
|
||||
|
||||
### What's the difference between "Security Updates Only" and "Disable Updates"?
|
||||
- **Security Updates Only**: Installs critical security patches, blocks feature updates (major versions)
|
||||
- **Disable Updates**: Blocks ALL updates including security (not recommended)
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Winutil won't open after running the command
|
||||
Possible causes:
|
||||
1. **Antivirus blocking**: Add PowerShell exception
|
||||
2. **Not run as Admin**: Restart PowerShell as Administrator
|
||||
3. **Corrupted download**: Close PowerShell, reopen, try again
|
||||
4. **Windows Defender**: Allow the script
|
||||
|
||||
### My antivirus flags Winutil as malicious
|
||||
This is a false positive. Winutil makes system changes that antivirus programs may flag. The code is open source and audited. Add an exception if needed.
|
||||
|
||||
### An application failed to install
|
||||
Troubleshooting steps:
|
||||
1. Check your internet connection
|
||||
2. Try installing just that one application
|
||||
3. Review error messages in the output panel
|
||||
4. Check if antivirus is blocking
|
||||
5. Try the WinGet Reinstall fix
|
||||
|
||||
### Network tweaks broke my internet connection
|
||||
1. Open Winutil
|
||||
2. Go to **Config** > **Fixes**
|
||||
3. Click **"Reset Network"**
|
||||
4. Restart your computer
|
||||
5. Connection should be restored
|
||||
|
||||
### I can't access certain Windows features after applying tweaks
|
||||
Undo the tweaks that might have affected those features:
|
||||
1. Reopen Winutil
|
||||
2. Select the tweaks you applied
|
||||
3. Click "Undo Selected Tweaks"
|
||||
|
||||
If that doesn't work, use System Restore to revert to a previous state.
|
||||
|
||||
## Advanced Topics
|
||||
|
||||
### Can I run Winutil on Windows Server?
|
||||
Yes, Winutil works on Windows Server editions, though some features may not be applicable or may behave differently.
|
||||
|
||||
### Does Winutil work with Windows LTSC?
|
||||
Yes, Winutil works with Windows 10/11 LTSC editions. Some applications may not be available depending on your configuration.
|
||||
|
||||
### Can I use Winutil in a corporate/enterprise environment?
|
||||
Yes, but check your organization's policies first. Some tweaks may conflict with group policies or corporate requirements.
|
||||
|
||||
### How do I automate Winutil for multiple PCs?
|
||||
See the [Automation Guide](userguide/automation/) for details on:
|
||||
- Configuration files
|
||||
- PowerShell parameters
|
||||
- Batch deployment
|
||||
- Silent installation
|
||||
|
||||
### Can I contribute to Winutil?
|
||||
Yes! Contributions are welcome:
|
||||
- Report bugs on GitHub Issues
|
||||
- Submit pull requests for fixes/features
|
||||
- Improve documentation
|
||||
- Help others in Discord
|
||||
|
||||
See the [Contributing Guide](contributing/) for details.
|
||||
|
||||
## Privacy & Security
|
||||
|
||||
### Does Winutil collect any data?
|
||||
No, Winutil itself doesn't collect or transmit any user data. It's a local PowerShell script.
|
||||
|
||||
### What telemetry does the Disable Telemetry tweak block?
|
||||
It disables:
|
||||
- Windows diagnostic data collection
|
||||
- Activity history tracking
|
||||
- Feedback requests
|
||||
- Usage statistics
|
||||
- Error reporting (optional)
|
||||
|
||||
### Is it safe to disable Windows Defender?
|
||||
**Generally not recommended**. Only disable Defender if:
|
||||
- You have alternative antivirus installed
|
||||
- You understand the security risks
|
||||
- You're in a controlled/isolated environment
|
||||
|
||||
### Will removing Microsoft Store affect security updates?
|
||||
No, Windows security updates are independent of the Microsoft Store.
|
||||
|
||||
## Performance
|
||||
|
||||
### Will Winutil make my PC faster?
|
||||
Tweaks can improve performance by:
|
||||
- Reducing background processes
|
||||
- Disabling unnecessary services
|
||||
- Cleaning temporary files
|
||||
- Optimizing startup programs
|
||||
|
||||
Results vary based on your system and which tweaks you apply.
|
||||
|
||||
### What's the best preset for gaming?
|
||||
Use the **Desktop** preset, then additionally apply:
|
||||
- Disable GameDVR
|
||||
- Ultimate Performance power plan
|
||||
- Disable fullscreen optimizations (Advanced)
|
||||
- Set display for performance (Advanced)
|
||||
|
||||
### How much RAM does Winutil use?
|
||||
Winutil itself uses ~50-100MB while running. Once closed, it's removed from memory.
|
||||
|
||||
## Error Messages
|
||||
|
||||
### "Access Denied" errors
|
||||
- Ensure PowerShell is running as Administrator
|
||||
- Check if antivirus is blocking changes
|
||||
- Verify you have ownership of files/registry keys
|
||||
|
||||
### "File not found" errors during MicroWin
|
||||
- Verify source ISO isn't corrupted
|
||||
- Ensure sufficient disk space (20GB+)
|
||||
- Check ISO is an official Windows ISO
|
||||
|
||||
### WinGet configuration prompt won't go away
|
||||
Type `Y` and press Enter in the PowerShell window. This only happens on first use and configures WinGet for your system.
|
||||
|
||||
## Still Need Help?
|
||||
|
||||
Can't find your answer? Try these resources:
|
||||
|
||||
- **[Known Issues](knownissues/)** - Check if it's a known problem
|
||||
- **[User Guide](userguide/)** - Comprehensive documentation
|
||||
- **[Discord Community](https://discord.gg/RUbZUZyByQ)** - Get help from other users
|
||||
- **[GitHub Issues](https://github.com/ChrisTitusTech/winutil/issues)** - Report bugs
|
||||
- **[YouTube Tutorial](https://www.youtube.com/watch?v=6UQZ5oQg8XA)** - Video walkthrough
|
||||
|
||||
---
|
||||
|
||||
**Last Updated**: January 2026
|
||||
**Found this helpful?** Consider starring the project on [GitHub](https://github.com/ChrisTitusTech/winutil)!
|
||||
|
||||
@@ -1,2 +1,167 @@
|
||||
Welcome to the official User Guide for **Winutil**, your all-in-one Windows toolkit.
|
||||
This document will walk you through installation, configuration, and usage of Winutil’s powerful features.
|
||||
---
|
||||
title: User Guide
|
||||
weight: 2
|
||||
---
|
||||
|
||||
Welcome to the official User Guide for **Winutil**, your all-in-one Windows toolkit!
|
||||
|
||||
## What is Winutil?
|
||||
|
||||
Winutil (Chris Titus Tech's Windows Utility) is a comprehensive PowerShell-based tool that helps you:
|
||||
|
||||
- **Install Applications**: Quickly install popular software without manual downloads
|
||||
- **Apply Tweaks**: Optimize Windows for performance, privacy, and usability
|
||||
- **Fix Issues**: Troubleshoot common Windows problems with one-click fixes
|
||||
- **Manage Updates**: Control how and when Windows updates install
|
||||
- **Create MicroWin**: Build custom, lightweight Windows installation ISOs
|
||||
- **Access Tools**: Quick access to Windows panels and utilities
|
||||
|
||||
## Who Should Use Winutil?
|
||||
|
||||
Winutil is designed for:
|
||||
|
||||
- **Home Users**: Wanting to optimize their personal PCs
|
||||
- **Power Users**: Needing fine-grained control over Windows
|
||||
- **IT Professionals**: Managing multiple systems efficiently
|
||||
- **Gamers**: Optimizing systems for gaming performance
|
||||
- **Privacy-Conscious Users**: Reducing telemetry and data collection
|
||||
- **Developers**: Setting up clean development environments
|
||||
|
||||
## Getting Started
|
||||
|
||||
New to Winutil? Start here:
|
||||
|
||||
1. **[Getting Started Guide](getting-started/)** - Installation and first steps
|
||||
2. **[Application Store](store/)** - Learn to install software easily
|
||||
3. **[Tweaks Guide](tweaks/)** - Optimize your system
|
||||
4. **[Features & Fixes](features/)** - Troubleshoot common issues
|
||||
|
||||
## Main Features
|
||||
|
||||
### 🚀 Application Installation
|
||||
|
||||
Browse and install hundreds of popular applications with a single click. No more hunting for download links or dealing with installer bloat.
|
||||
|
||||
**[Read the Store Guide →](store/)**
|
||||
|
||||
### ⚙️ System Tweaks
|
||||
|
||||
Apply optimizations for performance, privacy, and usability. Choose from preset configurations or customize individual tweaks.
|
||||
|
||||
**[Read the Tweaks Guide →](tweaks/)**
|
||||
|
||||
### 🛠️ Config & Fixes
|
||||
|
||||
Quick fixes for common Windows problems:
|
||||
- Reset network settings
|
||||
- Fix Windows Update issues
|
||||
- Repair system files
|
||||
- Access legacy Windows panels
|
||||
|
||||
**[Read the Features Guide →](features/)**
|
||||
|
||||
### 🪟 MicroWin
|
||||
|
||||
Create custom Windows installation ISOs with bloatware removed, optimizations pre-applied, and unnecessary components stripped out.
|
||||
|
||||
**[Read the MicroWin Guide →](microwin/)**
|
||||
|
||||
### 🔄 Update Management
|
||||
|
||||
Take control of Windows Updates with options to:
|
||||
- Enable/disable updates
|
||||
- Security updates only
|
||||
- Pause updates
|
||||
- Manage driver updates
|
||||
|
||||
**[Read the Updates Guide →](updates/)**
|
||||
|
||||
### 🤖 Automation
|
||||
|
||||
Automate Winutil configurations for:
|
||||
- Multiple PC setups
|
||||
- Enterprise deployments
|
||||
- Consistent configurations
|
||||
- Scripted installations
|
||||
|
||||
**[Read the Automation Guide →](automation/)**
|
||||
|
||||
## Quick Links
|
||||
|
||||
| I want to... | Go to... |
|
||||
|--------------|----------|
|
||||
| Install Winutil for the first time | [Getting Started](getting-started/) |
|
||||
| Install applications quickly | [Application Store](store/) |
|
||||
| Speed up my computer | [Tweaks Guide](tweaks/) |
|
||||
| Fix Windows Update problems | [Features - Fixes](features/) |
|
||||
| Create a lightweight Windows ISO | [MicroWin](microwin/) |
|
||||
| Automate setup for multiple PCs | [Automation](automation/) |
|
||||
| Understand what tweaks do | [Tweaks Guide](tweaks/) |
|
||||
|
||||
## Safety and Best Practices
|
||||
|
||||
Before using Winutil:
|
||||
|
||||
✅ **Always**:
|
||||
- Run PowerShell as Administrator
|
||||
- Create a system restore point before major changes
|
||||
- Understand what tweaks do before applying them
|
||||
- Start with Essential Tweaks before Advanced ones
|
||||
- Keep backups of important data
|
||||
|
||||
❌ **Never**:
|
||||
- Apply all tweaks without understanding them
|
||||
- Skip creating restore points
|
||||
- Use on production systems without testing
|
||||
- Disable security features unnecessarily
|
||||
|
||||
## System Requirements
|
||||
|
||||
- **Operating System**: Windows 10 (1809+) or Windows 11
|
||||
- **PowerShell**: Version 5.1 or later (included in Windows)
|
||||
- **Permissions**: Administrator access required
|
||||
- **Internet**: Required for downloading apps and updates
|
||||
- **.NET Framework**: 4.5+ (usually pre-installed)
|
||||
|
||||
## Getting Help
|
||||
|
||||
Need assistance?
|
||||
|
||||
- **📖 Documentation**: You're reading it! Use the navigation menu
|
||||
- **❓ FAQ**: Check [Frequently Asked Questions](../faq/)
|
||||
- **🐛 Known Issues**: Review [Known Issues](../knownissues/)
|
||||
- **💬 Discord**: Join the [community Discord](https://discord.gg/RUbZUZyByQ)
|
||||
- **🐙 GitHub**: Report bugs on [GitHub Issues](https://github.com/ChrisTitusTech/winutil/issues)
|
||||
- **📺 YouTube**: Watch [video tutorials](https://www.youtube.com/watch?v=6UQZ5oQg8XA)
|
||||
|
||||
## Contributing
|
||||
|
||||
Want to help improve Winutil?
|
||||
|
||||
- **Report Bugs**: Submit issues on GitHub
|
||||
- **Suggest Features**: Open feature requests
|
||||
- **Contribute Code**: Submit pull requests
|
||||
- **Improve Docs**: Help expand this documentation
|
||||
- **Share Knowledge**: Help others in Discord
|
||||
|
||||
**[Read Contributing Guide →](../contributing/)**
|
||||
|
||||
## What's in This Guide?
|
||||
|
||||
This User Guide covers everything you need to know:
|
||||
|
||||
1. **[Getting Started](getting-started/)** - Installation, first run, basic usage
|
||||
2. **[Application Store](store/)** - Installing software, using presets
|
||||
3. **[Tweaks](tweaks/)** - System optimizations and customizations
|
||||
4. **[Features & Fixes](features/)** - Troubleshooting tools and utilities
|
||||
5. **[MicroWin](microwin/)** - Creating custom Windows ISOs
|
||||
6. **[Updates](updates/)** - Managing Windows Update behavior
|
||||
7. **[Automation](automation/)** - Scripting and batch deployments
|
||||
|
||||
## Video Tutorial
|
||||
|
||||
Watch the complete Winutil overview:
|
||||
|
||||
{{< youtube id=6UQZ5oQg8XA loading=lazy >}}
|
||||
|
||||
Ready to get started? Head to the **[Getting Started Guide](getting-started/)** now!
|
||||
|
||||
289
docs/content/userguide/getting-started.md
Normal file
289
docs/content/userguide/getting-started.md
Normal file
@@ -0,0 +1,289 @@
|
||||
---
|
||||
title: Getting Started with Winutil
|
||||
weight: 1
|
||||
---
|
||||
|
||||
## Welcome to Winutil!
|
||||
|
||||
Winutil is a powerful Windows utility that helps you optimize, customize, and maintain your Windows system. This guide will walk you through everything you need to get started.
|
||||
|
||||
## System Requirements
|
||||
|
||||
Before running Winutil, ensure your system meets these requirements:
|
||||
|
||||
- **Operating System**: Windows 10 (Latest Version) or Windows 11
|
||||
- **PowerShell**: Version 5.1 or later (included by default in Windows 10/11)
|
||||
- **Administrator Access**: Required for system-level changes
|
||||
- **Internet Connection**: Required for downloading applications and updates
|
||||
- **.NET Framework**: Version 4.5 or later (usually pre-installed)
|
||||
|
||||
## Installation
|
||||
|
||||
Winutil doesn't require traditional installation. It runs directly from PowerShell as a script.
|
||||
|
||||
### Step 1: Open PowerShell as Administrator
|
||||
|
||||
There are several ways to open PowerShell with admin rights:
|
||||
|
||||
**Method 1: Start Menu (Recommended)**
|
||||
|
||||
1. Right-click on the Windows Start button
|
||||
2. Select "Windows PowerShell (Admin)" on Windows 10
|
||||
3. Or select "Terminal (Admin)" on Windows 11
|
||||
|
||||
**Method 2: Search Method**
|
||||
|
||||
1. Press the `Windows` key
|
||||
2. Type "PowerShell" or "Terminal"
|
||||
3. Press `Ctrl + Shift + Enter` to launch as administrator
|
||||
4. Or right-click and select "Run as administrator"
|
||||
|
||||
**Method 3: Run Dialog**
|
||||
|
||||
1. Press `Windows + R`
|
||||
2. Type `powershell`
|
||||
3. Press `Ctrl + Shift + Enter`
|
||||
|
||||
### Step 2: Run the Launch Command
|
||||
|
||||
Once PowerShell is open with administrator privileges, run one of these commands:
|
||||
|
||||
**Stable Release (Recommended for most users)**
|
||||
|
||||
```powershell
|
||||
irm "https://christitus.com/win" | iex
|
||||
```
|
||||
|
||||
**Development Branch (For testing latest features)**
|
||||
|
||||
```powershell
|
||||
irm "https://christitus.com/windev" | iex
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> The `irm` command downloads the script, and `iex` executes it. This is safe when downloading from the official source.
|
||||
|
||||
### Step 3: Wait for Winutil to Load
|
||||
|
||||
The first time you run Winutil, it may take a few moments to:
|
||||
|
||||
- Download the latest version
|
||||
- Initialize the interface
|
||||
- Load all features and settings
|
||||
|
||||
## First Time Setup
|
||||
|
||||
### Configure WinGet (If Prompted)
|
||||
|
||||
On your first run, you may be prompted to configure WinGet (Windows Package Manager). This is normal.
|
||||
|
||||
1. When prompted, type `Y` and press Enter
|
||||
2. Accept the terms and conditions
|
||||
3. This only needs to be done once
|
||||
|
||||
### Understanding the Interface
|
||||
|
||||
Winutil opens with a clean, tabbed interface:
|
||||
|
||||
**Main Tabs**:
|
||||
|
||||
- **Install**: Browse and install applications
|
||||
- **Tweaks**: Apply system optimizations and customizations
|
||||
- **Config**: Access system tools and utilities
|
||||
- **Updates**: Manage Windows updates
|
||||
- **MicroWin**: Create custom, lightweight Windows ISOs
|
||||
|
||||
## Your First Actions
|
||||
|
||||
Here are some recommended first steps for new users:
|
||||
|
||||
### 1. Create a Restore Point
|
||||
|
||||
Before making any changes, create a system restore point:
|
||||
|
||||
1. Go to the **Tweaks** tab
|
||||
2. Find "Create Restore Point" under Essential Tweaks
|
||||
3. Check the box and click "Run Tweaks"
|
||||
|
||||
This allows you to undo changes if needed.
|
||||
|
||||
### 2. Install Essential Applications
|
||||
|
||||
1. Navigate to the **Install** tab
|
||||
2. Browse categories or use the search bar
|
||||
3. Check applications you want to install
|
||||
4. Click "Install Selected" at the bottom
|
||||
|
||||
### 3. Apply Basic Tweaks
|
||||
|
||||
For a better Windows experience without risks:
|
||||
|
||||
1. Go to the **Tweaks** tab
|
||||
2. Select the **"Desktop" preset** for a balanced configuration
|
||||
3. Review the selected tweaks
|
||||
4. Click "Run Tweaks"
|
||||
|
||||
## Common Tasks
|
||||
|
||||
### Installing Applications
|
||||
|
||||
**Single Application**:
|
||||
|
||||
1. Open **Install** tab
|
||||
2. Search for the application name
|
||||
3. Check the box next to it
|
||||
4. Click "Install Selected"
|
||||
|
||||
**Multiple Applications**:
|
||||
|
||||
1. Check multiple application boxes
|
||||
2. All checked apps will install in sequence
|
||||
3. Progress is shown in the bottom panel
|
||||
|
||||
### Applying Tweaks
|
||||
|
||||
**Essential Tweaks** (Safe for all users):
|
||||
|
||||
1. Go to **Tweaks** tab
|
||||
2. Select from Essential Tweaks section
|
||||
3. Click "Run Tweaks"
|
||||
|
||||
**Advanced Tweaks** (Use with caution):
|
||||
|
||||
1. Only modify if you understand the implications
|
||||
2. Always create a restore point first
|
||||
3. Review documentation for each tweak
|
||||
|
||||
**Undoing Tweaks**:
|
||||
|
||||
1. Select the same tweaks you applied
|
||||
2. Click "Undo Selected Tweaks"
|
||||
3. System will revert to previous state
|
||||
|
||||
### Using Quick Fixes
|
||||
|
||||
For common Windows issues:
|
||||
|
||||
1. Go to **Config** tab
|
||||
2. Navigate to **Fixes** section
|
||||
3. Select the appropriate fix:
|
||||
- **Reset Network**: Fixes network connectivity issues
|
||||
- **Reset Windows Update**: Resolves update problems
|
||||
- **System Corruption Scan**: Repairs corrupted system files
|
||||
- **WinGet Reinstall**: Fixes package manager issues
|
||||
|
||||
### Changing DNS Servers
|
||||
|
||||
For improved privacy and speed:
|
||||
|
||||
1. Go to **Config** or **Tweaks** tab
|
||||
2. Find the DNS section
|
||||
3. Select a provider:
|
||||
- **Cloudflare**: Fast and privacy-focused
|
||||
- **Google**: Reliable and widely used
|
||||
- **Quad9**: Security-focused with malware blocking
|
||||
- **AdGuard**: Blocks ads and trackers
|
||||
4. Click Apply
|
||||
|
||||
## Understanding Presets
|
||||
|
||||
Winutil offers several preset configurations:
|
||||
|
||||
- **Minimal**: Minimal changes, keeps most Windows features
|
||||
- **Standard**: Good middle-ground for most users
|
||||
|
||||
## Safety Tips
|
||||
|
||||
✅ **DO**:
|
||||
|
||||
- Create restore points before major changes
|
||||
- Read tweak descriptions before applying
|
||||
- Start with Essential Tweaks
|
||||
- Keep Windows up to date
|
||||
- Back up important data
|
||||
|
||||
❌ **DON'T**:
|
||||
|
||||
- Apply all tweaks at once without understanding them
|
||||
- Skip creating restore points
|
||||
- Use Advanced Tweaks without research
|
||||
- Disable security features unless necessary
|
||||
- Run on production systems without testing
|
||||
|
||||
## Troubleshooting First Run
|
||||
|
||||
### Script Won't Download
|
||||
|
||||
**If the download fails**:
|
||||
|
||||
1. Try the direct GitHub link:
|
||||
|
||||
```powershell
|
||||
irm https://github.com/ChrisTitusTech/Winutil/releases/latest/download/Winutil.ps1 | iex
|
||||
```
|
||||
|
||||
2. Force TLS 1.2 (for older Windows versions):
|
||||
|
||||
```powershell
|
||||
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
||||
irm "https://christitus.com/win" | iex
|
||||
```
|
||||
|
||||
### Execution Policy Error
|
||||
|
||||
If you get an execution policy error:
|
||||
|
||||
```powershell
|
||||
Set-ExecutionPolicy Unrestricted -Scope Process -Force
|
||||
irm "https://christitus.com/win" | iex
|
||||
```
|
||||
|
||||
### Download Blocked (India/Certain Regions)
|
||||
|
||||
If GitHub is blocked in your region:
|
||||
|
||||
1. Use a VPN service
|
||||
2. Change DNS to Cloudflare (1.1.1.1) or Google (8.8.8.8)
|
||||
3. Try again
|
||||
|
||||
### Interface Doesn't Appear
|
||||
|
||||
If Winutil downloads but doesn't open:
|
||||
|
||||
1. Check if antivirus is blocking it
|
||||
2. Ensure you ran PowerShell as administrator
|
||||
3. Try closing and reopening PowerShell
|
||||
4. Check Windows Defender exclusions
|
||||
|
||||
## Next Steps
|
||||
|
||||
Now that you're set up, explore these guides:
|
||||
|
||||
- [Application Installation Guide](../store/) - Learn about installing software
|
||||
- [Tweaks Guide](../tweaks/) - Understand system optimizations
|
||||
- [MicroWin Guide](../microwin/) - Create custom Windows ISOs
|
||||
- [FAQ](../../faq/) - Common questions and answers
|
||||
|
||||
## Getting Help
|
||||
|
||||
If you need assistance:
|
||||
|
||||
- **Documentation**: Browse this documentation site
|
||||
- **Known Issues**: Check the [Known Issues](../../knownissues/) page
|
||||
- **Discord**: Join the [community Discord server](https://discord.gg/RUbZUZyByQ)
|
||||
- **GitHub Issues**: Report bugs on [GitHub](https://github.com/ChrisTitusTech/winutil/issues)
|
||||
- **YouTube**: Watch [video tutorials](https://www.youtube.com/watch?v=6UQZ5oQg8XA)
|
||||
|
||||
## Quick Reference Card
|
||||
|
||||
| Task | Location | Action |
|
||||
| -------------------- | ----------- | ------------------------------------ |
|
||||
| Install Apps | Install Tab | Check boxes → Install Selected |
|
||||
| Apply Tweaks | Tweaks Tab | Select tweaks → Run Tweaks |
|
||||
| Undo Tweaks | Tweaks Tab | Select tweaks → Undo Selected Tweaks |
|
||||
| Create Restore Point | Tweaks Tab | Essential Tweaks section |
|
||||
| Fix Network | Config Tab | Fixes → Reset Network |
|
||||
| Change DNS | Tweaks Tab | DNS section |
|
||||
| Open Control Panel | Config Tab | Legacy Windows Panels |
|
||||
|
||||
Happy optimizing! 🚀
|
||||
@@ -23,19 +23,19 @@ From this screen, you'll have to do one of the following:
|
||||
{{< image src="images/microwin/microwin-downloader" >}}
|
||||
|
||||
> [!NOTE]
|
||||
When downloading your ISO file, network conditions (such as speed and location) can affect the time you have to wait for the download to complete and the availability of such download.
|
||||
> When downloading your ISO file, network conditions (such as speed and location) can affect the time you have to wait for the download to complete and the availability of such download.
|
||||
|
||||
### Compatibility
|
||||
|
||||
You may be wondering if your Windows image is compatible with the MicroWin process. Because of this, we present to you a compatibility list:
|
||||
|
||||
| Version | Compatible? |
|
||||
|:--|:--|
|
||||
| Windows 7 | ❌ Not supported |
|
||||
| Windows 8 | ❌ Not supported |
|
||||
| Windows 8.1 | ❌ Not supported |
|
||||
| Windows 10 | ℹ️ Only the latest versions are supported, and you will not get the full experience |
|
||||
| Windows 11 | 👍 Supported (21H2-24H2) |
|
||||
| Version | Compatible? |
|
||||
| :---------- | :----------------------------------------------------- |
|
||||
| Windows 7 | ❌ Not supported |
|
||||
| Windows 8 | ❌ Not supported |
|
||||
| Windows 8.1 | ❌ Not supported |
|
||||
| Windows 10 | ❌ Not supported, But may work on the latest versions. |
|
||||
| Windows 11 | 👍 Supported (21H2-25H2) |
|
||||
|
||||
After getting information about your ISO file, you will see the following screen:
|
||||
|
||||
@@ -45,14 +45,14 @@ After getting information about your ISO file, you will see the following screen
|
||||
|
||||
To successfully use MicroWin with your Windows image, you need the following:
|
||||
|
||||
- **The latest versions of Windows 10, or Windows 11**
|
||||
- **The latest versions of Windows 11**
|
||||
- **Enough space**. We recommend having, at least, double the size of your ISO file. However, you may need more if you want to inject drivers
|
||||
|
||||
## Options
|
||||
|
||||
### Choosing your index
|
||||
|
||||
By default, MicroWin will target the Pro edition of Windows. The Pro edition is a good baseline for IT administrators **and** end-users, due to the inclusion of Group Policy, the ability to join domains, and more things that you can't find with the Home edition. For more information, check out [this comparison chart](https://en.wikipedia.org/wiki/Windows_10_editions#Comparison_chart).
|
||||
By default, MicroWin will target the Pro edition of Windows. The Pro edition is a good baseline for IT administrators **and** end-users, due to the inclusion of Group Policy, the ability to join domains, and more things that you can't find with the Home edition. For more information, check out [this comparison chart](https://en.wikipedia.org/wiki/Windows_11_version_history).
|
||||
|
||||
Obviously, you should pick the edition of Windows for which you have a license. To change the edition to process, select the drop-down menu under "Choose Windows SKU" and select your edition.
|
||||
|
||||
@@ -67,7 +67,7 @@ If you want to use MicroWin on a real system, you may want to include the driver
|
||||
- **Injecting VirtIO drivers:** if you plan on using the target Windows image with QEMU/Proxmox VE, or any UI that uses it (like `virt-manager` on Linux), you can automatically download the VirtIO driver ISO and put its contents into your ISO file
|
||||
|
||||
> [!NOTE]
|
||||
Injecting VirtIO drivers is only supported on v25.01.11 and later
|
||||
> Injecting VirtIO drivers is only supported on v25.01.11 and later
|
||||
|
||||
Of course, you can continue without setting up drivers. Simply leave the options blank and continue with the process.
|
||||
|
||||
@@ -145,6 +145,9 @@ If you have a Ventoy drive, you can copy your ISO file to it quickly and easily.
|
||||
|
||||
You can learn more about Ventoy drives [here](https://www.ventoy.net/en/index.html).
|
||||
|
||||
> [!NOTE]
|
||||
> Newer versions of MicroWin images may have compatibility issues with ventoy.
|
||||
|
||||
### Setting up a custom user
|
||||
|
||||
If you want to set up a custom user, effectively creating a completely unattended installation, you can set up a user name and password:
|
||||
@@ -152,7 +155,7 @@ If you want to set up a custom user, effectively creating a completely unattende
|
||||
{{< image src="images/microwin/microwin-customuser" >}}
|
||||
|
||||
> [!NOTE]
|
||||
To set up a custom user, you need to specify its name, which cannot surpass 20 characters. Otherwise, a user named "User" will be created. However, you don't need to set up a password. If you leave the password box blank, you can take advantage of auto-logons, but **do what you think it's best for your use case**.
|
||||
> To set up a custom user, you need to specify its name, which cannot surpass 20 characters. Otherwise, a user named "User" will be created. However, you don't need to set up a password. If you leave the password box blank, you can take advantage of auto-logons, but **do what you think it's best for your use case**.
|
||||
|
||||
After configuring all your desired settings, click "Start the process" and specify the location of your ISO file.
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ The utility provides three distinct settings for managing Windows updates: Defau
|
||||
### Security (Recommended) Settings
|
||||
- **Description**: This is the recommended setting for all computers.
|
||||
- **Update Schedule**:
|
||||
- **Feature Updates**: Delays feature updates by 2 years to avoid potential bugs and instability.
|
||||
- **Feature Updates**: Delays feature updates by 365 days to avoid potential bugs and instability.
|
||||
- **Security Updates**: Installs security updates 4 days after their release to ensure system protection against pressing security flaws.
|
||||
- **Rationale**:
|
||||
- **Feature Updates**: Often introduce new features and bugs; delaying these updates minimizes the risk of system disruptions.
|
||||
|
||||
@@ -12,7 +12,7 @@ canonifyURLs = true
|
||||
path = "github.com/imfing/hextra"
|
||||
|
||||
[[menu.main]]
|
||||
name = "Documentation"
|
||||
name = "Developer Documentation"
|
||||
pageRef = "/dev"
|
||||
weight = 1
|
||||
|
||||
@@ -77,7 +77,7 @@ dateFormat = "January 2, 2006"
|
||||
[params.footer]
|
||||
enable = true
|
||||
displayCopyright = true
|
||||
displayPoweredBy = true
|
||||
displayPoweredBy = false
|
||||
width = "normal"
|
||||
|
||||
[params.highlight.copy]
|
||||
|
||||
24
docs/i18n/en.yaml
Normal file
24
docs/i18n/en.yaml
Normal file
@@ -0,0 +1,24 @@
|
||||
copyright: "© Chris Titus Tech. All rights reserved."
|
||||
|
||||
backToTop: "Scroll to top"
|
||||
changeLanguage: "Change language"
|
||||
changeTheme: "Change theme"
|
||||
copy: "Copy"
|
||||
copied: "Copied!"
|
||||
copyAsMarkdown: "Copy as Markdown"
|
||||
copyPage: "Copy Page"
|
||||
copyCode: "Copy code"
|
||||
dark: "Dark"
|
||||
editThisPage: "Edit this page on GitHub →"
|
||||
lastUpdated: "Last updated on"
|
||||
light: "Light"
|
||||
next: "Next"
|
||||
noResultsFound: "No results found."
|
||||
onThisPage: "On this page"
|
||||
poweredBy: "Powered by Chris Titus Tech"
|
||||
previous: "Prev"
|
||||
readMore: "Read more →"
|
||||
searchPlaceholder: "Search..."
|
||||
system: "System"
|
||||
tags: "Tags"
|
||||
viewAsMarkdown: "View as Markdown"
|
||||
19
docs/layouts/shortcodes/autolinks.html
Normal file
19
docs/layouts/shortcodes/autolinks.html
Normal file
@@ -0,0 +1,19 @@
|
||||
{{- $section := .Get "section" | lower -}}
|
||||
{{- $pages := slice -}}
|
||||
{{- range .Site.RegularPages -}}
|
||||
{{- if in .RelPermalink $section -}}
|
||||
{{- $pageTitle := .Title -}}
|
||||
{{- if eq $pageTitle "" -}}
|
||||
{{- $pageTitle = .File.BaseFileName | humanize | title -}}
|
||||
{{- end -}}
|
||||
{{- if findRE "^# .+" .RawContent -}}
|
||||
{{- $pageTitle = replaceRE "(?s)^# (.+?)\\n.*" "$1" .RawContent -}}
|
||||
{{- end -}}
|
||||
{{- $pages = $pages | append (dict "title" $pageTitle "url" .RelPermalink) -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
<ul>
|
||||
{{- range sort $pages "title" "asc" }}
|
||||
<li><a href="{{ .url }}">{{ .title }}</a></li>
|
||||
{{- end }}
|
||||
</ul>
|
||||
@@ -54,14 +54,9 @@ public class PowerManagement {
|
||||
$index = $sync.MicrowinWindowsFlavors.SelectedValue.Split(":")[0].Trim()
|
||||
Write-Host "Index chosen: '$index' from $($sync.MicrowinWindowsFlavors.SelectedValue)"
|
||||
|
||||
$copyToUSB = $sync.WPFMicrowinCopyToUsb.IsChecked
|
||||
$injectDrivers = $sync.MicrowinInjectDrivers.IsChecked
|
||||
$importDrivers = $sync.MicrowinImportDrivers.IsChecked
|
||||
|
||||
$WPBT = $sync.MicroWinWPBT.IsChecked
|
||||
$unsupported = $sync.MicroWinUnsupported.IsChecked
|
||||
$skipFla = $sync.MicroWinNoFLA.IsChecked
|
||||
|
||||
$importVirtIO = $sync.MicrowinCopyVirtIO.IsChecked
|
||||
|
||||
$mountDir = $sync.MicrowinMountDir.Text
|
||||
@@ -90,8 +85,11 @@ public class PowerManagement {
|
||||
}
|
||||
}
|
||||
|
||||
$imgVersion = (Get-WindowsImage -ImagePath $mountDir\sources\install.wim -Index $index).Version
|
||||
$imgVersion = (Get-WindowsImage -ImagePath "$mountDir\sources\install.wim" -Index $index).Version
|
||||
# Windows Setup is the second index in the boot image.
|
||||
$bootVersion = (Get-WindowsImage -ImagePath "$mountDir\sources\boot.wim" -Index 2).Version
|
||||
Write-Host "The Windows Image Build Version is: $imgVersion"
|
||||
Write-Host "The WinPE boot image Build Version is: $bootVersion"
|
||||
|
||||
# Detect image version to avoid performing MicroWin processing on Windows 8 and earlier
|
||||
if ((Microwin-TestCompatibleImage $imgVersion $([System.Version]::new(10,0,10240,0))) -eq $false) {
|
||||
@@ -175,33 +173,31 @@ public class PowerManagement {
|
||||
}
|
||||
}
|
||||
|
||||
if ($WPBT) {
|
||||
Write-Host "Disabling WPBT Execution"
|
||||
reg load HKLM\zSYSTEM "$($scratchDir)\Windows\System32\config\SYSTEM"
|
||||
reg add "HKLM\zSYSTEM\ControlSet001\Control\Session Manager" /v DisableWpbtExecution /t REG_DWORD /d 1 /f
|
||||
reg unload HKLM\zSYSTEM
|
||||
}
|
||||
Write-Host "Disabling WPBT Execution"
|
||||
reg load HKLM\zSYSTEM "$($scratchDir)\Windows\System32\config\SYSTEM"
|
||||
reg add "HKLM\zSYSTEM\ControlSet001\Control\Session Manager" /v DisableWpbtExecution /t REG_DWORD /d 1 /f
|
||||
reg unload HKLM\zSYSTEM
|
||||
|
||||
if ($skipFla) {
|
||||
Write-Host "Skipping first logon animation..."
|
||||
reg load HKLM\zSOFTWARE "$($scratchDir)\Windows\System32\config\SOFTWARE"
|
||||
reg add "HKLM\zSOFTWARE\Microsoft\Active Setup\Installed Components\CMP_NoFla" /f
|
||||
reg add "HKLM\zSOFTWARE\Microsoft\Active Setup\Installed Components\CMP_NoFla" /ve /t REG_SZ /d "Stop First Logon Animation Process" /f
|
||||
reg add "HKLM\zSOFTWARE\Microsoft\Active Setup\Installed Components\CMP_NoFla" /v StubPath /t REG_EXPAND_SZ /d '""%WINDIR%\System32\cmd.exe"" /C ""taskkill /f /im firstlogonanim.exe""' /f
|
||||
reg unload HKLM\zSOFTWARE
|
||||
}
|
||||
Write-Host "Skipping first logon animation..."
|
||||
reg load HKLM\zSOFTWARE "$($scratchDir)\Windows\System32\config\SOFTWARE"
|
||||
reg add "HKLM\zSOFTWARE\Microsoft\Active Setup\Installed Components\CMP_NoFla" /f
|
||||
reg add "HKLM\zSOFTWARE\Microsoft\Active Setup\Installed Components\CMP_NoFla" /f /ve /t REG_SZ /d "Stop First Logon Animation Process"
|
||||
reg add "HKLM\zSOFTWARE\Microsoft\Active Setup\Installed Components\CMP_NoFla" /f /v StubPath /t REG_EXPAND_SZ /d '\"%WINDIR%\System32\cmd.exe\" /C \"taskkill /f /im firstlogonanim.exe\"'
|
||||
reg unload HKLM\zSOFTWARE
|
||||
|
||||
if ($unsupported) {
|
||||
Write-Host "Bypassing system requirements (locally)"
|
||||
reg add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v "SV1" /t REG_DWORD /d 0 /f
|
||||
reg add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v "SV2" /t REG_DWORD /d 0 /f
|
||||
reg add "HKLM\SYSTEM\Setup\LabConfig" /v "BypassCPUCheck" /t REG_DWORD /d 1 /f
|
||||
reg add "HKLM\SYSTEM\Setup\LabConfig" /v "BypassRAMCheck" /t REG_DWORD /d 1 /f
|
||||
reg add "HKLM\SYSTEM\Setup\LabConfig" /v "BypassSecureBootCheck" /t REG_DWORD /d 1 /f
|
||||
reg add "HKLM\SYSTEM\Setup\LabConfig" /v "BypassStorageCheck" /t REG_DWORD /d 1 /f
|
||||
reg add "HKLM\SYSTEM\Setup\LabConfig" /v "BypassTPMCheck" /t REG_DWORD /d 1 /f
|
||||
reg add "HKLM\SYSTEM\Setup\MoSetup" /v "AllowUpgradesWithUnsupportedTPMOrCPU" /t REG_DWORD /d 1 /f
|
||||
}
|
||||
# We have to prepare the target system to accept the diagnostics script
|
||||
reg load HKLM\zSOFTWARE "$($scratchDir)\Windows\System32\config\SOFTWARE"
|
||||
reg add "HKLM\zSOFTWARE\WinUtil" /f
|
||||
reg add "HKLM\zSOFTWARE\WinUtil" /f /v "ToolboxVersion" /t REG_SZ /d "$($sync.version)"
|
||||
reg add "HKLM\zSOFTWARE\WinUtil" /f /v "MicroWinBuildDate" /t REG_SZ /d "$((Get-Date).ToString('yyMMdd-HHmm'))"
|
||||
|
||||
# REAL software developers set execution policies to unrestricted but, because we're targeting
|
||||
# mainstream population, we have to lower the level of "riskiness" -- set remotesigned; at least that
|
||||
# lets us run PWSH scripts that WE create. Execution policies don't really make sense anyway if common sense
|
||||
# is lacking.
|
||||
reg add "HKLM\zSOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell" /v "ExecutionPolicy" /t REG_SZ /d "RemoteSigned" /f
|
||||
|
||||
reg unload HKLM\zSOFTWARE
|
||||
|
||||
if ($importVirtIO) {
|
||||
Write-Host "Copying VirtIO drivers..."
|
||||
@@ -217,7 +213,10 @@ public class PowerManagement {
|
||||
Microwin-RemoveProvisionedPackages -UseCmdlets $true
|
||||
|
||||
# Detect Windows 11 24H2 and add dependency to FileExp to prevent Explorer look from going back - thanks @WitherOrNot and @thecatontheceiling
|
||||
if ((Microwin-TestCompatibleImage $imgVersion $([System.Version]::new(10,0,26100,1))) -eq $true) {
|
||||
# ----- UPDATE UPDATE UPDATE: they fixed this in 10.0.26100.7019. DO NOT DO THIS OTHERWISE IT BREAKS EXPLORER AGAIN BECAUSE THE CHEEKY LITTLE
|
||||
# ----- PoS CHANGED APPRUNTIME.CBS TO APPRUNTIME.CBS.1.6. Thing is, we don't need to patch this in those builds because it no longer breaks
|
||||
# ----- when you don't patch.
|
||||
if (((Microwin-TestCompatibleImage $imgVersion $([System.Version]::new(10,0,26100,1))) -eq $true) -and ((Microwin-TestCompatibleImage $imgVersion $([System.Version]::new(10,0,26100,7019))) -eq $false)) {
|
||||
try {
|
||||
if (Test-Path "$scratchDir\Windows\SystemApps\MicrosoftWindows.Client.FileExp_cw5n1h2txyewy\appxmanifest.xml" -PathType Leaf) {
|
||||
# Found the culprit. Do the following:
|
||||
@@ -302,11 +301,6 @@ public class PowerManagement {
|
||||
Copy-Item "$env:temp\FirstStartup.ps1" "$($scratchDir)\Windows\FirstStartup.ps1" -force
|
||||
Write-Host "Done copy FirstRun.ps1"
|
||||
|
||||
Write-Host "Copy link to winutil.ps1 into the ISO"
|
||||
$desktopDir = "$($scratchDir)\Windows\Users\Default\Desktop"
|
||||
New-Item -ItemType Directory -Force -Path "$desktopDir"
|
||||
dism /English /image:$($scratchDir) /set-profilepath:"$($scratchDir)\Windows\Users\Default"
|
||||
|
||||
Write-Host "Copy checkinstall.cmd into the ISO"
|
||||
Microwin-NewCheckInstall
|
||||
Copy-Item "$env:temp\checkinstall.cmd" "$($scratchDir)\Windows\checkinstall.cmd" -force
|
||||
@@ -316,7 +310,6 @@ public class PowerManagement {
|
||||
New-Item -ItemType Directory -Force -Path "$($scratchDir)\Windows\System32\OOBE\BYPASSNRO"
|
||||
|
||||
Write-Host "Loading registry"
|
||||
reg load HKLM\zCOMPONENTS "$($scratchDir)\Windows\System32\config\COMPONENTS"
|
||||
reg load HKLM\zDEFAULT "$($scratchDir)\Windows\System32\config\default"
|
||||
reg load HKLM\zNTUSER "$($scratchDir)\Users\Default\ntuser.dat"
|
||||
reg load HKLM\zSOFTWARE "$($scratchDir)\Windows\System32\config\SOFTWARE"
|
||||
@@ -375,9 +368,8 @@ public class PowerManagement {
|
||||
Write-Host "Disabling Reserved Storage"
|
||||
reg add "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\ReserveManager" /v "ShippedWithReserves" /t REG_DWORD /d 0 /f
|
||||
|
||||
Write-Host "Changing theme to dark. This only works on Activated Windows"
|
||||
reg add "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize" /v "AppsUseLightTheme" /t REG_DWORD /d 0 /f
|
||||
reg add "HKLM\zSOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize" /v "SystemUsesLightTheme" /t REG_DWORD /d 0 /f
|
||||
Write-Host "Showing file extensions..."
|
||||
reg add "HKLM\zNTUSER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
|
||||
|
||||
if ((Microwin-TestCompatibleImage $imgVersion $([System.Version]::new(10,0,21996,1))) -eq $false) {
|
||||
# We're dealing with Windows 10. Configure sane desktop settings. NOTE: even though stuff to disable News and Interests is there,
|
||||
@@ -397,7 +389,6 @@ public class PowerManagement {
|
||||
Write-Error "An unexpected error occurred: $_"
|
||||
} finally {
|
||||
Write-Host "Unmounting Registry..."
|
||||
reg unload HKLM\zCOMPONENTS
|
||||
reg unload HKLM\zDEFAULT
|
||||
reg unload HKLM\zNTUSER
|
||||
reg unload HKLM\zSOFTWARE
|
||||
@@ -406,9 +397,45 @@ public class PowerManagement {
|
||||
Write-Host "Cleaning up image..."
|
||||
dism /English /image:$scratchDir /Cleanup-Image /StartComponentCleanup /ResetBase
|
||||
Write-Host "Cleanup complete."
|
||||
$committed = $false
|
||||
$unmounted = $false
|
||||
|
||||
Write-Host "Saving image..."
|
||||
|
||||
try {
|
||||
Save-WindowsImage -Path "$scratchDir"
|
||||
$committed = $true
|
||||
} catch {
|
||||
do {
|
||||
# we'll prevent stuff inside this loop from throwing exceptions and breaking from the loop.
|
||||
try {
|
||||
Save-WindowsImage -Path "$scratchDir"
|
||||
$committed = $true
|
||||
} catch {
|
||||
Write-Host "Commit operation unsuccessful. Trying again after 3 seconds..."
|
||||
Start-Sleep -Seconds 3
|
||||
}
|
||||
} until ($committed)
|
||||
}
|
||||
|
||||
Write-Host "Unmounting image..."
|
||||
Dismount-WindowsImage -Path "$scratchDir" -Save
|
||||
|
||||
try {
|
||||
# because we've already saved the changes earlier, we can safely discard
|
||||
Dismount-WindowsImage -Discard -Path "$scratchDir"
|
||||
$unmounted = $true
|
||||
} catch {
|
||||
do {
|
||||
# we'll prevent stuff inside this loop from throwing exceptions and breaking from the loop.
|
||||
try {
|
||||
Dismount-WindowsImage -Discard -Path "$scratchDir"
|
||||
$unmounted = $true
|
||||
} catch {
|
||||
Write-Host "Unmount operation unsuccessful. Trying again after 3 seconds..."
|
||||
Start-Sleep -Seconds 3
|
||||
}
|
||||
} until ($unmounted)
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -433,20 +460,6 @@ public class PowerManagement {
|
||||
}
|
||||
Write-Host "Windows image completed. Continuing with boot.wim."
|
||||
|
||||
$esd = $sync.MicroWinESD.IsChecked
|
||||
if ($esd) {
|
||||
Write-Host "Converting install image to ESD."
|
||||
try {
|
||||
Export-WindowsImage -SourceImagePath "$mountDir\sources\install.wim" -SourceIndex $index -DestinationImagePath "$mountDir\sources\install.esd" -CompressionType "Recovery"
|
||||
Remove-Item "$mountDir\sources\install.wim"
|
||||
Write-Host "Converted install image to ESD."
|
||||
} catch {
|
||||
Start-Process -FilePath "$env:SystemRoot\System32\dism.exe" -ArgumentList "/export-image /sourceimagefile:`"$mountDir\sources\install.wim`" /sourceindex:1 /destinationimagefile:`"$mountDir\sources\install.esd`" /compress:recovery" -Wait -NoNewWindow
|
||||
Remove-Item "$mountDir\sources\install.wim"
|
||||
Write-Host "Converted install image to ESD."
|
||||
}
|
||||
}
|
||||
|
||||
# Next step boot image
|
||||
Write-Host "Mounting boot image $mountDir\sources\boot.wim into $scratchDir"
|
||||
Mount-WindowsImage -ImagePath "$mountDir\sources\boot.wim" -Index 2 -Path "$scratchDir"
|
||||
@@ -462,7 +475,6 @@ public class PowerManagement {
|
||||
}
|
||||
|
||||
Write-Host "Loading registry..."
|
||||
reg load HKLM\zCOMPONENTS "$($scratchDir)\Windows\System32\config\COMPONENTS" >$null
|
||||
reg load HKLM\zDEFAULT "$($scratchDir)\Windows\System32\config\default" >$null
|
||||
reg load HKLM\zNTUSER "$($scratchDir)\Users\Default\ntuser.dat" >$null
|
||||
reg load HKLM\zSOFTWARE "$($scratchDir)\Windows\System32\config\SOFTWARE" >$null
|
||||
@@ -480,27 +492,86 @@ public class PowerManagement {
|
||||
reg add "HKLM\zSYSTEM\Setup\MoSetup" /v "AllowUpgradesWithUnsupportedTPMOrCPU" /t REG_DWORD /d 1 /f
|
||||
# Fix Computer Restarted Unexpectedly Error on New Bare Metal Install
|
||||
reg add "HKLM\zSYSTEM\Setup\Status\ChildCompletion" /v "setup.exe" /t REG_DWORD /d 3 /f
|
||||
|
||||
# Force old Setup on 24H2+ WinPE images due to personal preference; it's simply faster and
|
||||
# more reliable than MoSetup. I simply can't stand that new setup system.
|
||||
if ((Microwin-TestCompatibleImage $bootVersion $([System.Version]::new(10,0,26040,0))) -and (Test-Path -Path "$scratchDir\sources\setup.exe" -PathType Leaf)) {
|
||||
reg add "HKLM\zSYSTEM\Setup" /f /v "CmdLine" /t REG_SZ /d "\sources\setup.exe"
|
||||
}
|
||||
} catch {
|
||||
Write-Error "An unexpected error occurred: $_"
|
||||
} finally {
|
||||
Write-Host "Unmounting Registry..."
|
||||
reg unload HKLM\zCOMPONENTS
|
||||
reg unload HKLM\zDEFAULT
|
||||
reg unload HKLM\zNTUSER
|
||||
reg unload HKLM\zSOFTWARE
|
||||
reg unload HKLM\zSYSTEM
|
||||
|
||||
$committed = $false
|
||||
$unmounted = $false
|
||||
|
||||
Write-Host "Saving image..."
|
||||
|
||||
try {
|
||||
Save-WindowsImage -Path "$scratchDir"
|
||||
$committed = $true
|
||||
} catch {
|
||||
do {
|
||||
# we'll prevent stuff inside this loop from throwing exceptions and breaking from the loop.
|
||||
try {
|
||||
Save-WindowsImage -Path "$scratchDir"
|
||||
$committed = $true
|
||||
} catch {
|
||||
Write-Host "Commit operation unsuccessful. Trying again after 3 seconds..."
|
||||
Start-Sleep -Seconds 3
|
||||
}
|
||||
} until ($committed)
|
||||
}
|
||||
|
||||
Write-Host "Unmounting image..."
|
||||
Dismount-WindowsImage -Path "$scratchDir" -Save
|
||||
|
||||
try {
|
||||
# because we've already saved the changes earlier, we can safely discard
|
||||
Dismount-WindowsImage -Discard -Path "$scratchDir"
|
||||
$unmounted = $true
|
||||
} catch {
|
||||
do {
|
||||
# we'll prevent stuff inside this loop from throwing exceptions and breaking from the loop.
|
||||
try {
|
||||
Dismount-WindowsImage -Discard -Path "$scratchDir"
|
||||
$unmounted = $true
|
||||
} catch {
|
||||
Write-Host "Unmount operation unsuccessful. Trying again after 3 seconds..."
|
||||
Start-Sleep -Seconds 3
|
||||
}
|
||||
} until ($unmounted)
|
||||
}
|
||||
|
||||
Write-Host "Creating ISO image"
|
||||
|
||||
$peToolsPath = ""
|
||||
|
||||
$adkKitsRoot = Microwin-GetKitsRoot -wow64environment $false
|
||||
$adkKitsRoot_WOW64Environ = Microwin-GetKitsRoot -wow64environment $true
|
||||
|
||||
$expectedADKPath = "$($adkKitsRoot)Assessment and Deployment Kit"
|
||||
$expectedADKPath_WOW64Environ = "$($adkKitsRoot_WOW64Environ)Assessment and Deployment Kit"
|
||||
|
||||
# if we downloaded oscdimg from github it will be in the temp directory so use it
|
||||
# if it is not in temp it is part of ADK and is in global PATH so just set it to oscdimg.exe
|
||||
$oscdimgPath = Join-Path $env:TEMP 'oscdimg.exe'
|
||||
$oscdImgFound = Test-Path $oscdimgPath -PathType Leaf
|
||||
if (!$oscdImgFound) {
|
||||
$oscdimgPath = "oscdimg.exe"
|
||||
$oscdImgFound = Test-Path -Path "$oscdimgPath" -PathType Leaf
|
||||
if ((-not ($oscdImgFound)) -and ((Microwin-TestKitsRootPaths -adkKitsRootPath "$expectedADKPath" -adkKitsRootPath_WOW64Environ "$expectedADKPath_WOW64Environ") -eq $true)) {
|
||||
if ($expectedADKPath -ne "Assessment and Deployment Kit") { $peToolsPath = $expectedADKPath }
|
||||
if (($peToolsPath -eq "") -and ($expectedADKPath_WOW64Environ -ne "Assessment and Deployment Kit")) { $peToolsPath = $expectedADKPath_WOW64Environ }
|
||||
|
||||
Write-Host "Using $peToolsPath as the Preinstallation Environment tools path..."
|
||||
# Paths change depending on platform
|
||||
if ([Environment]::Is64BitOperatingSystem) {
|
||||
$oscdimgPath = "$peToolsPath\Deployment Tools\amd64\Oscdimg\oscdimg.exe"
|
||||
} else {
|
||||
$oscdimgPath = "$peToolsPath\Deployment Tools\x86\Oscdimg\oscdimg.exe"
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host "[INFO] Using oscdimg.exe from: $oscdimgPath"
|
||||
@@ -511,12 +582,6 @@ public class PowerManagement {
|
||||
|
||||
Write-Host "OSCDIMG Error Level : $($oscdimgProc.ExitCode)"
|
||||
|
||||
if ($copyToUSB) {
|
||||
Write-Host "Copying target ISO to the USB drive"
|
||||
Microwin-CopyToUSB("$($SaveDialog.FileName)")
|
||||
if ($?) { Write-Host "Done Copying target ISO to USB drive!" } else { Write-Host "ISO copy failed." }
|
||||
}
|
||||
|
||||
Write-Host " _____ "
|
||||
Write-Host "(____ \ "
|
||||
Write-Host " _ \ \ ___ ____ ____ "
|
||||
|
||||
@@ -122,46 +122,60 @@ function Invoke-MicrowinGetIso {
|
||||
Set-WinUtilTaskbaritem -state "Indeterminate" -overlay "logo"
|
||||
Invoke-MicrowinBusyInfo -action "wip" -message "Checking system requirements..." -interactive $false
|
||||
|
||||
$adkKitsRoot = Microwin-GetKitsRoot -wow64environment $false
|
||||
$adkKitsRoot_WOW64Environ = Microwin-GetKitsRoot -wow64environment $true
|
||||
|
||||
$expectedADKPath = "$($adkKitsRoot)Assessment and Deployment Kit"
|
||||
$expectedADKPath_WOW64Environ = "$($adkKitsRoot_WOW64Environ)Assessment and Deployment Kit"
|
||||
|
||||
$oscdimgPath = Join-Path $env:TEMP 'oscdimg.exe'
|
||||
$oscdImgFound = [bool] (Get-Command -ErrorAction Ignore -Type Application oscdimg.exe) -or (Test-Path $oscdimgPath -PathType Leaf)
|
||||
$oscdImgFound = [bool] (Microwin-TestKitsRootPaths -adkKitsRootPath "$expectedADKPath" -adkKitsRootPath_WOW64Environ "$expectedADKPath_WOW64Environ") -or (Test-Path $oscdimgPath -PathType Leaf)
|
||||
Write-Host "oscdimg.exe on system: $oscdImgFound"
|
||||
|
||||
if (!$oscdImgFound) {
|
||||
$downloadFromGitHub = $sync.WPFMicrowinDownloadFromGitHub.IsChecked
|
||||
|
||||
if (!$downloadFromGitHub) {
|
||||
# only show the message to people who did check the box to download from github, if you check the box
|
||||
# you consent to downloading it, no need to show extra dialogs
|
||||
[System.Windows.MessageBox]::Show("oscdimg.exe is not found on the system, winutil will now attempt do download and install it using choco. This might take a long time.")
|
||||
# the step below needs choco to download oscdimg
|
||||
# Install Choco if not already present
|
||||
Install-WinUtilChoco
|
||||
$chocoFound = [bool] (Get-Command -ErrorAction Ignore -Type Application choco)
|
||||
Write-Host "choco on system: $chocoFound"
|
||||
if (!$chocoFound) {
|
||||
[System.Windows.MessageBox]::Show("choco.exe is not found on the system, you need choco to download oscdimg.exe")
|
||||
return
|
||||
}
|
||||
|
||||
Start-Process -Verb runas -FilePath powershell.exe -ArgumentList "choco install windows-adk-oscdimg"
|
||||
$msg = "oscdimg is installed, now close, reopen PowerShell terminal and re-launch winutil.ps1"
|
||||
Invoke-MicrowinBusyInfo -action "done" -message $msg # We set it to done because it immediately returns from this function
|
||||
[System.Windows.MessageBox]::Show($msg)
|
||||
return
|
||||
if (-not ($oscdImgFound)) {
|
||||
# First we try to grab it from github, if not, run the ADK installer.
|
||||
if ((Microwin-GetOscdimg -oscdimgPath $oscdimgPath) -eq $true) {
|
||||
Write-Host "OSCDIMG download succeeded."
|
||||
} else {
|
||||
[System.Windows.MessageBox]::Show("oscdimg.exe is not found on the system, winutil will now attempt do download and install it from github. This might take a long time.")
|
||||
Invoke-MicrowinBusyInfo -action "wip" -message "Downloading oscdimg.exe..." -interactive $false
|
||||
Microwin-GetOscdimg -oscdimgPath $oscdimgPath
|
||||
$oscdImgFound = Test-Path $oscdimgPath -PathType Leaf
|
||||
if (!$oscdImgFound) {
|
||||
$msg = "oscdimg was not downloaded can not proceed"
|
||||
Invoke-MicrowinBusyInfo -action "warning" -message $msg
|
||||
[System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Error)
|
||||
Write-Host "OSCDIMG could not be downloaded from GitHub. Downloading deployment tools..."
|
||||
if (-not (Microwin-GetAdkDeploymentTools)) {
|
||||
Invoke-MicrowinBusyInfo -action "warning" -message "Neither OSCDIMG nor ADK could be downloaded."
|
||||
Write-Host "Neither OSCDIMG nor ADK could be downloaded."
|
||||
return
|
||||
} else {
|
||||
Write-Host "oscdimg.exe was successfully downloaded from github"
|
||||
$msg = "ADK/OSCDIMG is installed, now restart this process."
|
||||
Invoke-MicrowinBusyInfo -action "done" -message $msg # We set it to done because it immediately returns from this function
|
||||
[System.Windows.MessageBox]::Show($msg)
|
||||
Remove-Item -Path "$env:TEMP\adksetup.exe" -Force -ErrorAction SilentlyContinue
|
||||
return
|
||||
}
|
||||
}
|
||||
} elseif (Microwin-TestKitsRootPaths -adkKitsRootPath "$expectedADKPath" -adkKitsRootPath_WOW64Environ "$expectedADKPath_WOW64Environ") {
|
||||
# We have to guess where oscdimg is. We'll check both values...
|
||||
$peToolsPath = ""
|
||||
|
||||
if ($expectedADKPath -ne "Assessment and Deployment Kit") { $peToolsPath = $expectedADKPath }
|
||||
if (($peToolsPath -eq "") -and ($expectedADKPath_WOW64Environ -ne "Assessment and Deployment Kit")) { $peToolsPath = $expectedADKPath_WOW64Environ }
|
||||
|
||||
Write-Host "Using $peToolsPath as the Preinstallation Environment tools path..."
|
||||
# Paths change depending on platform
|
||||
if ([Environment]::Is64BitOperatingSystem) {
|
||||
$oscdimgPath = "$peToolsPath\Deployment Tools\amd64\Oscdimg\oscdimg.exe"
|
||||
} else {
|
||||
$oscdimgPath = "$peToolsPath\Deployment Tools\x86\Oscdimg\oscdimg.exe"
|
||||
}
|
||||
|
||||
# If it's a non-existent file, we won't continue.
|
||||
if (-not (Test-Path -Path "$oscdimgPath" -PathType Leaf)) {
|
||||
$oscdimgFound = $false
|
||||
}
|
||||
}
|
||||
|
||||
$oscdImgFound = [bool] (Microwin-TestKitsRootPaths -adkKitsRootPath "$expectedADKPath" -adkKitsRootPath_WOW64Environ "$expectedADKPath_WOW64Environ") -or (Test-Path $oscdimgPath -PathType Leaf)
|
||||
|
||||
if (-not ($oscdimgFound)) {
|
||||
[System.Windows.MessageBox]::Show("oscdimg.exe is not found on the system. Cannot continue.")
|
||||
return
|
||||
}
|
||||
|
||||
Invoke-MicrowinBusyInfo -action "wip" -message "Checking disk space..." -interactive $false
|
||||
@@ -209,23 +223,6 @@ function Invoke-MicrowinGetIso {
|
||||
# there is probably a better way of doing this, I don't have time to figure this out
|
||||
$sync.MicrowinIsoDrive.Text = $driveLetter
|
||||
|
||||
$mountedISOPath = (Split-Path -Path "$filePath")
|
||||
if ($sync.MicrowinScratchDirBox.Text.Trim() -eq "Scratch") {
|
||||
$sync.MicrowinScratchDirBox.Text =""
|
||||
}
|
||||
|
||||
$UseISOScratchDir = $sync.WPFMicrowinISOScratchDir.IsChecked
|
||||
|
||||
if ($UseISOScratchDir) {
|
||||
$sync.MicrowinScratchDirBox.Text=$mountedISOPath
|
||||
}
|
||||
|
||||
if( -Not $sync.MicrowinScratchDirBox.Text.EndsWith('\') -And $sync.MicrowinScratchDirBox.Text.Length -gt 1) {
|
||||
|
||||
$sync.MicrowinScratchDirBox.Text = Join-Path $sync.MicrowinScratchDirBox.Text.Trim() '\'
|
||||
|
||||
}
|
||||
|
||||
# Detect if the folders already exist and remove them
|
||||
if (($sync.MicrowinMountDir.Text -ne "") -and (Test-Path -Path $sync.MicrowinMountDir.Text)) {
|
||||
try {
|
||||
@@ -244,13 +241,8 @@ function Invoke-MicrowinGetIso {
|
||||
$randomMicrowinScratch = "MicrowinScratch_${timestamp}_${randomNumber}"
|
||||
$sync.BusyText.Text=" - Mounting"
|
||||
Write-Host "Mounting Iso. Please wait."
|
||||
if ($sync.MicrowinScratchDirBox.Text -eq "") {
|
||||
$mountDir = Join-Path $env:TEMP $randomMicrowin
|
||||
$scratchDir = Join-Path $env:TEMP $randomMicrowinScratch
|
||||
} else {
|
||||
$scratchDir = $sync.MicrowinScratchDirBox.Text+"Scratch"
|
||||
$mountDir = $sync.MicrowinScratchDirBox.Text+"micro"
|
||||
}
|
||||
$mountDir = Join-Path $env:TEMP $randomMicrowin
|
||||
$scratchDir = Join-Path $env:TEMP $randomMicrowinScratch
|
||||
|
||||
$sync.MicrowinMountDir.Text = $mountDir
|
||||
$sync.MicrowinScratchDir.Text = $scratchDir
|
||||
|
||||
@@ -1,71 +0,0 @@
|
||||
function Microwin-CopyToUSB([string]$fileToCopy) {
|
||||
foreach ($volume in Get-Volume) {
|
||||
if ($volume -and $volume.FileSystemLabel -ieq "ventoy") {
|
||||
$destinationPath = "$($volume.DriveLetter):\"
|
||||
#Copy-Item -Path $fileToCopy -Destination $destinationPath -Force
|
||||
# Get the total size of the file
|
||||
$totalSize = (Get-Item "$fileToCopy").length
|
||||
|
||||
Copy-Item -Path "$fileToCopy" -Destination "$destinationPath" -Verbose -Force -Recurse -Container -PassThru |
|
||||
ForEach-Object {
|
||||
# Calculate the percentage completed
|
||||
$completed = ($_.BytesTransferred / $totalSize) * 100
|
||||
|
||||
# Display the progress bar
|
||||
Write-Progress -Activity "Copying File" -Status "Progress" -PercentComplete $completed -CurrentOperation ("{0:N2} MB / {1:N2} MB" -f ($_.BytesTransferred / 1MB), ($totalSize / 1MB))
|
||||
}
|
||||
|
||||
Write-Host "File copied to Ventoy drive $($volume.DriveLetter)"
|
||||
|
||||
# Detect if config files are present, move them if they are, and configure the Ventoy drive to not bypass the requirements
|
||||
$customVentoyConfig = @'
|
||||
{
|
||||
"control":[
|
||||
{ "VTOY_WIN11_BYPASS_CHECK": "0" },
|
||||
{ "VTOY_WIN11_BYPASS_NRO": "0" }
|
||||
],
|
||||
"control_legacy":[
|
||||
{ "VTOY_WIN11_BYPASS_CHECK": "0" },
|
||||
{ "VTOY_WIN11_BYPASS_NRO": "0" }
|
||||
],
|
||||
"control_uefi":[
|
||||
{ "VTOY_WIN11_BYPASS_CHECK": "0" },
|
||||
{ "VTOY_WIN11_BYPASS_NRO": "0" }
|
||||
],
|
||||
"control_ia32":[
|
||||
{ "VTOY_WIN11_BYPASS_CHECK": "0" },
|
||||
{ "VTOY_WIN11_BYPASS_NRO": "0" }
|
||||
],
|
||||
"control_aa64":[
|
||||
{ "VTOY_WIN11_BYPASS_CHECK": "0" },
|
||||
{ "VTOY_WIN11_BYPASS_NRO": "0" }
|
||||
],
|
||||
"control_mips":[
|
||||
{ "VTOY_WIN11_BYPASS_CHECK": "0" },
|
||||
{ "VTOY_WIN11_BYPASS_NRO": "0" }
|
||||
]
|
||||
}
|
||||
'@
|
||||
|
||||
try {
|
||||
Write-Host "Writing custom Ventoy configuration. Please wait..."
|
||||
if (Test-Path -Path "$($volume.DriveLetter):\ventoy\ventoy.json" -PathType Leaf) {
|
||||
Write-Host "A Ventoy configuration file exists. Moving it..."
|
||||
Move-Item -Path "$($volume.DriveLetter):\ventoy\ventoy.json" -Destination "$($volume.DriveLetter):\ventoy\ventoy.json.old" -Force
|
||||
Write-Host "Existing Ventoy configuration has been moved to `"ventoy.json.old`". Feel free to put your config back into the `"ventoy.json`" file."
|
||||
}
|
||||
if (-not (Test-Path -Path "$($volume.DriveLetter):\ventoy")) {
|
||||
New-Item -Path "$($volume.DriveLetter):\ventoy" -ItemType Directory -Force | Out-Null
|
||||
}
|
||||
$customVentoyConfig | Out-File -FilePath "$($volume.DriveLetter):\ventoy\ventoy.json" -Encoding utf8 -Force
|
||||
Write-Host "The Ventoy drive has been successfully configured."
|
||||
} catch {
|
||||
Write-Host "Could not configure Ventoy drive. Error: $($_.Exception.Message)`n"
|
||||
Write-Host "Be sure to add the following configuration to the Ventoy drive by either creating a `"ventoy.json`" file in the `"ventoy`" directory (create it if it doesn't exist) or by editing an existing one: `n`n$customVentoyConfig`n"
|
||||
Write-Host "Failure to do this will cause conflicts with your target ISO file."
|
||||
}
|
||||
return
|
||||
}
|
||||
}
|
||||
Write-Host "Ventoy USB Key is not inserted"
|
||||
}
|
||||
25
functions/microwin/Microwin-GetAdkDeploymentTools.ps1
Normal file
25
functions/microwin/Microwin-GetAdkDeploymentTools.ps1
Normal file
@@ -0,0 +1,25 @@
|
||||
function Microwin-GetAdkDeploymentTools {
|
||||
<#
|
||||
.DESCRIPTION
|
||||
This function will download the deployment tools from Microsoft
|
||||
|
||||
.EXAMPLE
|
||||
Microwin-GetAdkDeploymentTools
|
||||
#>
|
||||
|
||||
# ADK 10.1.28000.1 download link is the same; no need to guess it
|
||||
$adkDownloadLink = "https://download.microsoft.com/download/615540bc-be0b-433a-b91b-1f2b0642bb24/adk/adksetup.exe"
|
||||
$adkVersion = "10.1.28000.1"
|
||||
Write-Host "Downloading ADK version $adkVersion ..."
|
||||
Invoke-WebRequest -UseBasicParsing -Uri "$adkDownloadLink" -OutFile "$env:TEMP\adksetup.exe"
|
||||
|
||||
if ((-not ($?)) -or (-not (Test-Path -Path "$env:TEMP\adksetup.exe" -PathType Leaf))) {
|
||||
Write-Host "ADK could not be downloaded."
|
||||
return $false
|
||||
}
|
||||
|
||||
Write-Host "Installing ADK version $adkVersion -- This may take a few minutes..."
|
||||
Start-Process -FilePath "$env:TEMP\adksetup.exe" -ArgumentList "/features OptionId.DeploymentTools /q /ceip off" -Wait
|
||||
|
||||
return $?
|
||||
}
|
||||
40
functions/microwin/Microwin-GetKitsRoot.ps1
Normal file
40
functions/microwin/Microwin-GetKitsRoot.ps1
Normal file
@@ -0,0 +1,40 @@
|
||||
function Microwin-GetKitsRoot {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Gets the kits root path for the Windows Assessment and Deployment Kit (ADK)
|
||||
.PARAMETER wow64environment
|
||||
Determines whether to search in a WOW64 compatibility environment (HKLM\SOFTWARE\WOW6432Node)
|
||||
.OUTPUTS
|
||||
The path to the kits root
|
||||
#>
|
||||
|
||||
param (
|
||||
[Parameter(Mandatory = $true, Position = 0)] [bool]$wow64environment
|
||||
)
|
||||
|
||||
$adk10KitsRoot = ""
|
||||
|
||||
# if we set the wow64 bit on and we're on a 32-bit system, then we prematurely return the value
|
||||
if (($wow64environment -eq $true) -and (-not [Environment]::Is64BitOperatingSystem)) {
|
||||
return $adk10KitsRoot
|
||||
}
|
||||
|
||||
$regPath = ""
|
||||
if ($wow64environment) {
|
||||
$regPath = "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows Kits\Installed Roots"
|
||||
} else {
|
||||
$regPath = "HKLM:\SOFTWARE\Microsoft\Windows Kits\Installed Roots"
|
||||
}
|
||||
|
||||
if ((Test-Path "$regPath") -eq $false) {
|
||||
return $adk10KitsRoot
|
||||
}
|
||||
|
||||
try {
|
||||
$adk10KitsRoot = Get-ItemPropertyValue -Path $regPath -Name "KitsRoot10" -ErrorAction Stop
|
||||
} catch {
|
||||
Write-Debug "Could not find ADK."
|
||||
}
|
||||
|
||||
return $adk10KitsRoot
|
||||
}
|
||||
@@ -15,6 +15,10 @@ function Microwin-GetOscdimg {
|
||||
$oscdimgPath = "$env:TEMP\oscdimg.exe"
|
||||
$downloadUrl = "https://github.com/ChrisTitusTech/winutil/raw/main/releases/oscdimg.exe"
|
||||
Invoke-RestMethod -Uri $downloadUrl -OutFile $oscdimgPath
|
||||
if (-not (Test-Path "$oscdimgPath" -PathType Leaf)) {
|
||||
Write-Host "OSCDIMG could not be downloaded."
|
||||
return $false
|
||||
}
|
||||
$hashResult = Get-FileHash -Path $oscdimgPath -Algorithm SHA256
|
||||
$sha256Hash = $hashResult.Hash
|
||||
|
||||
@@ -23,7 +27,9 @@ function Microwin-GetOscdimg {
|
||||
$expectedHash = "AB9E161049D293B544961BFDF2D61244ADE79376D6423DF4F60BF9B147D3C78D" # Replace with the actual expected hash
|
||||
if ($sha256Hash -eq $expectedHash) {
|
||||
Write-Host "Hashes match. File is verified."
|
||||
return $true
|
||||
} else {
|
||||
Write-Host "Hashes do not match. File may be corrupted or tampered with."
|
||||
return $false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,6 +66,11 @@ function Microwin-NewFirstRun {
|
||||
|
||||
}
|
||||
|
||||
if ((Get-BitLockerVolume -MountPoint $Env:SystemDrive).ProtectionStatus -eq 'On') {
|
||||
Write-Host "Disabling BitLocker..."
|
||||
Disable-BitLocker -MountPoint $Env:SystemDrive
|
||||
}
|
||||
|
||||
# Get BCD entries and set bootmgr timeout accordingly
|
||||
try
|
||||
{
|
||||
@@ -103,6 +108,35 @@ function Microwin-NewFirstRun {
|
||||
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Start" /v ShowRecentList /t REG_DWORD /d 0 /f
|
||||
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v Start_TrackDocs /t REG_DWORD /d 0 /f
|
||||
|
||||
# Color Modes -- requires sending messages to apply to everything
|
||||
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize" /v "AppsUseLightTheme" /t REG_DWORD /d 0 /f
|
||||
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize" /v "SystemUsesLightTheme" /t REG_DWORD /d 0 /f
|
||||
|
||||
# Send the WM_SETTINGCHANGE message to all windows
|
||||
Add-Type -TypeDefinition @"
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
public class Win32 {
|
||||
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = false)]
|
||||
public static extern IntPtr SendMessageTimeout(
|
||||
IntPtr hWnd,
|
||||
uint Msg,
|
||||
IntPtr wParam,
|
||||
string lParam,
|
||||
uint fuFlags,
|
||||
uint uTimeout,
|
||||
out IntPtr lpdwResult);
|
||||
}
|
||||
"@
|
||||
|
||||
$HWND_BROADCAST = [IntPtr]0xffff
|
||||
$WM_SETTINGCHANGE = 0x1A
|
||||
$SMTO_ABORTIFHUNG = 0x2
|
||||
$timeout = 100
|
||||
|
||||
# Send the broadcast message to all windows
|
||||
[Win32]::SendMessageTimeout($HWND_BROADCAST, $WM_SETTINGCHANGE, [IntPtr]::Zero, "ImmersiveColorSet", $SMTO_ABORTIFHUNG, $timeout, [ref]([IntPtr]::Zero))
|
||||
|
||||
Clear-Host
|
||||
Write-Host "The taskbar will take around a minute to show up, but you can start using your computer now. Try pressing the Windows key to open the Start menu, or Windows + E to launch File Explorer."
|
||||
Start-Sleep -Seconds 10
|
||||
|
||||
11
functions/microwin/Microwin-TestKitsRootPaths.ps1
Normal file
11
functions/microwin/Microwin-TestKitsRootPaths.ps1
Normal file
@@ -0,0 +1,11 @@
|
||||
function Microwin-TestKitsRootPaths {
|
||||
param (
|
||||
[Parameter(Mandatory = $true, Position = 0)] [string]$adkKitsRootPath,
|
||||
[Parameter(Mandatory = $true, Position = 1)] [string]$adkKitsRootPath_WOW64Environ
|
||||
)
|
||||
|
||||
if (Test-Path "$adkKitsRootPath") { return $true }
|
||||
if (Test-Path "$adkKitsRootPath_WOW64Environ") { return $true }
|
||||
|
||||
return $false
|
||||
}
|
||||
@@ -39,9 +39,9 @@ Function Install-WinUtilProgramWinget {
|
||||
|
||||
$commonArguments = "--id $wingetId --silent"
|
||||
$arguments = if ($Action -eq "Install") {
|
||||
"install $commonArguments --accept-source-agreements --accept-package-agreements"
|
||||
"install $commonArguments --accept-source-agreements --accept-package-agreements --source winget"
|
||||
} else {
|
||||
"uninstall $commonArguments"
|
||||
"uninstall $commonArguments --source winget"
|
||||
}
|
||||
|
||||
$processParams = @{
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
|
||||
function Invoke-ScratchDialog {
|
||||
|
||||
<#
|
||||
|
||||
.SYNOPSIS
|
||||
Enable Editable Text box Alternate Scratch path
|
||||
|
||||
.PARAMETER Button
|
||||
#>
|
||||
$sync.WPFMicrowinISOScratchDir.IsChecked
|
||||
|
||||
|
||||
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null
|
||||
$Dialog = New-Object System.Windows.Forms.FolderBrowserDialog
|
||||
$Dialog.SelectedPath = $sync.MicrowinScratchDirBox.Text
|
||||
$Dialog.ShowDialog()
|
||||
$filePath = $Dialog.SelectedPath
|
||||
Write-Host "No ISO is chosen+ $filePath"
|
||||
|
||||
if ([string]::IsNullOrEmpty($filePath)) {
|
||||
Write-Host "No Folder had chosen"
|
||||
return
|
||||
}
|
||||
|
||||
$sync.MicrowinScratchDirBox.Text = Join-Path $filePath "\"
|
||||
|
||||
}
|
||||
@@ -59,7 +59,6 @@ function Invoke-WPFButton {
|
||||
"WPFGetIso" {Invoke-MicrowinGetIso}
|
||||
"WPFMicrowin" {Invoke-Microwin}
|
||||
"WPFCloseButton" {Invoke-WPFCloseButton}
|
||||
"MicrowinScratchDirBT" {Invoke-ScratchDialog}
|
||||
"WPFWinUtilInstallPSProfile" {Invoke-WinUtilInstallPSProfile}
|
||||
"WPFWinUtilUninstallPSProfile" {Invoke-WinUtilUninstallPSProfile}
|
||||
"WPFWinUtilSSHServer" {Invoke-WPFSSHServer}
|
||||
|
||||
7
functions/public/Invoke-WinUtilRemoveEdge.ps1
Normal file
7
functions/public/Invoke-WinUtilRemoveEdge.ps1
Normal file
@@ -0,0 +1,7 @@
|
||||
function Invoke-WinUtilRemoveEdge {
|
||||
Write-Host "Unlocking The Offical Edge Uninstaller And Removing Microsoft Edge..."
|
||||
|
||||
$Path = (Get-ChildItem "C:\Program Files (x86)\Microsoft\Edge\Application\*\Installer\setup.exe")[0].FullName
|
||||
New-Item "C:\Windows\SystemApps\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\MicrosoftEdge.exe" -Force
|
||||
Start-Process $Path -ArgumentList '--uninstall --system-level --force-uninstall --delete-profile'
|
||||
}
|
||||
@@ -1289,7 +1289,7 @@
|
||||
Foreground="{DynamicResource MainForegroundColor}">
|
||||
<Run FontWeight="Bold">Balanced Security Configuration</Run>
|
||||
<LineBreak/>
|
||||
- Feature updates delayed by 2 years
|
||||
- Feature updates delayed by 365 days
|
||||
<LineBreak/>
|
||||
- Security updates installed after 4 days
|
||||
<LineBreak/><LineBreak/>
|
||||
@@ -1350,41 +1350,11 @@
|
||||
HorizontalAlignment="Stretch">
|
||||
<StackPanel Name="MicrowinMain" Background="{DynamicResource MainBackgroundColor}" SnapsToDevicePixels="True" Grid.Column="0" Grid.Row="0">
|
||||
<StackPanel Name="MicrowinISOPanel" Background="Transparent" SnapsToDevicePixels="True" Margin="1">
|
||||
<CheckBox x:Name="WPFMicrowinDownloadFromGitHub" Content="Download oscdimg.exe from CTT GitHub repo" IsChecked="True" Margin="{DynamicResource MicrowinCheckBoxMargin}" />
|
||||
<TextBlock Margin="5" Padding="1" TextWrapping="Wrap" Foreground="{DynamicResource ComboBoxForegroundColor}">
|
||||
Choose a Windows ISO file that you've downloaded <LineBreak/>
|
||||
Check the status in the console
|
||||
</TextBlock>
|
||||
<Rectangle Fill="{DynamicResource MainForegroundColor}" Height="2" HorizontalAlignment="Stretch" Margin="0,10,0,10"/>
|
||||
<TextBlock Margin="5" Padding="1" TextWrapping="Wrap" Foreground="{DynamicResource ComboBoxForegroundColor}" ToolTip="Scratch directories act as a custom destination for image files"><Bold>Scratch directory settings (optional)</Bold></TextBlock>
|
||||
<CheckBox x:Name="WPFMicrowinISOScratchDir" Content="Use ISO directory for ScratchDir " IsChecked="False" Margin="{DynamicResource MicrowinCheckBoxMargin}"
|
||||
ToolTip="Check this to use the path of the ISO file you specify as a scratch directory" />
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" /> <!-- Takes the remaining space -->
|
||||
<ColumnDefinition Width="30" /> <!-- Fixed width for Button -->
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBox Name="MicrowinScratchDirBox" Background="Transparent" BorderBrush="{DynamicResource MainForegroundColor}"
|
||||
Text="Scratch"
|
||||
Margin="2"
|
||||
IsReadOnly="False"
|
||||
ToolTip="Specify an alternate path for the scratch directory"
|
||||
Grid.Column="0"
|
||||
VerticalAlignment="Center"
|
||||
Foreground="{DynamicResource LabelboxForegroundColor}">
|
||||
</TextBox>
|
||||
<Button Name="MicrowinScratchDirBT"
|
||||
Width="Auto"
|
||||
Height="Auto"
|
||||
Grid.Column="1"
|
||||
Margin="2"
|
||||
Padding="1" VerticalAlignment="Center">
|
||||
<Button.Content>
|
||||
...
|
||||
</Button.Content>
|
||||
</Button>
|
||||
</Grid>
|
||||
<Rectangle Fill="{DynamicResource MainForegroundColor}" Height="2" HorizontalAlignment="Stretch" Margin="0,10,0,10"/>
|
||||
<TextBox Name="MicrowinFinalIsoLocation" Background="Transparent" BorderBrush="{DynamicResource MainForegroundColor}"
|
||||
Text="ISO location will be printed here"
|
||||
Margin="2"
|
||||
@@ -1458,8 +1428,6 @@
|
||||
<CheckBox Name="MicrowinImportDrivers" Content="Import drivers from current system" Margin="{DynamicResource MicrowinCheckBoxMargin}" IsChecked="False" ToolTip="Export all third-party drivers from your system and inject them to the MicroWin image"/>
|
||||
<CheckBox Name="MicrowinCopyVirtIO" Content="Include VirtIO drivers" Margin="{DynamicResource MicrowinCheckBoxMargin}" IsChecked="False" ToolTip="Copy VirtIO Guest Tools drivers to your ISO file. Check this only if you want to use it on QEMU/Proxmox VE"/>
|
||||
<Rectangle Fill="{DynamicResource MainForegroundColor}" Height="2" HorizontalAlignment="Stretch" Margin="0,10,0,10"/>
|
||||
<CheckBox Name="WPFMicrowinCopyToUsb" Content="Copy to Ventoy" Margin="{DynamicResource MicrowinCheckBoxMargin}" IsChecked="False" ToolTip="Copy to USB disk with a label Ventoy"/>
|
||||
<Rectangle Fill="{DynamicResource MainForegroundColor}" Height="2" HorizontalAlignment="Stretch" Margin="0,10,0,10"/>
|
||||
<TextBlock Margin="6" Padding="1" TextWrapping="Wrap"><Bold>Custom user settings (leave empty for default user)</Bold></TextBlock>
|
||||
<TextBlock Margin="6" Padding="1" TextWrapping="Wrap">User name (20 characters max.):</TextBlock>
|
||||
<TextBox Name="MicrowinUserName" Background="Transparent" BorderThickness="1" BorderBrush="{DynamicResource MainForegroundColor}"
|
||||
@@ -1477,11 +1445,6 @@
|
||||
Foreground="{DynamicResource LabelboxForegroundColor}"
|
||||
/>
|
||||
<Rectangle Fill="{DynamicResource MainForegroundColor}" Height="2" HorizontalAlignment="Stretch" Margin="0,10,0,10"/>
|
||||
<TextBlock Margin="6" Padding="1" TextWrapping="Wrap"><Bold>Tweaks (leave empty for default settings)</Bold></TextBlock>
|
||||
<CheckBox Name="MicroWinWPBT" Margin="{DynamicResource MicrowinCheckBoxMargin}" IsChecked="False" ToolTip="If enabled then allows your computer vendor to execute a program each time it boots. It enables computer vendors to force install anti-theft software, software drivers, or a software program conveniently. This could also be a security risk."><AccessText TextWrapping="Wrap" Text="Disable Windows Platform Binary Table (WPBT) (ADVANCED TWEAK)" /></CheckBox>
|
||||
<CheckBox Name="MicroWinUnsupported" Margin="{DynamicResource MicrowinCheckBoxMargin}" IsChecked="False" ToolTip="If enabled then it will allow you to upgrade your PC to Windows 11 if your PC does not support Windows 11 yet. This is good for if you do not have a USB and want to upgrade to Windows 11 on unsupported hardware."><AccessText TextWrapping="Wrap" Text="Allow this PC to upgrade to Windows 11" /></CheckBox>
|
||||
<CheckBox Name="MicroWinESD" Margin="{DynamicResource MicrowinCheckBoxMargin}" IsChecked="False" ToolTip="The ESD file format compresses the installation image even further, therefore reducing ISO file sizes a little more. Select this if you have a small USB."><AccessText TextWrapping="Wrap" Text="Convert this image to ESD (This will take longer)" /></CheckBox>
|
||||
<CheckBox Name="MicroWinNoFLA" Margin="{DynamicResource MicrowinCheckBoxMargin}" IsChecked="True" ToolTip="The First Logon Animation is an animation that is played when a user logs on for the first time. It can artificially increase wait times. Select this option to automatically close the first logon animation and reach the desktop quicker (additional system preparation will still be done)"><AccessText TextWrapping="Wrap" Text="Skip First Logon Animation" /></CheckBox>
|
||||
<TextBlock Margin="6" Padding="1" TextWrapping="Wrap">WinUtil configuration file (JSON)</TextBlock>
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
@@ -1564,34 +1527,21 @@
|
||||
<Bold>MicroWin features:</Bold><LineBreak/>
|
||||
- Remove Telemetry and Tracking <LineBreak/>
|
||||
- Fast Install using either the "User" local account or the account of your choosing <LineBreak/>
|
||||
- Bypasses Windows 11 System Requirements on unsupported computers <LineBreak/>
|
||||
- No internet requirement for install <LineBreak/>
|
||||
- Apps debloat <LineBreak/>
|
||||
<LineBreak/>
|
||||
<LineBreak/>
|
||||
|
||||
<Bold>INSTRUCTIONS</Bold> <LineBreak/>
|
||||
- Download a Windows 11 ISO through the following options: <LineBreak/>
|
||||
<TextBlock Margin="15,0,0,0" Text="- Select your own ISO: Manually download the latest Windows 11 image from " Foreground="{DynamicResource ComboBoxForegroundColor}"/>
|
||||
<TextBlock Name="Win11DownloadLink" Style="{StaticResource HoverTextBlockStyle}" ToolTip="https://www.microsoft.com/software-download/windows11">Microsoft</TextBlock>. <LineBreak/>
|
||||
<TextBlock Margin="15,0,0,0" Text="- Get newest ISO automatically: Choose Windows 11 Edition and preferred language." Foreground="{DynamicResource ComboBoxForegroundColor}"/> <LineBreak/>
|
||||
May take several minutes to process the ISO depending on your machine and connection <LineBreak/>
|
||||
- Put it somewhere on the C:\ drive so it is easily accessible <LineBreak/>
|
||||
- Launch WinUtil and MicroWin <LineBreak/>
|
||||
- Click on the "Get Windows ISO" button and wait for WinUtil to process the image <LineBreak/>
|
||||
It will be processed and unpacked which may take some time <LineBreak/>
|
||||
- Once complete, choose which Windows flavor you want to base your image on <LineBreak/>
|
||||
- Click the "Start Process" button <LineBreak/>
|
||||
The process of creating the Windows image may take some time, please check the console and wait for it to say "Done" <LineBreak/>
|
||||
- Once complete, the target ISO file will be in the directory you have specified <LineBreak/>
|
||||
- Copy this image to your Ventoy USB Stick, boot to this image, gg
|
||||
<LineBreak/>
|
||||
If you are injecting drivers ensure you put all your inf, sys, and dll files for each driver into a separate directory <LineBreak/><LineBreak/>
|
||||
<Bold>Installing VirtIO drivers</Bold><LineBreak/>
|
||||
If you plan on using your ISO on QEMU/Proxmox VE, you can bundle VirtIO drivers with your ISO to automatically install drivers. Simply tick the "Include VirtIO drivers" checkbox before starting the process. Then, follow these instructions:<LineBreak/><LineBreak/>
|
||||
<TextBlock TextWrapping="WrapWithOverflow" Margin="15,0,0,0" Text="1. Proceed with Setup until you reach the disk selection screen, in which you won't see any drives" Foreground="{DynamicResource ComboBoxForegroundColor}"/><LineBreak/>
|
||||
<TextBlock TextWrapping="WrapWithOverflow" Margin="15,0,0,0" Text="2. Click "Load Driver" and click Browse" Foreground="{DynamicResource ComboBoxForegroundColor}"/><LineBreak/>
|
||||
<TextBlock TextWrapping="WrapWithOverflow" Margin="15,0,0,0" Text="3. In the folder selection dialog, point to this path: "D:\VirtIO\vioscsi\w11\amd64" (replace amd64 with ARM64 if you are using Windows on ARM, and "D:" with the drive letter of the ISO)" Foreground="{DynamicResource ComboBoxForegroundColor}"/><LineBreak/>
|
||||
<TextBlock TextWrapping="WrapWithOverflow" Margin="15,0,0,0" Text="4. Select all drivers that will appear in the list box and click OK" Foreground="{DynamicResource ComboBoxForegroundColor}"/><LineBreak/>
|
||||
1. Download Windows 11 ISO from <TextBlock Name="Win11DownloadLink" Style="{StaticResource HoverTextBlockStyle}" ToolTip="https://www.microsoft.com/software-download/windows11">Microsoft</TextBlock> directly, or use the "Get newest ISO" option and select your preferred language.<LineBreak/>
|
||||
2. Click "Get Windows ISO" then select your Windows ISO (may take several minutes depending on your machine and connection)<LineBreak/>
|
||||
3. Select Windows flavor > Click "Start Process" (may take time, check the console and wait for the "Done" message to appear)<LineBreak/>
|
||||
4. Finally, write the ISO to a USB drive using your preferred method and boot.<LineBreak/><LineBreak/>
|
||||
<Bold>Driver Injection:</Bold> <LineBreak/>
|
||||
Organize drivers in separate folders with .inf, .sys, and .dll files for each device <LineBreak/><LineBreak/>
|
||||
<Bold>VirtIO Drivers (QEMU/Proxmox):</Bold><LineBreak/>
|
||||
Check "Include VirtIO drivers" before starting. During setup, select Load Driver > Browse to D:\VirtIO\vioscsi\w11\amd64 (use ARM64 for Windows on ARM) > Select all drivers and click OK<LineBreak/>
|
||||
</TextBlock>
|
||||
<TextBlock Margin="15,0,15,15"
|
||||
Padding = "1"
|
||||
|
||||
Reference in New Issue
Block a user