Compare commits

27 Commits

Author SHA1 Message Date
Akhil Kumar Achanta
59a9c59064 Fix/issue 3815 (#3836)
* Fix: retry password prompt on failure to prevent script halting

* Update Invoke-WPFInstall.ps1

* format fix

* fix: change RealTimeIsUniversal to QWord for correct UTC time sync

---------

Co-authored-by: Chris Titus <contact@christitus.com>
Co-authored-by: Chris Titus Tech <dfm.titus@gmail.com>
2026-01-27 13:31:55 -06:00
Gabi
fcc57fde50 Add back Remove OneDrive (#3920)
* Update tweaks.json

* Create RemoveOneDrive.md

* Update _index.md

* Update _index.md

* Update _index.md

* Update tweaks.json

* Update tweaks.json

* Update tweaks.json

* Update RemoveOneDrive.md

* Update tweaks.json

* Update RemoveOneDrive.md

* Update tweaks.json

* Update RemoveOneDrive.md

* Update tweaks.json

* Update RemoveOneDrive.md

* Update tweaks.json

* Update RemoveOneDrive.md
2026-01-27 13:24:17 -06:00
Gabi
06e5477d0e Remove-Edge (#3913)
* Update tweaks.json

* Create Invoke-WinUtilRemoveEdge.ps1

* Update and rename EdgeUninstall.md to RemoveEdge.md

* Update Invoke-WinUtilRemoveEdge.ps1

* Update RemoveEdge.md

* Update Invoke-WinUtilRemoveEdge.ps1

* Update RemoveEdge.md

* Update Invoke-WinUtilRemoveEdge.ps1

* Update RemoveEdge.md

* Update Invoke-WinUtilRemoveEdge.ps1

* Update RemoveEdge.md

* Update Invoke-WinUtilRemoveEdge.ps1

* Update Invoke-WinUtilRemoveEdge.ps1

* Update RemoveEdge.md
2026-01-27 13:11:30 -06:00
CodingWonders
a5271597e9 [Fix] Force WinGet source (#3918)
* [Fix] Force WinGet source

* Force WinGet source for uninstall
2026-01-27 13:03:56 -06:00
Chris Titus
d841792f8d add orig-services post tweaks 2026-01-27 12:30:40 -06:00
Gabi
132260ab96 Fix #3876 Maybe (#3929)
* Update tweaks.json

* Update tweaks.json

* Update config/tweaks.json

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

* Update tweaks.json

---------

Co-authored-by: Chris Titus <contact@christitus.com>
2026-01-27 12:29:21 -06:00
ChrisTitusTech
919b2e0b8f Deploying to main from @ ChrisTitusTech/winutil@22e083182d 🚀 2026-01-22 15:40:54 +00:00
regularentropy
22e083182d fix: change feature update delay from 2 years to 365 days (#3927) 2026-01-21 22:55:50 -06:00
Gabi
2ec37f952a Update _index.md (#3912) 2026-01-21 22:54:20 -06:00
CodingWonders
aa719b49bf [MicroWin] 2026 Update (#3837)
* New reporting tool

* Why did we EVER need to load the component store?

* Up the execution policy for default PWSH sessions

This is required to run the diagnostics script, and any script that either we create here, or the user creates later. At least we don't go too wild and use unrestricted... we use something more "safe"

* Force Panther Setup instead of MoSetup

This will increase reliability and performance. Screw the Windows 8 installer, we're back with what was used on Windows 7!

Anyway, there are problems with the new installer:

1. It is slow at everything. Some people did benchmarks of both installers. MoSetup lost to Panther (ofc). Source: https://www.reddit.com/r/Windows11/comments/1kmjavl/i_made_a_small_test_comparing_which_one_installs/
2. It is unreliable. The "Install driver to show hardware" screen that appears in some systems AND in PXE/WDS for Server 2025 is possibly, and simply, due to Setup not being able to find the install image. From BlueBox.log in MoSetup:

...
2025-12-21 10:05:43: Creating path (with ACL): [X:\$WINDOWS.~BT]...
2025-12-21 10:05:43: Creating path: [X:\$WINDOWS.~BT\Sources]...
2025-12-21 10:05:43: CBootScenarioCtrl::PopulateWorkingDir: Install.wim/swm/esd was not found!
...

Other contributors in the CTT community stated similar unreliability with borked installs.

I'm pretty sure this change will benefit everyone. We'll see how long it lasts before Microsoft f's it up.

* Improve reporting tool

Display appx package dependency full names

* Rework ADK detection

* Add revamped detection for ISO creation

* File Explorer ain't broken anymore on 26200.7462

Those incompetent developers changed WindowsAppRuntime.CBS to WindowsAppRuntime.CBS.1.6 circa 10.0.26200.7462. No wonder why direct downloads were not causing this issue; they are still based on 10.0.26200.6584. The MCT, on the other hand...

* Patch maximum version boundary

Apparently they fixed that in November. Expanding the amd64_winappsdk-cbs-stable component manifest to a XML file reveals the dark secret:

  <registryKeys>
    <registryKey keyName="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\InboxApplications\Microsoft.WindowsAppRuntime.CBS.1.6_6000.653.2246.100_x64__8wekyb3d8bbwe">
      <registryValue name="Path" valueType="REG_SZ" value="$(runtime.windows)\SystemApps\Microsoft.WindowsAppRuntime.CBS_8wekyb3d8bbwe\AppxManifest.xml" />
      <securityDescriptor name="REGKEY_APPXALLUSERSTORE_SDDL" />
    </registryKey>
    <registryKey keyName="HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Config\Microsoft.WindowsAppRuntime.CBS.1.6_8wekyb3d8bbwe">
      <registryValue name="SetupPhase" valueType="REG_DWORD" value="0x00000427" />
    </registryKey>
    <registryKey keyName="HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\UpdatedApplications\Microsoft.WindowsAppRuntime.CBS.1.6_8wekyb3d8bbwe" />
  </registryKeys>

This is not a problem in .6899 because we don't have amd64_winappsdk-cbs-stable, but a vnext counterpart. But, at this point, why bother checking with that? MCT will not bundle this update with the image!

* Default to showing file extensions

Apart from a security improvement (let's remember ILOVEYOU from 2000), it's also a QoL.

* Fix key for color modes

Color mode settings are saved per-user, not system-wide. So HKLM\SOFTWARE is not our solution. HKCU is, and is mapped to \Users\Default\NTUSER.DAT

* Move color mode from offline servicing to firstrun

* Drop build number by 100

* Update Invoke-Microwin.ps1 (#15)

* Revert "Update Invoke-Microwin.ps1 (#15)"

This reverts commit 88f8a3031b.

* Keep trying to commit and unmount images

* Consistent REG ADD /F /V...

Some issues happen with REG and strings if you put /f at the end... move it to the beginning, where it doesn't conflict with anything.

* Rework stub path reg value set

This works on both Windows 11 and Windows 10. It didn't work on Win10 before; it should work now

* Remove copy link step

We no longer do this

* Move Copy-Files to microwin folder

Only microwin calls this function; it's better if we place this script in that folder

* Add Create Bootable USB (#18)

* Add Create Bootable USB

* Apply suggestion from @CodingWonders

---------

Co-authored-by: CodingWonders <101426328+CodingWonders@users.noreply.github.com>

* Download ADK to get oscdimg if not to download on GitHub

If we don't download OSCDIMG from GitHub, because we now use ADK kits roots detection to get installed copies of the ADK and oscdimg, we just download the Deployment Tools. This is only 100 MB once fully installed, and removes the need to install Chocolatey.

One caveat is that, on 64-bit systems, the script will output "Could not find ADK" once. This is normal as it does checks on both regular SOFTWARE and WOW6432Node, and it's able to pick it on the latter. If it isn't found anywhere, that message will appear twice.

* Make indentation more consitent in bootable USB func.

* Initialize petoolspath variable

* Remove temporary adksetup on completion

* Fix whitespace

* Remove unnecessary comments and revamp admin check

* Revert "Add Create Bootable USB (#18)"

This reverts commit 64babfe986.

* Remove reporting tool creation

The reporting tool is now hosted on a separate repo. The script itself can be run anywhere, not just in microwin, so...

* Some formatting change here

* Remove copy to ventoy option

* Fix some more indents

* Add Description that ISO automatically removes Win11 Requirements

* Additional things

- WPBT done by defaults
- Skip Logon Animation
- Remove convert to ESD and Upgrade to Win11 as Win10 is no longer supported

* First attempt at OSCDIMG autodownload

* No more custom ScratchPaths!

Time to get rid of that mess and just use %TEMP%.

All of these minor changes were made on a Server 2K8R2 VM.

* Redetect ADK/OSCDIMG after autodownload

* Leave ADK reg query error to debug only

---------

Co-authored-by: Real-MullaC <callumjanes2007new+github@gmail.com>
2026-01-15 14:48:11 -06:00
ChrisTitusTech
e9a6cd32d8 Deploying to main from @ ChrisTitusTech/winutil@b02c7f3eab 🚀 2026-01-15 15:38:18 +00:00
Chris Titus
b02c7f3eab Merge branch 'main' of https://github.com/ChrisTitusTech/winutil 2026-01-14 17:27:19 -06:00
Chris Titus
eb29dfced8 update menu 2026-01-14 17:27:17 -06:00
Chris Titus
f9b01fdc81 Update README to remove contribution note
Removed note about contributing to documentation.
2026-01-14 17:22:27 -06:00
Chris Titus
61a80e270d Expand docs 2026-01-14 17:20:41 -06:00
Gabi
a31c9cb235 Update-WPFTweaksRemoveCopilot (#3907)
* Update tweaks.json

* Update tweaks.json

* Update tweaks.json

* Update config/tweaks.json

Co-authored-by: Yuki <65764619+YukiNagat0@users.noreply.github.com>

* Remove comment on EOL trick for AppxPackages

Removed unnecessary comment about tricking Windows for package uninstallation.

* Fix escape characters in registry path

---------

Co-authored-by: Chris Titus <contact@christitus.com>
Co-authored-by: Yuki <65764619+YukiNagat0@users.noreply.github.com>
2026-01-14 17:01:09 -06:00
Gabi
2587a98848 Remove-WPFToggleTaskbarWidgets (#3906)
* Update tweaks.json

* Update tweaks.json
2026-01-14 16:24:28 -06:00
Gabi
a5cf3a2ba7 Update-WPFTweaksWPBT (#3905)
* Update tweaks.json

* Update preset.json

* Update tweaks.json
2026-01-14 16:23:23 -06:00
Gabi
f59598cf07 Update-docs (#3889)
* Update _index.md

* Rename AH.md to Activity.md

* Update Activity.md

* Update Activity.md

* Update Activity.md

* Update ConsumerFeatures.md

* Update and rename DVR.md to GameDVR.md

* Update DeleteTempFiles.md

* Delete docs/content/dev/tweaks/Essential-Tweaks/DisableRecall.md

* Update _index.md

* Update _index.md

* Update DiskCleanup.md

* Update EdgeDebloat.md

* Update Activity.md

* Update EndTaskOnTaskbar.md

* Update ConsumerFeatures.md

* Update GameDVR.md

* Update and rename Hiber.md to Hibernation.md

* Delete docs/content/dev/tweaks/Essential-Tweaks/Home.md

* Update IPv46.md

* Update LaptopHibernation.md

* Update and rename Loc.md to Location.md

* Delete docs/content/dev/tweaks/Essential-Tweaks/Powershell7.md

* Update Powershell7Tele.md

* Update RestorePoint.md

* Update Services.md

* Update Storage.md

* Update Tele.md

* Rename Tele.md to Telemetry.md

* Delete docs/content/dev/tweaks/Essential-Tweaks/Wifi.md

* Update _index.md

* Update _index.md

* Update _index.md

* Update _index.md

* Update and rename RemoveUltPerf.md to RemoveProfile.md

* Delete docs/content/dev/tweaks/Performance-Plans/AddUltPerf.md

* Rename RemoveProfile.md to Profile.md

* Update _index.md

* Update _index.md

* Update _index.md

* Update BingSearch.md

* Update DarkMode.md

* Update DetailedBSoD.md

* Update HiddenFiles.md

* Update MouseAcceleration.md

* Update NumLock.md

* Update ShowExt.md

* Update SnapFlyout.md

* Update SnapSuggestion.md

* Update SnapWindow.md

* Update StickyKeys.md

* Update TaskView.md

* Update TaskbarAlignment.md

* Update TaskbarSearch.md

* Update TaskbarWidgets.md

* Update VerboseLogon.md

* Update _index.md

* Update _index.md

* Update _index.md

* Update BlockAdobeNet.md

* Update DeBloat.md

* Delete docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/DebloatAdobe.md

* Update DisableBGapps.md

* Update DisableFSO.md

* Delete docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/DisableLMS1.md

* Update DisableNotifications.md

* Update and rename Disableipsix.md to DisableIPv6.md

* Update Display.md

* Update OOSUbutton.md

* Delete docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/RemoveCopilot.md

* Update and rename RemoveEdge.md to EdgeUninstall.md

* Update and rename RemoveHomeGallery.md to RemoveHome.md

* Create RemoveGallery.md

* Delete docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/RemoveOnedrive.md

* Update RightClickMenu.md

* Update Teredo.md

* Update UTC.md

* Update Undoall.md

* Update button.md

* Delete docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/changedns.md

* Delete docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/button.md

* Delete docs/content/dev/tweaks/z--Advanced-Tweaks---CAUTION/Undoall.md

* Update _index.md

* Update _index.md

* Update _index.md

* Update _index.md

* Update DisableLegacyRecovery.md

* Delete docs/content/dev/features/Features/DisableSearchSuggestions.md

* Update EnableLegacyRecovery.md

* Update DisableLegacyRecovery.md

* Delete docs/content/dev/features/Features/EnableSearchSuggestions.md

* Delete docs/content/dev/features/Features/Install.md

* Update RegBackup.md

* Update Sandbox.md

* Update dotnet.md

* Update hyperv.md

* Update legacymedia.md

* Update nfs.md

* Update wsl.md

* Update _index.md

* Update _index.md

* Update _index.md

* Update Autologin.md

* Update and rename DISM.md to CorruptionScan.md

* Update Network.md

* Update RunAdobeCCCleanerTool.md

* Update Update.md

* Update Winget.md

* Update _index.md

* Update _index.md

* Update _index.md

* Update control.md

* Update network.md

* Update power.md

* Update printer.md

* Update region.md

* Update sound.md

* Update system.md

* Update user.md

* Update _index.md

* Update _index.md

* Update _index.md

* Delete docs/assets/images/Compile.png

* Add files via upload

* Update KnownIssues.md

* Update _index.md

* Update _index.md

* Update _index.md

* Update _index.md

* Update _index.md

* Update _index.md

* Update _index.md

* Delete docs/archetypes directory

* Delete docs/i18n directory

* Delete docs/assets/images/Install/Installation-completion.png

* Delete docs/assets/images/Install/track-progress.png

* Delete docs/assets/images/microwin/dism++_drivercontrol.png

* Delete docs/assets/images/microwin/dism++_driverexport.png

* Delete docs/assets/images/microwin/dt_activeinst.png

* Delete docs/assets/images/microwin/dt_exportdrvs.png

* Delete docs/assets/images/microwin/dt_exporttarget.png

* Rename microwin-customuser-dark.png to microwin-user-dark.png

* Rename microwin-customuser-light.png to microwin-user-light.png

* Delete docs/assets/images/microwin/microwin-downloader-dark.png

* Delete docs/assets/images/microwin/microwin-downloader-light.png

* Delete docs/assets/images/microwin/microwin-screen-dark.png

* Delete docs/assets/images/microwin/microwin-screen-full-dark.png

* Delete docs/assets/images/microwin/microwin-screen-full-light.png

* Delete docs/assets/images/microwin/microwin-screen-light.png

* Delete docs/assets/images/microwin/microwin-skuselect-dark.png

* Delete docs/assets/images/microwin/microwin-skuselect-light.png

* Delete docs/assets/images/microwin/microwin-user-dark.png

* Delete docs/assets/images/microwin/microwin-user-light.png

* Delete docs/assets/images/microwin/rapr_folderpicker.png

* Delete docs/assets/images/microwin/rapr_menu.png

* Create 4

* Add files via upload

* Delete docs/assets/images/microwin/4

* Delete docs/assets/images/microwin/Configure-Windows-ISO.png

* Add files via upload

* Delete docs/assets/images/microwin/Configure-Windows-ISO.png

* Add files via upload

* Create default.md

* Fix formatting in automation user guide

* Fix typo in Edge uninstall link text

* Fix typo in DeBloat.md description

Corrected a typo in the description of the WPFTweaksDeBloat section.

* Update links for Delete Temp Files and Activity History

* fix bad urls

* update typos

---------

Co-authored-by: Chris Titus <contact@christitus.com>
2026-01-14 12:28:45 -06:00
ozgur
66eaaaf9bf Fixes to Get installed tweaks does not handle <RemoveEntry> value (#3892) 2026-01-14 11:36:45 -06:00
dependabot[bot]
1b19311c2e Bump actions/upload-pages-artifact from 3 to 4 (#3902)
Bumps [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/upload-pages-artifact/releases)
- [Commits](https://github.com/actions/upload-pages-artifact/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/upload-pages-artifact
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-14 11:34:22 -06:00
dependabot[bot]
e193eca64d Bump actions/checkout from 4 to 6 (#3901)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-14 11:33:54 -06:00
dependabot[bot]
df0b511a24 Bump actions/cache from 4 to 5 (#3900)
Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-14 11:33:24 -06:00
HapnanAR
a017854a55 Update SyncTrayzor entry in applications.json with new GitHub link and winget package id (#3893) 2026-01-10 12:24:40 -06:00
HapnanAR
85f652ad6f Update Thorium entry in for Chocolatey package (#3891) 2026-01-09 11:40:30 -06:00
Gabi
38cec9bf3f Update windev.ps1 (#3886) 2026-01-09 11:31:42 -06:00
Chris Titus Tech
a20719b65b update PR template 2026-01-08 09:08:28 -06:00
162 changed files with 5190 additions and 12022 deletions

View File

@@ -12,19 +12,10 @@
## Description ## 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.]--> <!--[Provide a detailed explanation of the changes you have made. Include the reasons behind these changes and any relevant context. Link any related issues.]-->
## Testing
<!--[Detail the testing you have performed to ensure that these changes function as intended. Include information about any added tests.]-->
## Impact
<!--[Discuss the impact of your changes on the project. This might include effects on performance, new dependencies, or changes in behaviour.]-->
## Issue related to PR ## Issue related to PR
<!--[What issue/discussion is related to this PR (if any)]--> <!--[What issue/discussion is related to this PR (if any)]-->
- Resolves # - Resolves #
## Additional Information
<!--[Any additional information that reviewers should be aware of.]-->
## Checklist ## Checklist
- [ ] My code adheres to the coding and style guidelines of the project. - [ ] My code adheres to the coding and style guidelines of the project.
- [ ] I have performed a self-review of my own code. - [ ] I have performed a self-review of my own code.

View File

@@ -43,7 +43,7 @@ jobs:
wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \ wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
&& sudo dpkg -i ${{ runner.temp }}/hugo.deb && sudo dpkg -i ${{ runner.temp }}/hugo.deb
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v6
with: with:
submodules: recursive submodules: recursive
fetch-depth: 0 fetch-depth: 0
@@ -54,7 +54,7 @@ jobs:
run: "cd docs && [[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true" run: "cd docs && [[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
- name: Cache Restore - name: Cache Restore
id: cache-restore id: cache-restore
uses: actions/cache/restore@v4 uses: actions/cache/restore@v5
with: with:
path: | path: |
${{ runner.temp }}/hugo_cache ${{ runner.temp }}/hugo_cache
@@ -71,13 +71,13 @@ jobs:
--cacheDir "${{ runner.temp }}/hugo_cache" --cacheDir "${{ runner.temp }}/hugo_cache"
- name: Cache Save - name: Cache Save
id: cache-save id: cache-save
uses: actions/cache/save@v4 uses: actions/cache/save@v5
with: with:
path: | path: |
${{ runner.temp }}/hugo_cache ${{ runner.temp }}/hugo_cache
key: ${{ steps.cache-restore.outputs.cache-primary-key }} key: ${{ steps.cache-restore.outputs.cache-primary-key }}
- name: Upload artifact - name: Upload artifact
uses: actions/upload-pages-artifact@v3 uses: actions/upload-pages-artifact@v4
with: with:
path: ./docs/public path: ./docs/public

View File

@@ -39,9 +39,6 @@ If you have Issues, refer to [Known Issues](https://winutil.christitus.com/known
## 🎓 Documentation ## 🎓 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/) ### [WinUtil Official Documentation](https://winutil.christitus.com/)
### [YouTube Tutorial](https://www.youtube.com/watch?v=6UQZ5oQg8XA) ### [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. These are the sponsors that help keep this project alive with monthly contributions.
<!-- sponsors --><a href="https://github.com/markamos"><img src="https:&#x2F;&#x2F;github.com&#x2F;markamos.png" width="60px" alt="User avatar: Mark Amos" /></a><a href="https://github.com/dwelfusius"><img src="https:&#x2F;&#x2F;github.com&#x2F;dwelfusius.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/mews-se"><img src="https:&#x2F;&#x2F;github.com&#x2F;mews-se.png" width="60px" alt="User avatar: Martin Stockzell" /></a><a href="https://github.com/jdiegmueller"><img src="https:&#x2F;&#x2F;github.com&#x2F;jdiegmueller.png" width="60px" alt="User avatar: Jason A. Diegmueller" /></a><a href="https://github.com/robertsandrock"><img src="https:&#x2F;&#x2F;github.com&#x2F;robertsandrock.png" width="60px" alt="User avatar: RMS" /></a><a href="https://github.com/KenichiQaz"><img src="https:&#x2F;&#x2F;github.com&#x2F;KenichiQaz.png" width="60px" alt="User avatar: Stefan" /></a><a href="https://github.com/paulsheets"><img src="https:&#x2F;&#x2F;github.com&#x2F;paulsheets.png" width="60px" alt="User avatar: Paul" /></a><a href="https://github.com/djones369"><img src="https:&#x2F;&#x2F;github.com&#x2F;djones369.png" width="60px" alt="User avatar: Dave J (WhamGeek)" /></a><a href="https://github.com/anthonymendez"><img src="https:&#x2F;&#x2F;github.com&#x2F;anthonymendez.png" width="60px" alt="User avatar: Anthony Mendez" /></a><a href="https://github.com/FatBastard0"><img src="https:&#x2F;&#x2F;github.com&#x2F;FatBastard0.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/DursleyGuy"><img src="https:&#x2F;&#x2F;github.com&#x2F;DursleyGuy.png" width="60px" alt="User avatar: DursleyGuy" /></a><a href="https://github.com/quaszi"><img src="https:&#x2F;&#x2F;github.com&#x2F;quaszi.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/DwayneTheRockLobster1"><img src="https:&#x2F;&#x2F;github.com&#x2F;DwayneTheRockLobster1.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/KieraKujisawa"><img src="https:&#x2F;&#x2F;github.com&#x2F;KieraKujisawa.png" width="60px" alt="User avatar: Kiera Meredith" /></a><a href="https://github.com/TaNorbs"><img src="https:&#x2F;&#x2F;github.com&#x2F;TaNorbs.png" width="60px" alt="User avatar: Norbs" /></a><!-- sponsors --> <!-- sponsors --><a href="https://github.com/markamos"><img src="https:&#x2F;&#x2F;github.com&#x2F;markamos.png" width="60px" alt="User avatar: Mark Amos" /></a><a href="https://github.com/dwelfusius"><img src="https:&#x2F;&#x2F;github.com&#x2F;dwelfusius.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/mews-se"><img src="https:&#x2F;&#x2F;github.com&#x2F;mews-se.png" width="60px" alt="User avatar: Martin Stockzell" /></a><a href="https://github.com/jdiegmueller"><img src="https:&#x2F;&#x2F;github.com&#x2F;jdiegmueller.png" width="60px" alt="User avatar: Jason A. Diegmueller" /></a><a href="https://github.com/robertsandrock"><img src="https:&#x2F;&#x2F;github.com&#x2F;robertsandrock.png" width="60px" alt="User avatar: RMS" /></a><a href="https://github.com/KenichiQaz"><img src="https:&#x2F;&#x2F;github.com&#x2F;KenichiQaz.png" width="60px" alt="User avatar: Stefan" /></a><a href="https://github.com/paulsheets"><img src="https:&#x2F;&#x2F;github.com&#x2F;paulsheets.png" width="60px" alt="User avatar: Paul" /></a><a href="https://github.com/djones369"><img src="https:&#x2F;&#x2F;github.com&#x2F;djones369.png" width="60px" alt="User avatar: Dave J (WhamGeek)" /></a><a href="https://github.com/anthonymendez"><img src="https:&#x2F;&#x2F;github.com&#x2F;anthonymendez.png" width="60px" alt="User avatar: Anthony Mendez" /></a><a href="https://github.com/FatBastard0"><img src="https:&#x2F;&#x2F;github.com&#x2F;FatBastard0.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/DursleyGuy"><img src="https:&#x2F;&#x2F;github.com&#x2F;DursleyGuy.png" width="60px" alt="User avatar: DursleyGuy" /></a><a href="https://github.com/quaszi"><img src="https:&#x2F;&#x2F;github.com&#x2F;quaszi.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/DwayneTheRockLobster1"><img src="https:&#x2F;&#x2F;github.com&#x2F;DwayneTheRockLobster1.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/KieraKujisawa"><img src="https:&#x2F;&#x2F;github.com&#x2F;KieraKujisawa.png" width="60px" alt="User avatar: Kiera Meredith" /></a><a href="https://github.com/andrewpayne68"><img src="https:&#x2F;&#x2F;github.com&#x2F;andrewpayne68.png" width="60px" alt="User avatar: Andrew P" /></a><!-- sponsors -->
## 🏅 Thanks to all Contributors ## 🏅 Thanks to all Contributors
Thanks a lot for spending your time helping Winutil grow. Thanks a lot! Keep rocking 🍻. Thanks a lot for spending your time helping Winutil grow. Thanks a lot! Keep rocking 🍻.

View File

@@ -2085,8 +2085,8 @@
"choco": "synctrayzor", "choco": "synctrayzor",
"content": "SyncTrayzor", "content": "SyncTrayzor",
"description": "Windows tray utility / filesystem watcher / launcher for Syncthing", "description": "Windows tray utility / filesystem watcher / launcher for Syncthing",
"link": "https://github.com/canton7/SyncTrayzor/", "link": "https://github.com/GermanCoding/SyncTrayzor",
"winget": "SyncTrayzor.SyncTrayzor" "winget": "GermanCoding.SyncTrayzor"
}, },
"sqlmanagementstudio": { "sqlmanagementstudio": {
"category": "Microsoft Tools", "category": "Microsoft Tools",
@@ -2186,7 +2186,7 @@
}, },
"thorium": { "thorium": {
"category": "Browsers", "category": "Browsers",
"choco": "na", "choco": "thorium",
"content": "Thorium Browser AVX2", "content": "Thorium Browser AVX2",
"description": "Browser built for speed over vanilla chromium. It is built with AVX2 optimizations and is the fastest browser on the market.", "description": "Browser built for speed over vanilla chromium. It is built with AVX2 optimizations and is the fastest browser on the market.",
"link": "https://thorium.rocks/", "link": "https://thorium.rocks/",

View File

@@ -3,6 +3,7 @@
"WPFTweaksActivity", "WPFTweaksActivity",
"WPFTweaksConsumerFeatures", "WPFTweaksConsumerFeatures",
"WPFTweaksDisableExplorerAutoDiscovery", "WPFTweaksDisableExplorerAutoDiscovery",
"WPFTweaksWPBT",
"WPFTweaksDVR", "WPFTweaksDVR",
"WPFTweaksLocation", "WPFTweaksLocation",
"WPFTweaksServices", "WPFTweaksServices",
@@ -16,6 +17,7 @@
"Minimal": [ "Minimal": [
"WPFTweaksConsumerFeatures", "WPFTweaksConsumerFeatures",
"WPFTweaksDisableExplorerAutoDiscovery", "WPFTweaksDisableExplorerAutoDiscovery",
"WPFTweaksWPBT",
"WPFTweaksServices", "WPFTweaksServices",
"WPFTweaksTelemetry" "WPFTweaksTelemetry"
] ]

View File

@@ -1584,71 +1584,26 @@
" "
# Disable Defender Auto Sample Submission # Disable Defender Auto Sample Submission
Set-MpPreference -SubmitSamplesConsent 2 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/tele"
}, },
"WPFTweaksDisableEdge": { "WPFTweaksRemoveEdge": {
"Content": "Disable Edge", "Content": "Remove Microsoft Edge",
"Description": "Prevent msedge.exe from running with explorer policies.", "Description": "Unblocks Microsoft Edge uninstaller restrictions than uses that uninstaller to remove Microsoft Edge",
"category": "z__Advanced Tweaks - CAUTION", "category": "z__Advanced Tweaks - CAUTION",
"panel": "1", "panel": "1",
"Order": "a023_", "Order": "a028_",
"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"
}
],
"InvokeScript": [ "InvokeScript": [
" "Invoke-WinUtilRemoveEdge"
$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": [ "UndoScript": [
" "
$File = \"C:\\Windows\\System32\\IntegratedServicesRegionPolicySet.json\" Write-Host 'Installing Microsoft Edge...'
winget install Microsoft.Edge --source winget
takeown /f $File
icacls $File /grant \"Administrators:(F)\"
$FileContent = Get-Content $File
$FileContent[7] = $FileContent[7] -replace \"enabled\", \"disabled\"
Set-Content $File $FileContent
" "
], ],
"link": "" "link": ""
@@ -1663,13 +1618,45 @@
{ {
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\TimeZoneInformation", "Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\TimeZoneInformation",
"Name": "RealTimeIsUniversal", "Name": "RealTimeIsUniversal",
"Type": "DWord", "Type": "QWord",
"Value": "1", "Value": "1",
"OriginalValue": "0" "OriginalValue": "0"
} }
], ],
"link": "https://winutil.christitus.com/dev/tweaks/z--advanced-tweaks---caution/utc" "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": { "WPFTweaksRemoveHome": {
"Content": "Remove Home from Explorer", "Content": "Remove Home from Explorer",
"Description": "Removes the Home from Explorer and sets This PC as default", "Description": "Removes the Home from Explorer and sets This PC as default",
@@ -1785,13 +1772,6 @@
"Value": "0", "Value": "0",
"Type": "DWord" "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", "Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
"OriginalValue": "1", "OriginalValue": "1",
@@ -2048,6 +2028,12 @@
Write-Host \"Remove Copilot\" Write-Host \"Remove Copilot\"
Get-AppxPackage -AllUsers *Copilot* | Remove-AppxPackage -AllUsers Get-AppxPackage -AllUsers *Copilot* | Remove-AppxPackage -AllUsers
Get-AppxPackage -AllUsers Microsoft.MicrosoftOfficeHub | 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": [ "UndoScript": [
@@ -2061,9 +2047,9 @@
"WPFTweaksWPBT": { "WPFTweaksWPBT": {
"Content": "Disable Windows Platform Binary Table (WPBT)", "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.", "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", "panel": "1",
"Order": "a025_", "Order": "a005_",
"registry": [ "registry": [
{ {
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager", "Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager",
@@ -2827,25 +2813,6 @@
], ],
"link": "https://winutil.christitus.com/dev/tweaks/customize-preferences/taskview" "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": { "WPFToggleTaskbarAlignment": {
"Content": "Center Taskbar Items", "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.", "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.",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 532 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 570 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 572 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 535 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

View File

@@ -3,13 +3,6 @@ title: Known Issues
toc: true toc: true
--- ---
## Launch Issues
### Blocked by anti-virus
Windows Security (formerly Defender) and other anti-virus software are known to block the script. The script gets flagged due to the fact that it requires administrator privileges & makes drastic system changes.
To resolve this, allow/whitelist the script in your anti-virus software settings, or temporarily disable real-time protection. Since the project is open source, you may audit the code if security is a concern.
### Download not working ### 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: 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,7 +14,7 @@ If you are seeing errors referencing TLS or security, you may be running an olde
``` ```
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
iex (New-Object Net.WebClient).DownloadString('https://github.com/ChrisTitusTech/Winutil/releases/latest/download/Winutil.ps1') iex https://christitus.com/win | iex
``` ```
If it still isn't working and you live in India, it might be due to India blocking GitHub's content domain and preventing downloads. See more on [Times of India](https://timesofindia.indiatimes.com/gadgets-news/github-content-domain-blocked-for-these-indian-users-reports/articleshow/96687992.cms). If it still isn't working and you live in India, it might be due to India blocking GitHub's content domain and preventing downloads. See more on [Times of India](https://timesofindia.indiatimes.com/gadgets-news/github-content-domain-blocked-for-these-indian-users-reports/articleshow/96687992.cms).

View File

@@ -1,39 +1,41 @@
# Table of Contents ---
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 ## Tweaks
### Essential Tweaks ### Essential Tweaks
- [Change Windows Terminal default: PowerShell 5 -> PowerShell 7](tweaks/essential-tweaks/powershell7/)
- [Create Restore Point](tweaks/essential-tweaks/restorepoint/) - [Create Restore Point](tweaks/essential-tweaks/restorepoint/)
- [Debloat Edge](tweaks/essential-tweaks/edgedebloat/) - [Debloat Edge](tweaks/essential-tweaks/edgedebloat/)
- [Delete Temporary Files](tweaks/essential-tweaks/deletetempfiles/) - [Delete Temporary Files](tweaks/essential-tweaks/deletetempfiles/)
- [Disable Activity History](tweaks/essential-tweaks/ah/) - [Disable Activity History](tweaks/essential-tweaks/activity/)
- [Disable ConsumerFeatures](tweaks/essential-tweaks/consumerfeatures/) - [Disable ConsumerFeatures](tweaks/essential-tweaks/consumerfeatures/)
- [Disable GameDVR](tweaks/essential-tweaks/dvr/) - [Disable GameDVR](tweaks/essential-tweaks/gamedvr/)
- [Disable Hibernation](tweaks/essential-tweaks/hiber/) - [Disable Hibernation](tweaks/essential-tweaks/hibernation/)
- [Disable Homegroup](tweaks/essential-tweaks/home/) - [Disable Location Tracking](tweaks/essential-tweaks/location/)
- [Disable Location Tracking](tweaks/essential-tweaks/loc/)
- [Disable Powershell 7 Telemetry](tweaks/essential-tweaks/powershell7tele/) - [Disable Powershell 7 Telemetry](tweaks/essential-tweaks/powershell7tele/)
- [Disable Storage Sense](tweaks/essential-tweaks/storage/) - [Disable Storage Sense](tweaks/essential-tweaks/storage/)
- [Disable Telemetry](tweaks/essential-tweaks/tele/) - [Disable Telemetry](tweaks/essential-tweaks/telemetry/)
- [Disable Wifi-Sense](tweaks/essential-tweaks/wifi/)
- [Enable End Task With Right Click](tweaks/essential-tweaks/endtaskontaskbar/) - [Enable End Task With Right Click](tweaks/essential-tweaks/endtaskontaskbar/)
- [Prefer IPv4 over IPv6](tweaks/essential-tweaks/ipv46/) - [Prefer IPv4 over IPv6](tweaks/essential-tweaks/ipv46/)
- [Run Disk Cleanup](tweaks/essential-tweaks/diskcleanup/) - [Run Disk Cleanup](tweaks/essential-tweaks/diskcleanup/)
- [Set Hibernation as default (good for laptops)](tweaks/essential-tweaks/laptophibernation/) - [Set Hibernation as default (good for laptops)](tweaks/essential-tweaks/laptophibernation/)
- [Set Services to Manual](tweaks/essential-tweaks/services/) - [Set Services to Manual](tweaks/essential-tweaks/services/)
### Shortcuts
- [Create Winutil Shortcut](tweaks/shortcuts/shortcut/)
### Advanced Tweaks (CAUTION) ### Advanced Tweaks (CAUTION)
- [Adobe Debloat](tweaks/z--advanced-tweaks---caution/debloatadobe/)
- [Adobe Network Block](tweaks/z--advanced-tweaks---caution/blockadobenet/) - [Adobe Network Block](tweaks/z--advanced-tweaks---caution/blockadobenet/)
- [Disable Background Apps](tweaks/z--advanced-tweaks---caution/disablebgapps/) - [Disable Background Apps](tweaks/z--advanced-tweaks---caution/disablebgapps/)
- [Disable Fullscreen Optimizations](tweaks/z--advanced-tweaks---caution/disablefso/) - [Disable Fullscreen Optimizations](tweaks/z--advanced-tweaks---caution/disablefso/)
- [Disable Intel MM (vPro LMS)](tweaks/z--advanced-tweaks---caution/disablelms1/)
- [Disable IPv6](tweaks/z--advanced-tweaks---caution/disableipsix/) - [Disable IPv6](tweaks/z--advanced-tweaks---caution/disableipsix/)
- [Disable Microsoft Copilot](tweaks/z--advanced-tweaks---caution/removecopilot/) - [Disable Microsoft Copilot](tweaks/z--advanced-tweaks---caution/removecopilot/)
- [Disable Notification Tray/Calendar](tweaks/z--advanced-tweaks---caution/disablenotifications/) - [Disable Notification Tray/Calendar](tweaks/z--advanced-tweaks---caution/disablenotifications/)
@@ -41,12 +43,13 @@
- [DNS](tweaks/z--advanced-tweaks---caution/changedns/) - [DNS](tweaks/z--advanced-tweaks---caution/changedns/)
- [Remove ALL MS Store Apps - NOT RECOMMENDED](tweaks/z--advanced-tweaks---caution/debloat/) - [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/) - [Remove Home and Gallery from explorer](tweaks/z--advanced-tweaks---caution/removehomegallery/)
- [Remove Microsoft Edge](tweaks/z--advanced-tweaks---caution/removeedge/) - [Make Edge Uninstallable](tweaks/z--advanced-tweaks---caution/edgeuninstall/)
- [Remove OneDrive](tweaks/z--advanced-tweaks---caution/removeonedrive/)
- [Run OO Shutup 10](tweaks/z--advanced-tweaks---caution/oosubutton/) - [Run OO Shutup 10](tweaks/z--advanced-tweaks---caution/oosubutton/)
- [Remove OneDrive](tweaks/z--advanced-tweaks---caution//removeonedrive)
- [Set Classic Right-Click Menu ](tweaks/z--advanced-tweaks---caution/rightclickmenu/) - [Set Classic Right-Click Menu ](tweaks/z--advanced-tweaks---caution/rightclickmenu/)
- [Set Display for Performance](tweaks/z--advanced-tweaks---caution/display/) - [Set Display for Performance](tweaks/z--advanced-tweaks---caution/display/)
- [Set Time to UTC (Dual Boot)](tweaks/z--advanced-tweaks---caution/utc/) - [Set Time to UTC (Dual Boot)](tweaks/z--advanced-tweaks---caution/utc/)
### Customize Preferences ### Customize Preferences
- [Bing Search in Start Menu](tweaks/customize-preferences/bingsearch/) - [Bing Search in Start Menu](tweaks/customize-preferences/bingsearch/)
@@ -65,21 +68,22 @@
- [Task View Button in Taskbar](tweaks/customize-preferences/taskview/) - [Task View Button in Taskbar](tweaks/customize-preferences/taskview/)
- [Verbose Messages During Logon](tweaks/customize-preferences/verboselogon/) - [Verbose Messages During Logon](tweaks/customize-preferences/verboselogon/)
- [Widgets Button in Taskbar](tweaks/customize-preferences/taskbarwidgets/) - [Widgets Button in Taskbar](tweaks/customize-preferences/taskbarwidgets/)
### Performance Plans ### Performance Plans
- [Add and Activate Ultimate Performance Profile](tweaks/performance-plans/addultperf/) - [Add and Remove Ultimate Performance Profile](tweaks/performance-plans/profile/)
- [Remove Ultimate Performance Profile](tweaks/performance-plans/removeultperf/)
## Features ## Features
### Fixes ### Fixes
- [Remove Adobe Creative Cloud](features/fixes/runadobecccleanertool/) - [Remove Adobe Creative Cloud](features/fixes/RunAdobeCCCleanerTool/)
- [Reset Network](features/fixes/network/) - [Reset Network](features/fixes/network/)
- [Reset Windows Update](features/fixes/update/) - [Reset Windows Update](features/fixes/update/)
- [Set Up Autologin](features/fixes/autologin/) - [Set Up Autologin](features/fixes/autologin/)
- [System Corruption Scan](features/fixes/dism/) - [System Corruption Scan](features/fixes/corruptionscan/)
- [WinGet Reinstall](features/fixes/winget/) - [WinGet Reinstall](features/fixes/winget/)
### Legacy Windows Panels ### Legacy Windows Panels
- [Control Panel](features/legacy-windows-panels/control/) - [Control Panel](features/legacy-windows-panels/control/)
@@ -90,19 +94,15 @@
- [Sound Settings](features/legacy-windows-panels/sound/) - [Sound Settings](features/legacy-windows-panels/sound/)
- [System Properties](features/legacy-windows-panels/system/) - [System Properties](features/legacy-windows-panels/system/)
- [User Accounts](features/legacy-windows-panels/user/) - [User Accounts](features/legacy-windows-panels/user/)
### Features ### Features
- [All .Net Framework (2,3,4)](features/features/dotnet/) - [All .Net Framework (2,3,4)](features/features/dotnet/)
- [Disable Legacy F8 Boot Recovery](features/features/disablelegacyrecovery/) - [Disable Legacy F8 Boot Recovery](features/features/disablelegacyrecovery/)
- [Disable Search Box Web Suggestions in Registry(explorer restart)](features/features/disablesearchsuggestions/)
- [Enable Daily Registry Backup Task 12.30am](features/features/regbackup/)
- [Enable Legacy F8 Boot Recovery](features/features/enablelegacyrecovery/) - [Enable Legacy F8 Boot Recovery](features/features/enablelegacyrecovery/)
- [Enable Search Box Web Suggestions in Registry(explorer restart)](features/features/enablesearchsuggestions/) - [Enable Daily Registry Backup Task 12.30am](features/features/regbackup/)
- [HyperV Virtualization](features/features/hyperv/) - [HyperV Virtualization](features/features/hyperv/)
- [Install Features](features/features/install/) - [Legacy Media (WMP, DirectPlay)](features/features/legacymedia/)
- [Legacy Media (wmp, directplay)](features/features/legacymedia/)
- [NFS - Network File System](features/features/nfs/) - [NFS - Network File System](features/features/nfs/)
- [Windows Sandbox](features/features/sandbox/) - [Windows Sandbox](features/features/sandbox/)
- [Windows Subsystem for Linux](features/features/wsl/) - [Windows Subsystem for Linux](features/features/wsl/)

View 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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,20 +1,11 @@
---
weight: 3
---
## Features
### Features ### Features
- [All .Net Framework (2,3,4)](dotnet/) - [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](disablelegacyrecovery/) - [Disable Legacy F8 Boot Recovery](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/DisableLegacyRecovery.md)
- [Disable Search Box Web Suggestions in Registry(explorer restart)](disablesearchsuggestions/) - [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](regbackup/) - [Enable Daily Registry Backup Task 12.30am](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/RegBackup.md)
- [Enable Legacy F8 Boot Recovery](enablelegacyrecovery/) - [HyperV Virtualization](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/hyperv.md)
- [Enable Search Box Web Suggestions in Registry(explorer restart)](enablesearchsuggestions/) - [Legacy Media (WMP, DirectPlay)](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/legacymedia.md)
- [HyperV Virtualization](hyperv/) - [NFS - Network File System](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/nfs.md)
- [Install Features](install/) - [Windows Sandbox](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/Sandbox.md)
- [Legacy Media (WMP, DirectPlay)](legacymedia/) - [Windows Subsystem for Linux](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/wsl.md)
- [NFS - Network File System](nfs/)
- [Windows Sandbox](sandbox/)
- [Windows Subsystem for Linux](wsl/)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,141 @@
# System Corruption Scan
```json
function Invoke-WPFSystemRepair {
<#
.SYNOPSIS
Checks for system corruption using Chkdsk, SFC, and DISM
.DESCRIPTION
1. Chkdsk - Fixes disk and filesystem corruption
2. SFC Run 1 - Fixes system file corruption, and fixes DISM if it was corrupted
3. DISM - Fixes system image corruption, and fixes SFC's system image if it was corrupted
4. SFC Run 2 - Fixes system file corruption, this time with an almost guaranteed uncorrupted system image
#>
function Invoke-Chkdsk {
<#
.SYNOPSIS
Runs chkdsk on the system drive
.DESCRIPTION
Chkdsk /Scan - Runs an online scan on the system drive, attempts to fix any corruption, and queues other corruption for fixing on reboot
#>
param(
[int]$parentProgressId = 0
)
Write-Progress -Id 1 -ParentId $parentProgressId -Activity $childProgressBarActivity -Status "Running chkdsk..." -PercentComplete 0
$oldpercent = 0
# 2>&1 redirects stdout, allowing iteration over the output
chkdsk.exe /scan /perf 2>&1 | ForEach-Object {
Write-Debug $_
# Regex to match the total percentage regardless of windows locale (it's always the second percentage in the status output)
if ($_ -match "%.*?(\d+)%") {
[int]$percent = $matches[1]
if ($percent -gt $oldpercent) {
Write-Progress -Id 1 -Activity $childProgressBarActivity -Status "Running chkdsk... ($percent%)" -PercentComplete $percent
$oldpercent = $percent
}
}
}
Write-Progress -Id 1 -Activity $childProgressBarActivity -Status "chkdsk Completed" -PercentComplete 100 -Completed
}
function Invoke-SFC {
<#
.SYNOPSIS
Runs sfc on the system drive
.DESCRIPTION
SFC /ScanNow - Performs a scan of the system files and fixes any corruption
.NOTES
ErrorActionPreference is set locally within a script block & {...} to isolate their effects.
ErrorActionPreference suppresses false errors caused by sfc.exe output redirection.
A bug in SFC output buffering causes progress updates to appear in chunks when redirecting output
#>
param(
[int]$parentProgressId = 0
)
& {
$ErrorActionPreference = "SilentlyContinue"
Write-Progress -Id 1 -ParentId $parentProgressId -Activity $childProgressBarActivity -Status "Running SFC..." -PercentComplete 0
$oldpercent = 0
sfc.exe /scannow 2>&1 | ForEach-Object {
Write-Debug $_
if ($_ -ne "") {
# sfc.exe /scannow outputs unicode characters, so we directly remove null characters for optimization
$utf8line = $_ -replace "`0", ""
if ($utf8line -match "(\d+)\s*%") {
[int]$percent = $matches[1]
if ($percent -gt $oldpercent) {
Write-Progress -Id 1 -Activity $childProgressBarActivity -Status "Running SFC... ($percent%)" -PercentComplete $percent
$oldpercent = $percent
}
}
}
}
Write-Progress -Id 1 -Activity $childProgressBarActivity -Status "SFC Completed" -PercentComplete 100 -Completed
}
}
function Invoke-DISM {
<#
.SYNOPSIS
Runs DISM on the system drive
.DESCRIPTION
DISM - Fixes system image corruption, and fixes SFC's system image if it was corrupted
/Online - Fixes the currently running system image
/Cleanup-Image - Performs cleanup operations on the image, could remove some unneeded temporary files
/Restorehealth - Performs a scan of the image and fixes any corruption
#>
param(
[int]$parentProgressId = 0
)
Write-Progress -Id 1 -ParentId $parentProgressId -Activity $childProgressBarActivity -Status "Running DISM..." -PercentComplete 0
$oldpercent = 0
DISM /Online /Cleanup-Image /RestoreHealth | ForEach-Object {
Write-Debug $_
# Filter for lines that contain a percentage that is greater than the previous one
if ($_ -match "(\d+)[.,]\d+%") {
[int]$percent = $matches[1]
if ($percent -gt $oldpercent) {
# Update the progress bar
Write-Progress -Id 1 -Activity $childProgressBarActivity -Status "Running DISM... ($percent%)" -PercentComplete $percent
$oldpercent = $percent
}
}
}
Write-Progress -Id 1 -Activity $childProgressBarActivity -Status "DISM Completed" -PercentComplete 100 -Completed
}
try {
Set-WinUtilTaskbaritem -state "Indeterminate" -overlay "logo"
$childProgressBarActivity = "Scanning for corruption"
Write-Progress -Id 0 -Activity "Repairing Windows" -PercentComplete 0
# Step 1: Run chkdsk to fix disk and filesystem corruption before proceeding with system file repairs
Invoke-Chkdsk
Write-Progress -Id 0 -Activity "Repairing Windows" -PercentComplete 25
# Step 2: Run SFC to fix system file corruption and ensure DISM can operate correctly
Invoke-SFC
Write-Progress -Id 0 -Activity "Repairing Windows" -PercentComplete 50
# Step 3: Run DISM to repair the system image, which SFC relies on for accurate repairs
Invoke-DISM
Write-Progress -Id 0 -Activity "Repairing Windows" -PercentComplete 75
# Step 4: Run SFC again to ensure system files are repaired using the now-fixed system image
Invoke-SFC
Write-Progress -Id 0 -Activity "Repairing Windows" -PercentComplete 100 -Completed
Set-WinUtilTaskbaritem -state "None" -overlay "checkmark"
} catch {
Write-Error "An error occurred while repairing the system: $_"
Set-WinUtilTaskbaritem -state "Error" -overlay "warning"
} finally {
Write-Host "==> Finished System Repair"
Set-WinUtilTaskbaritem -state "None" -overlay "checkmark"
}
}
```

View File

@@ -1,74 +0,0 @@
# System Corruption Scan
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "System Corruption Scan",
"category": "Fixes",
"panel": "1",
"Order": "a043_",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://christitustech.github.io/Winutil/dev/features/Fixes/DISM"
}
```
</details>
## Function: Invoke-WPFPanelDISM
```powershell
function Invoke-WPFPanelDISM {
<#
.SYNOPSIS
Checks for system corruption using Chkdsk, SFC, and DISM
.DESCRIPTION
1. Chkdsk - Fixes disk and filesystem corruption
2. SFC Run 1 - Fixes system file corruption, and fixes DISM if it was corrupted
3. DISM - Fixes system image corruption, and fixes SFC's system image if it was corrupted
4. SFC Run 2 - Fixes system file corruption, this time with an almost guaranteed uncorrupted system image
.NOTES
Command Arguments:
1. Chkdsk
/Scan - Runs an online scan on the system drive, attempts to fix any corruption, and queues other corruption for fixing on reboot
2. SFC
/ScanNow - Performs a scan of the system files and fixes any corruption
3. DISM - Fixes system image corruption, and fixes SFC's system image if it was corrupted
/Online - Fixes the currently running system image
/Cleanup-Image - Performs cleanup operations on the image, could remove some unneeded temporary files
/Restorehealth - Performs a scan of the image and fixes any corruption
#>
Start-Process PowerShell -ArgumentList "Write-Host '(1/4) Chkdsk' -ForegroundColor Green; Chkdsk /scan;
Write-Host '`n(2/4) SFC - 1st scan' -ForegroundColor Green; sfc /scannow;
Write-Host '`n(3/4) DISM' -ForegroundColor Green; DISM /Online /Cleanup-Image /Restorehealth;
Write-Host '`n(4/4) SFC - 2nd scan' -ForegroundColor Green; sfc /scannow;
Read-Host '`nPress Enter to Continue'" -verb runas
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/feature.json)

View File

@@ -1,36 +1,6 @@
# Reset Network # Reset Network
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{
"Content": "Reset Network",
"category": "Fixes",
"Order": "a042_",
"panel": "1",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://christitustech.github.io/Winutil/dev/features/Fixes/Network"
}
```
</details>
## Function: Invoke-WPFFixesNetwork
```powershell
function Invoke-WPFFixesNetwork { function Invoke-WPFFixesNetwork {
<# <#
@@ -41,13 +11,20 @@ function Invoke-WPFFixesNetwork {
Write-Host "Resetting Network with netsh" Write-Host "Resetting Network with netsh"
Set-WinUtilTaskbaritem -state "Normal" -value 0.01 -overlay "logo"
# Reset WinSock catalog to a clean state # Reset WinSock catalog to a clean state
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "winsock", "reset" Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "winsock", "reset"
Set-WinUtilTaskbaritem -state "Normal" -value 0.35 -overlay "logo"
# Resets WinHTTP proxy setting to DIRECT # Resets WinHTTP proxy setting to DIRECT
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "winhttp", "reset", "proxy" Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "winhttp", "reset", "proxy"
Set-WinUtilTaskbaritem -state "Normal" -value 0.7 -overlay "logo"
# Removes all user configured IP settings # Removes all user configured IP settings
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "int", "ip", "reset" Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "int", "ip", "reset"
Set-WinUtilTaskbaritem -state "None" -overlay "checkmark"
Write-Host "Process complete. Please reboot your computer." Write-Host "Process complete. Please reboot your computer."
$ButtonType = [System.Windows.MessageBoxButton]::OK $ButtonType = [System.Windows.MessageBoxButton]::OK
@@ -60,14 +37,4 @@ function Invoke-WPFFixesNetwork {
Write-Host "-- Network Configuration has been Reset --" Write-Host "-- Network Configuration has been Reset --"
Write-Host "==========================================" Write-Host "=========================================="
} }
``` ```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/feature.json)

View File

@@ -1,36 +1,6 @@
# Remove Adobe Creative Cloud # Remove Adobe Creative Cloud
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{
"Content": "Remove Adobe Creative Cloud",
"category": "Fixes",
"panel": "1",
"Order": "a045_",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://christitustech.github.io/Winutil/dev/features/Fixes/RunAdobeCCCleanerTool"
}
```
</details>
## Function: Invoke-WPFRunAdobeCCCleanerTool
```powershell
function Invoke-WPFRunAdobeCCCleanerTool { function Invoke-WPFRunAdobeCCCleanerTool {
<# <#
.SYNOPSIS .SYNOPSIS
@@ -63,14 +33,4 @@ function Invoke-WPFRunAdobeCCCleanerTool {
} }
} }
} }
``` ```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/feature.json)

View File

@@ -1,36 +1,6 @@
# Reset Windows Update # Reset Windows Update
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{
"Content": "Reset Windows Update",
"category": "Fixes",
"panel": "1",
"Order": "a041_",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://christitustech.github.io/Winutil/dev/features/Fixes/Update"
}
```
</details>
## Function: Invoke-WPFFixesUpdate
```powershell
function Invoke-WPFFixesUpdate { function Invoke-WPFFixesUpdate {
<# <#
@@ -39,19 +9,7 @@ function Invoke-WPFFixesUpdate {
Performs various tasks in an attempt to repair Windows Update Performs various tasks in an attempt to repair Windows Update
.DESCRIPTION .DESCRIPTION
1. (Aggressive Only) Scans the system for corruption using chkdsk, SFC, and DISM 1. (Aggressive Only) Scans the system for corruption using the Invoke-WPFSystemRepair function
Steps:
1. Runs chkdsk /scan /perf
/scan - Runs an online scan on the volume
/perf - Uses more system resources to complete a scan as fast as possible
2. Runs SFC /scannow
/scannow - Scans integrity of all protected system files and repairs files with problems when possible
3. Runs DISM /Online /Cleanup-Image /RestoreHealth
/Online - Targets the running operating system
/Cleanup-Image - Performs cleanup and recovery operations on the image
/RestoreHealth - Scans the image for component store corruption and attempts to repair the corruption using Windows Update
4. Runs SFC /scannow
Ran twice in case DISM repaired SFC
2. Stops Windows Update Services 2. Stops Windows Update Services
3. Remove the QMGR Data file, which stores BITS jobs 3. Remove the QMGR Data file, which stores BITS jobs
4. (Aggressive Only) Renames the DataStore and CatRoot2 folders 4. (Aggressive Only) Renames the DataStore and CatRoot2 folders
@@ -75,108 +33,13 @@ function Invoke-WPFFixesUpdate {
param($Aggressive = $false) param($Aggressive = $false)
Write-Progress -Id 0 -Activity "Repairing Windows Update" -PercentComplete 0 Write-Progress -Id 0 -Activity "Repairing Windows Update" -PercentComplete 0
Set-WinUtilTaskbaritem -state "Indeterminate" -overlay "logo"
Write-Host "Starting Windows Update Repair..."
# Wait for the first progress bar to show, otherwise the second one won't show # Wait for the first progress bar to show, otherwise the second one won't show
Start-Sleep -Milliseconds 200 Start-Sleep -Milliseconds 200
if ($Aggressive) { if ($Aggressive) {
# Scan system for corruption Invoke-WPFSystemRepair
Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Scanning for corruption..." -PercentComplete 0
Write-Progress -Id 1 -ParentId 0 -Activity "Scanning for corruption" -Status "Running chkdsk..." -PercentComplete 0
# 2>&1 redirects stdout, alowing iteration over the output
chkdsk.exe /scan /perf 2>&1 | ForEach-Object {
# Write stdout to the Verbose stream
Write-Verbose $_
# Get the index of the total percentage
$index = $_.IndexOf("Total:")
if (
# If the percent is found
($percent = try {(
$_.Substring(
$index + 6,
$_.IndexOf("%", $index) - $index - 6
)
).Trim()} catch {0}) `
<# And the current percentage is greater than the previous one #>`
-and $percent -gt $oldpercent
) {
# Update the progress bar
$oldpercent = $percent
Write-Progress -Id 1 -ParentId 0 -Activity "Scanning for corruption" -Status "Running chkdsk... ($percent%)" -PercentComplete $percent
}
}
Write-Progress -Id 1 -ParentId 0 -Activity "Scanning for corruption" -Status "Running SFC..." -PercentComplete 0
$oldpercent = 0
# SFC has a bug when redirected which causes it to output only when the stdout buffer is full, causing the progress bar to move in chunks
sfc /scannow 2>&1 | ForEach-Object {
# Write stdout to the Verbose stream
Write-Verbose $_
# Filter for lines that contain a percentage that is greater than the previous one
if (
(
# Use a different method to get the percentage that accounts for SFC's Unicode output
[int]$percent = try {(
(
$_.Substring(
$_.IndexOf("n") + 2,
$_.IndexOf("%") - $_.IndexOf("n") - 2
).ToCharArray() | Where-Object {$_}
) -join ''
).TrimStart()} catch {0}
) -and $percent -gt $oldpercent
) {
# Update the progress bar
$oldpercent = $percent
Write-Progress -Id 1 -ParentId 0 -Activity "Scanning for corruption" -Status "Running SFC... ($percent%)" -PercentComplete $percent
}
}
Write-Progress -Id 1 -ParentId 0 -Activity "Scanning for corruption" -Status "Running DISM..." -PercentComplete 0
$oldpercent = 0
DISM /Online /Cleanup-Image /RestoreHealth | ForEach-Object {
# Write stdout to the Verbose stream
Write-Verbose $_
# Filter for lines that contain a percentage that is greater than the previous one
if (
($percent = try {
[int]($_ -replace "\[" -replace "=" -replace " " -replace "%" -replace "\]")
} catch {0}) `
-and $percent -gt $oldpercent
) {
# Update the progress bar
$oldpercent = $percent
Write-Progress -Id 1 -ParentId 0 -Activity "Scanning for corruption" -Status "Running DISM... ($percent%)" -PercentComplete $percent
}
}
Write-Progress -Id 1 -ParentId 0 -Activity "Scanning for corruption" -Status "Running SFC again..." -PercentComplete 0
$oldpercent = 0
sfc /scannow 2>&1 | ForEach-Object {
# Write stdout to the Verbose stream
Write-Verbose $_
# Filter for lines that contain a percentage that is greater than the previous one
if (
(
[int]$percent = try {(
(
$_.Substring(
$_.IndexOf("n") + 2,
$_.IndexOf("%") - $_.IndexOf("n") - 2
).ToCharArray() | Where-Object {$_}
) -join ''
).TrimStart()} catch {0}
) -and $percent -gt $oldpercent
) {
# Update the progress bar
$oldpercent = $percent
Write-Progress -Id 1 -ParentId 0 -Activity "Scanning for corruption" -Status "Running SFC... ($percent%)" -PercentComplete $percent
}
}
Write-Progress -Id 1 -ParentId 0 -Activity "Scanning for corruption" -Status "Completed" -PercentComplete 100
} }
@@ -220,9 +83,9 @@ function Invoke-WPFFixesUpdate {
# Reset the Security Descriptors on the Windows Update Services # Reset the Security Descriptors on the Windows Update Services
Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Resetting the WU Service Security Descriptors..." -PercentComplete 25 Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Resetting the WU Service Security Descriptors..." -PercentComplete 25
Write-Progress -Id 4 -ParentId 0 -Activity "Resetting the WU Service Security Descriptors" -Status "Resetting the BITS Security Descriptor..." -PercentComplete 0 Write-Progress -Id 4 -ParentId 0 -Activity "Resetting the WU Service Security Descriptors" -Status "Resetting the BITS Security Descriptor..." -PercentComplete 0
Start-Process -NoNewWindow -FilePath "sc.exe" -ArgumentList "sdset", "bits", "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)" Start-Process -NoNewWindow -FilePath "sc.exe" -ArgumentList "sdset", "bits", "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)" -Wait
Write-Progress -Id 4 -ParentId 0 -Activity "Resetting the WU Service Security Descriptors" -Status "Resetting the wuauserv Security Descriptor..." -PercentComplete 50 Write-Progress -Id 4 -ParentId 0 -Activity "Resetting the WU Service Security Descriptors" -Status "Resetting the wuauserv Security Descriptor..." -PercentComplete 50
Start-Process -NoNewWindow -FilePath "sc.exe" -ArgumentList "sdset", "wuauserv", "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)" Start-Process -NoNewWindow -FilePath "sc.exe" -ArgumentList "sdset", "wuauserv", "D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)" -Wait
Write-Progress -Id 4 -ParentId 0 -Activity "Resetting the WU Service Security Descriptors" -Status "Completed" -PercentComplete 100 Write-Progress -Id 4 -ParentId 0 -Activity "Resetting the WU Service Security Descriptors" -Status "Completed" -PercentComplete 100
} }
@@ -254,19 +117,53 @@ function Invoke-WPFFixesUpdate {
if (Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate") { if (Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate") {
Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Removing WSUS client settings..." -PercentComplete 60 Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Removing WSUS client settings..." -PercentComplete 60
Write-Progress -Id 6 -ParentId 0 -Activity "Removing WSUS client settings" -PercentComplete 0 Write-Progress -Id 6 -ParentId 0 -Activity "Removing WSUS client settings" -PercentComplete 0
Start-Process -NoNewWindow -FilePath "REG" -ArgumentList "DELETE", "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate", "/v", "AccountDomainSid", "/f" -RedirectStandardError $true Start-Process -NoNewWindow -FilePath "REG" -ArgumentList "DELETE", "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate", "/v", "AccountDomainSid", "/f" -RedirectStandardError "NUL"
Start-Process -NoNewWindow -FilePath "REG" -ArgumentList "DELETE", "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate", "/v", "PingID", "/f" -RedirectStandardError $true Start-Process -NoNewWindow -FilePath "REG" -ArgumentList "DELETE", "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate", "/v", "PingID", "/f" -RedirectStandardError "NUL"
Start-Process -NoNewWindow -FilePath "REG" -ArgumentList "DELETE", "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate", "/v", "SusClientId", "/f" -RedirectStandardError $true Start-Process -NoNewWindow -FilePath "REG" -ArgumentList "DELETE", "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate", "/v", "SusClientId", "/f" -RedirectStandardError "NUL"
Write-Progress -Id 6 -ParentId 0 -Activity "Removing WSUS client settings" -Status "Completed" -PercentComplete 100 Write-Progress -Id 6 -ParentId 0 -Activity "Removing WSUS client settings" -Status "Completed" -PercentComplete 100
} }
# Remove Group Policy Windows Update settings
Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Removing Group Policy Windows Update settings..." -PercentComplete 60
Write-Progress -Id 7 -ParentId 0 -Activity "Removing Group Policy Windows Update settings" -PercentComplete 0
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" -Name "ExcludeWUDriversInQualityUpdate" -ErrorAction SilentlyContinue
Write-Host "Defaulting driver offering through Windows Update..."
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Device Metadata" -Name "PreventDeviceMetadataFromNetwork" -ErrorAction SilentlyContinue
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DriverSearching" -Name "DontPromptForWindowsUpdate" -ErrorAction SilentlyContinue
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DriverSearching" -Name "DontSearchWindowsUpdate" -ErrorAction SilentlyContinue
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DriverSearching" -Name "DriverUpdateWizardWuSearchEnabled" -ErrorAction SilentlyContinue
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" -Name "ExcludeWUDriversInQualityUpdate" -ErrorAction SilentlyContinue
Write-Host "Defaulting Windows Update automatic restart..."
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "NoAutoRebootWithLoggedOnUsers" -ErrorAction SilentlyContinue
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "AUPowerManagement" -ErrorAction SilentlyContinue
Write-Host "Clearing ANY Windows Update Policy settings..."
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" -Name "BranchReadinessLevel" -ErrorAction SilentlyContinue
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" -Name "DeferFeatureUpdatesPeriodInDays" -ErrorAction SilentlyContinue
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" -Name "DeferQualityUpdatesPeriodInDays" -ErrorAction SilentlyContinue
Remove-Item -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item -Path "HKCU:\Software\Microsoft\WindowsSelfHost" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item -Path "HKCU:\Software\Policies" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item -Path "HKLM:\Software\Microsoft\Policies" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\WindowsStore\WindowsUpdate" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item -Path "HKLM:\Software\Microsoft\WindowsSelfHost" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item -Path "HKLM:\Software\Policies" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item -Path "HKLM:\Software\WOW6432Node\Microsoft\Policies" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item -Path "HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Policies" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item -Path "HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\WindowsStore\WindowsUpdate" -Recurse -Force -ErrorAction SilentlyContinue
Start-Process -NoNewWindow -FilePath "secedit" -ArgumentList "/configure", "/cfg", "$env:windir\inf\defltbase.inf", "/db", "defltbase.sdb", "/verbose" -Wait
Start-Process -NoNewWindow -FilePath "cmd.exe" -ArgumentList "/c RD /S /Q $env:WinDir\System32\GroupPolicyUsers" -Wait
Start-Process -NoNewWindow -FilePath "cmd.exe" -ArgumentList "/c RD /S /Q $env:WinDir\System32\GroupPolicy" -Wait
Start-Process -NoNewWindow -FilePath "gpupdate" -ArgumentList "/force" -Wait
Write-Progress -Id 7 -ParentId 0 -Activity "Removing Group Policy Windows Update settings" -Status "Completed" -PercentComplete 100
# Reset WinSock # Reset WinSock
Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Resetting WinSock..." -PercentComplete 65 Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Resetting WinSock..." -PercentComplete 65
Write-Progress -Id 7 -ParentId 0 -Activity "Resetting WinSock" -Status "Resetting WinSock..." -PercentComplete 0 Write-Progress -Id 7 -ParentId 0 -Activity "Resetting WinSock" -Status "Resetting WinSock..." -PercentComplete 0
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "winsock", "reset" -RedirectStandardOutput $true Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "winsock", "reset"
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "winhttp", "reset", "proxy" -RedirectStandardOutput $true Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "winhttp", "reset", "proxy"
Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "int", "ip", "reset" -RedirectStandardOutput $true Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "int", "ip", "reset"
Write-Progress -Id 7 -ParentId 0 -Activity "Resetting WinSock" -Status "Completed" -PercentComplete 100 Write-Progress -Id 7 -ParentId 0 -Activity "Resetting WinSock" -Status "Completed" -PercentComplete 100
@@ -295,11 +192,18 @@ function Invoke-WPFFixesUpdate {
# Force Windows Update to check for updates # Force Windows Update to check for updates
Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Forcing discovery..." -PercentComplete 95 Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Forcing discovery..." -PercentComplete 95
Write-Progress -Id 10 -ParentId 0 -Activity "Forcing discovery" -Status "Forcing discovery..." -PercentComplete 0 Write-Progress -Id 10 -ParentId 0 -Activity "Forcing discovery" -Status "Forcing discovery..." -PercentComplete 0
(New-Object -ComObject Microsoft.Update.AutoUpdate).DetectNow() try {
(New-Object -ComObject Microsoft.Update.AutoUpdate).DetectNow()
} catch {
Set-WinUtilTaskbaritem -state "Error" -overlay "warning"
Write-Warning "Failed to create Windows Update COM object: $_"
}
Start-Process -NoNewWindow -FilePath "wuauclt" -ArgumentList "/resetauthorization", "/detectnow" Start-Process -NoNewWindow -FilePath "wuauclt" -ArgumentList "/resetauthorization", "/detectnow"
Write-Progress -Id 10 -ParentId 0 -Activity "Forcing discovery" -Status "Completed" -PercentComplete 100 Write-Progress -Id 10 -ParentId 0 -Activity "Forcing discovery" -Status "Completed" -PercentComplete 100
Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Completed" -PercentComplete 100 Write-Progress -Id 0 -Activity "Repairing Windows Update" -Status "Completed" -PercentComplete 100
Set-WinUtilTaskbaritem -state "None" -overlay "checkmark"
$ButtonType = [System.Windows.MessageBoxButton]::OK $ButtonType = [System.Windows.MessageBoxButton]::OK
$MessageboxTitle = "Reset Windows Update " $MessageboxTitle = "Reset Windows Update "
$Messageboxbody = ("Stock settings loaded.`n Please reboot your computer") $Messageboxbody = ("Stock settings loaded.`n Please reboot your computer")
@@ -317,7 +221,7 @@ function Invoke-WPFFixesUpdate {
Write-Progress -Id 3 -Activity "Renaming/Removing Files" -Completed Write-Progress -Id 3 -Activity "Renaming/Removing Files" -Completed
Write-Progress -Id 4 -Activity "Resetting the WU Service Security Descriptors" -Completed Write-Progress -Id 4 -Activity "Resetting the WU Service Security Descriptors" -Completed
Write-Progress -Id 5 -Activity "Reregistering DLLs" -Completed Write-Progress -Id 5 -Activity "Reregistering DLLs" -Completed
Write-Progress -Id 6 -Activity "Removing WSUS client settings" -Completed Write-Progress -Id 6 -Activity "Removing Group Policy Windows Update settings" -Completed
Write-Progress -Id 7 -Activity "Resetting WinSock" -Completed Write-Progress -Id 7 -Activity "Resetting WinSock" -Completed
Write-Progress -Id 8 -Activity "Deleting BITS jobs" -Completed Write-Progress -Id 8 -Activity "Deleting BITS jobs" -Completed
Write-Progress -Id 9 -Activity "Starting Windows Update Services" -Completed Write-Progress -Id 9 -Activity "Starting Windows Update Services" -Completed
@@ -325,12 +229,3 @@ function Invoke-WPFFixesUpdate {
} }
``` ```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/feature.json)

View File

@@ -1,36 +1,6 @@
# WinGet Reinstall # WinGet Reinstall
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{
"Content": "WinGet Reinstall",
"category": "Fixes",
"panel": "1",
"Order": "a044_",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://christitustech.github.io/Winutil/dev/features/Fixes/Winget"
}
```
</details>
## Function: Invoke-WPFFixesWinget
```powershell
function Invoke-WPFFixesWinget { function Invoke-WPFFixesWinget {
<# <#
@@ -41,18 +11,17 @@ function Invoke-WPFFixesWinget {
BravoNorris for the fantastic idea of a button to reinstall winget BravoNorris for the fantastic idea of a button to reinstall winget
#> #>
# Install Choco if not already present # Install Choco if not already present
Install-WinutilChoco try {
Start-Process -FilePath "choco" -ArgumentList "install winget -y --force" -NoNewWindow -Wait Set-WinUtilTaskbaritem -state "Indeterminate" -overlay "logo"
Write-Host "==> Starting Winget Repair"
Install-WinUtilWinget -Force
} catch {
Write-Error "Failed to install winget: $_"
Set-WinUtilTaskbaritem -state "Error" -overlay "warning"
} finally {
Write-Host "==> Finished Winget Repair"
Set-WinUtilTaskbaritem -state "None" -overlay "checkmark"
}
} }
``` ```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/feature.json)

View File

@@ -1,14 +1,8 @@
---
weight: 3
---
## Features
### Fixes ### Fixes
- [Remove Adobe Creative Cloud](runadobecccleanertool/) - [Remove Adobe Creative Cloud](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/RunAdobeCCCleanerTool.md)
- [Reset Network](network/) - [Reset Network](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/Network.md)
- [Reset Windows Update](update/) - [Reset Windows Update](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/Update.md)
- [Set Up Autologin](autologin/) - [Set Up Autologin](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/Autologin.md)
- [System Corruption Scan](dism/) - [System Corruption Scan](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/CorruptionScan.md)
- [WinGet Reinstall](winget/) - [WinGet Reinstall](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/Winget.md)

View File

@@ -1,16 +1,10 @@
---
weight: 3
---
## Features
### Legacy Windows Panels ### Legacy Windows Panels
- [Control Panel](control/) - [Control Panel](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/control.md)
- [Network Connections](network/) - [Network Connections](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/network.md)
- [Power Panel](power/) - [Power Panel](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/power.md)
- [Printer Settings](printer/) - [Printer Settings](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/printer.md)
- [Region](region/) - [Region](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/region.md)
- [Sound Settings](sound/) - [Sound Settings](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/sound.md)
- [System Properties](system/) - [System Properties](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/system.md)
- [User Accounts](user/) - [User Accounts](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/user.md)

View File

@@ -1,35 +1,6 @@
# Control Panel # Control Panel
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{
"Content": "Control Panel",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://christitustech.github.io/Winutil/dev/features/Legacy-Windows-Panels/control"
}
```
</details>
## Function: Invoke-WPFControlPanel
```powershell
function Invoke-WPFControlPanel { function Invoke-WPFControlPanel {
<# <#
@@ -43,23 +14,17 @@ function Invoke-WPFControlPanel {
param($Panel) param($Panel)
switch ($Panel) { switch ($Panel) {
"WPFPanelcontrol" {cmd /c control} "WPFPanelControl" {control}
"WPFPanelnetwork" {cmd /c ncpa.cpl} "WPFPanelComputer" {compmgmt.msc}
"WPFPanelpower" {cmd /c powercfg.cpl} "WPFPanelNetwork" {ncpa.cpl}
"WPFPanelregion" {cmd /c intl.cpl} "WPFPanelPower" {powercfg.cpl}
"WPFPanelsound" {cmd /c mmsys.cpl} "WPFPanelPrinter" {Start-Process "shell:::{A8A91A66-3A7D-4424-8D24-04E180695C7A}"}
"WPFPanelsystem" {cmd /c sysdm.cpl} "WPFPanelRegion" {intl.cpl}
"WPFPaneluser" {cmd /c "control userpasswords2"} "WPFPanelRestore" {rstrui.exe}
"WPFPanelSound" {mmsys.cpl}
"WPFPanelSystem" {sysdm.cpl}
"WPFPanelTimedate" {timedate.cpl}
"WPFPanelUser" {control userpasswords2}
} }
} }
``` ```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/feature.json)

View File

@@ -1,35 +1,6 @@
# Network Connections # Network Connections
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{
"Content": "Network Connections",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://christitustech.github.io/Winutil/dev/features/Legacy-Windows-Panels/network"
}
```
</details>
## Function: Invoke-WPFControlPanel
```powershell
function Invoke-WPFControlPanel { function Invoke-WPFControlPanel {
<# <#
@@ -43,23 +14,17 @@ function Invoke-WPFControlPanel {
param($Panel) param($Panel)
switch ($Panel) { switch ($Panel) {
"WPFPanelcontrol" {cmd /c control} "WPFPanelControl" {control}
"WPFPanelnetwork" {cmd /c ncpa.cpl} "WPFPanelComputer" {compmgmt.msc}
"WPFPanelpower" {cmd /c powercfg.cpl} "WPFPanelNetwork" {ncpa.cpl}
"WPFPanelregion" {cmd /c intl.cpl} "WPFPanelPower" {powercfg.cpl}
"WPFPanelsound" {cmd /c mmsys.cpl} "WPFPanelPrinter" {Start-Process "shell:::{A8A91A66-3A7D-4424-8D24-04E180695C7A}"}
"WPFPanelsystem" {cmd /c sysdm.cpl} "WPFPanelRegion" {intl.cpl}
"WPFPaneluser" {cmd /c "control userpasswords2"} "WPFPanelRestore" {rstrui.exe}
"WPFPanelSound" {mmsys.cpl}
"WPFPanelSystem" {sysdm.cpl}
"WPFPanelTimedate" {timedate.cpl}
"WPFPanelUser" {control userpasswords2}
} }
} }
``` ```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/feature.json)

View File

@@ -1,35 +1,6 @@
# Power Panel # Power Panel
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{
"Content": "Power Panel",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://christitustech.github.io/Winutil/dev/features/Legacy-Windows-Panels/power"
}
```
</details>
## Function: Invoke-WPFControlPanel
```powershell
function Invoke-WPFControlPanel { function Invoke-WPFControlPanel {
<# <#
@@ -43,23 +14,17 @@ function Invoke-WPFControlPanel {
param($Panel) param($Panel)
switch ($Panel) { switch ($Panel) {
"WPFPanelcontrol" {cmd /c control} "WPFPanelControl" {control}
"WPFPanelnetwork" {cmd /c ncpa.cpl} "WPFPanelComputer" {compmgmt.msc}
"WPFPanelpower" {cmd /c powercfg.cpl} "WPFPanelNetwork" {ncpa.cpl}
"WPFPanelregion" {cmd /c intl.cpl} "WPFPanelPower" {powercfg.cpl}
"WPFPanelsound" {cmd /c mmsys.cpl} "WPFPanelPrinter" {Start-Process "shell:::{A8A91A66-3A7D-4424-8D24-04E180695C7A}"}
"WPFPanelsystem" {cmd /c sysdm.cpl} "WPFPanelRegion" {intl.cpl}
"WPFPaneluser" {cmd /c "control userpasswords2"} "WPFPanelRestore" {rstrui.exe}
"WPFPanelSound" {mmsys.cpl}
"WPFPanelSystem" {sysdm.cpl}
"WPFPanelTimedate" {timedate.cpl}
"WPFPanelUser" {control userpasswords2}
} }
} }
``` ```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/feature.json)

View File

@@ -1,34 +1,6 @@
# Printer Settings # Printer Settings
Last Updated: 2024-08-31
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{
"Content": "Printer Settings",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300"
}
```
</details>
## Function: Invoke-WPFControlPanel
```powershell
function Invoke-WPFControlPanel { function Invoke-WPFControlPanel {
<# <#
@@ -42,24 +14,17 @@ function Invoke-WPFControlPanel {
param($Panel) param($Panel)
switch ($Panel) { switch ($Panel) {
"WPFPanelcontrol" {cmd /c control} "WPFPanelControl" {control}
"WPFPanelnetwork" {cmd /c ncpa.cpl} "WPFPanelComputer" {compmgmt.msc}
"WPFPanelpower" {cmd /c powercfg.cpl} "WPFPanelNetwork" {ncpa.cpl}
"WPFPanelregion" {cmd /c intl.cpl} "WPFPanelPower" {powercfg.cpl}
"WPFPanelsound" {cmd /c mmsys.cpl} "WPFPanelPrinter" {Start-Process "shell:::{A8A91A66-3A7D-4424-8D24-04E180695C7A}"}
"WPFPanelprinter" {Start-Process "shell:::{A8A91A66-3A7D-4424-8D24-04E180695C7A}"} "WPFPanelRegion" {intl.cpl}
"WPFPanelsystem" {cmd /c sysdm.cpl} "WPFPanelRestore" {rstrui.exe}
"WPFPaneluser" {cmd /c "control userpasswords2"} "WPFPanelSound" {mmsys.cpl}
"WPFPanelSystem" {sysdm.cpl}
"WPFPanelTimedate" {timedate.cpl}
"WPFPanelUser" {control userpasswords2}
} }
} }
``` ```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/../config/feature.json)

View File

@@ -1,35 +1,6 @@
# Region # Region
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{
"Content": "Region",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://christitustech.github.io/Winutil/dev/features/Legacy-Windows-Panels/region"
}
```
</details>
## Function: Invoke-WPFControlPanel
```powershell
function Invoke-WPFControlPanel { function Invoke-WPFControlPanel {
<# <#
@@ -43,23 +14,17 @@ function Invoke-WPFControlPanel {
param($Panel) param($Panel)
switch ($Panel) { switch ($Panel) {
"WPFPanelcontrol" {cmd /c control} "WPFPanelControl" {control}
"WPFPanelnetwork" {cmd /c ncpa.cpl} "WPFPanelComputer" {compmgmt.msc}
"WPFPanelpower" {cmd /c powercfg.cpl} "WPFPanelNetwork" {ncpa.cpl}
"WPFPanelregion" {cmd /c intl.cpl} "WPFPanelPower" {powercfg.cpl}
"WPFPanelsound" {cmd /c mmsys.cpl} "WPFPanelPrinter" {Start-Process "shell:::{A8A91A66-3A7D-4424-8D24-04E180695C7A}"}
"WPFPanelsystem" {cmd /c sysdm.cpl} "WPFPanelRegion" {intl.cpl}
"WPFPaneluser" {cmd /c "control userpasswords2"} "WPFPanelRestore" {rstrui.exe}
"WPFPanelSound" {mmsys.cpl}
"WPFPanelSystem" {sysdm.cpl}
"WPFPanelTimedate" {timedate.cpl}
"WPFPanelUser" {control userpasswords2}
} }
} }
``` ```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/feature.json)

View File

@@ -1,35 +1,6 @@
# Sound Settings # Sound Settings
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{
"Content": "Sound Settings",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://christitustech.github.io/Winutil/dev/features/Legacy-Windows-Panels/sound"
}
```
</details>
## Function: Invoke-WPFControlPanel
```powershell
function Invoke-WPFControlPanel { function Invoke-WPFControlPanel {
<# <#
@@ -43,23 +14,17 @@ function Invoke-WPFControlPanel {
param($Panel) param($Panel)
switch ($Panel) { switch ($Panel) {
"WPFPanelcontrol" {cmd /c control} "WPFPanelControl" {control}
"WPFPanelnetwork" {cmd /c ncpa.cpl} "WPFPanelComputer" {compmgmt.msc}
"WPFPanelpower" {cmd /c powercfg.cpl} "WPFPanelNetwork" {ncpa.cpl}
"WPFPanelregion" {cmd /c intl.cpl} "WPFPanelPower" {powercfg.cpl}
"WPFPanelsound" {cmd /c mmsys.cpl} "WPFPanelPrinter" {Start-Process "shell:::{A8A91A66-3A7D-4424-8D24-04E180695C7A}"}
"WPFPanelsystem" {cmd /c sysdm.cpl} "WPFPanelRegion" {intl.cpl}
"WPFPaneluser" {cmd /c "control userpasswords2"} "WPFPanelRestore" {rstrui.exe}
"WPFPanelSound" {mmsys.cpl}
"WPFPanelSystem" {sysdm.cpl}
"WPFPanelTimedate" {timedate.cpl}
"WPFPanelUser" {control userpasswords2}
} }
} }
``` ```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/feature.json)

View File

@@ -1,35 +1,6 @@
# System Properties # System Properties
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{
"Content": "System Properties",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://christitustech.github.io/Winutil/dev/features/Legacy-Windows-Panels/system"
}
```
</details>
## Function: Invoke-WPFControlPanel
```powershell
function Invoke-WPFControlPanel { function Invoke-WPFControlPanel {
<# <#
@@ -43,23 +14,17 @@ function Invoke-WPFControlPanel {
param($Panel) param($Panel)
switch ($Panel) { switch ($Panel) {
"WPFPanelcontrol" {cmd /c control} "WPFPanelControl" {control}
"WPFPanelnetwork" {cmd /c ncpa.cpl} "WPFPanelComputer" {compmgmt.msc}
"WPFPanelpower" {cmd /c powercfg.cpl} "WPFPanelNetwork" {ncpa.cpl}
"WPFPanelregion" {cmd /c intl.cpl} "WPFPanelPower" {powercfg.cpl}
"WPFPanelsound" {cmd /c mmsys.cpl} "WPFPanelPrinter" {Start-Process "shell:::{A8A91A66-3A7D-4424-8D24-04E180695C7A}"}
"WPFPanelsystem" {cmd /c sysdm.cpl} "WPFPanelRegion" {intl.cpl}
"WPFPaneluser" {cmd /c "control userpasswords2"} "WPFPanelRestore" {rstrui.exe}
"WPFPanelSound" {mmsys.cpl}
"WPFPanelSystem" {sysdm.cpl}
"WPFPanelTimedate" {timedate.cpl}
"WPFPanelUser" {control userpasswords2}
} }
} }
``` ```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/feature.json)

View File

@@ -1,35 +1,6 @@
# User Accounts # User Accounts
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{
"Content": "User Accounts",
"category": "Legacy Windows Panels",
"panel": "2",
"Type": "Button",
"ButtonWidth": "300",
"link": "https://christitustech.github.io/Winutil/dev/features/Legacy-Windows-Panels/user"
}
```
</details>
## Function: Invoke-WPFControlPanel
```powershell
function Invoke-WPFControlPanel { function Invoke-WPFControlPanel {
<# <#
@@ -43,23 +14,17 @@ function Invoke-WPFControlPanel {
param($Panel) param($Panel)
switch ($Panel) { switch ($Panel) {
"WPFPanelcontrol" {cmd /c control} "WPFPanelControl" {control}
"WPFPanelnetwork" {cmd /c ncpa.cpl} "WPFPanelComputer" {compmgmt.msc}
"WPFPanelpower" {cmd /c powercfg.cpl} "WPFPanelNetwork" {ncpa.cpl}
"WPFPanelregion" {cmd /c intl.cpl} "WPFPanelPower" {powercfg.cpl}
"WPFPanelsound" {cmd /c mmsys.cpl} "WPFPanelPrinter" {Start-Process "shell:::{A8A91A66-3A7D-4424-8D24-04E180695C7A}"}
"WPFPanelsystem" {cmd /c sysdm.cpl} "WPFPanelRegion" {intl.cpl}
"WPFPaneluser" {cmd /c "control userpasswords2"} "WPFPanelRestore" {rstrui.exe}
"WPFPanelSound" {mmsys.cpl}
"WPFPanelSystem" {sysdm.cpl}
"WPFPanelTimedate" {timedate.cpl}
"WPFPanelUser" {control userpasswords2}
} }
} }
``` ```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/feature.json)

View File

@@ -1,40 +1,31 @@
---
weight: 2
---
# Table of Contents
## Features
### Fixes ### Fixes
- [Remove Adobe Creative Cloud](fixes/runadobecccleanertool/) - [Remove Adobe Creative Cloud](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/RunAdobeCCCleanerTool.md)
- [Reset Network](fixes/network/) - [Reset Network](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/Network.md)
- [Reset Windows Update](fixes/update/) - [Reset Windows Update](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/Update.md)
- [Set Up Autologin](fixes/autologin/) - [Set Up Autologin](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/Autologin.md)
- [System Corruption Scan](fixes/dism/) - [System Corruption Scan](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/CorruptionScan.md)
- [WinGet Reinstall](fixes/winget/) - [WinGet Reinstall](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Fixes/Winget.md)
### Legacy Windows Panels ### Legacy Windows Panels
- [Control Panel](legacy-windows-panels/control/) - [Control Panel](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/control.md/control.md)
- [Network Connections](legacy-windows-panels/network/) - [Network Connections](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/network.md)
- [Power Panel](legacy-windows-panels/power/) - [Power Panel](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/power.md)
- [Printer Settings](legacy-windows-panels/printer/) - [Printer Settings](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/printer.md)
- [Region](legacy-windows-panels/region/) - [Region](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/region.md)
- [Sound Settings](legacy-windows-panels/sound/) - [Sound Settings](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/sound.md)
- [System Properties](legacy-windows-panels/system/) - [System Properties](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/system.md)
- [User Accounts](legacy-windows-panels/user/) - [User Accounts](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Legacy-Windows-Panels/user.md)
### Features ### Features
- [All .Net Framework (2,3,4)](features/dotnet/) - [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](features/disablelegacyrecovery/) - [Disable Legacy F8 Boot Recovery](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/DisableLegacyRecovery.md)
- [Disable Search Box Web Suggestions in Registry(explorer restart)](features/disablesearchsuggestions/) - [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](features/regbackup/) - [Enable Daily Registry Backup Task 12.30am](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/RegBackup.md)
- [Enable Legacy F8 Boot Recovery](features/enablelegacyrecovery/) - [HyperV Virtualization](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/hyperv.md)
- [Enable Search Box Web Suggestions in Registry(explorer restart)](features/enablesearchsuggestions/) - [Legacy Media (WMP, DirectPlay)](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/legacymedia.md)
- [HyperV Virtualization](features/hyperv/) - [NFS - Network File System](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/nfs.md)
- [Install Features](features/install/) - [Windows Sandbox](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/Sandbox.md)
- [Legacy Media (wmp, directplay)](features/legacymedia/) - [Windows Subsystem for Linux](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/features/Features/wsl.md)
- [NFS - Network File System](features/nfs/)
- [Windows Sandbox](features/sandbox/)
- [Windows Subsystem for Linux](features/wsl/)

View File

@@ -1,76 +1,26 @@
# Bing Search in Start Menu # Bing Search in Start Menu
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
If enable then includes web search results from Bing in your Start Menu search.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{ "WPFToggleBingSearch": {
"Content": "Bing Search in Start Menu", "Content": "Bing Search in Start Menu",
"Description": "If enable then includes web search results from Bing in your Start Menu search.", "Description": "If enable then includes web search results from Bing in your Start Menu search.",
"category": "Customize Preferences", "category": "Customize Preferences",
"panel": "2", "panel": "2",
"Order": "a101_", "Order": "a101_",
"Type": "Toggle", "Type": "Toggle",
"link": "https://christitustech.github.io/Winutil/dev/tweaks/Customize-Preferences/BingSearch" "registry": [
} {
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Search",
"Name": "BingSearchEnabled",
"Value": "1",
"OriginalValue": "0",
"DefaultState": "true",
"Type": "DWord"
}
],
``` ```
</details> ## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
## Function: Invoke-WinutilBingSearch
```powershell
function Invoke-WinutilBingSearch {
<#
.SYNOPSIS
Disables/Enables Bing Search
.PARAMETER Enabled
Indicates whether to enable or disable Bing Search
#>
Param($Enabled)
try {
if ($Enabled -eq $false) {
Write-Host "Enabling Bing Search"
$value = 1
} else {
Write-Host "Disabling Bing Search"
$value = 0
}
$Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Search"
Set-ItemProperty -Path $Path -Name BingSearchEnabled -Value $value
} catch [System.Security.SecurityException] {
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
} catch [System.Management.Automation.ItemNotFoundException] {
Write-Warning $psitem.Exception.ErrorRecord
} catch {
Write-Warning "Unable to set $Name due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/tweaks.json)
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).

View File

@@ -1,78 +1,50 @@
# Dark Theme for Windows # Dark Theme for Windows
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Enable/Disable Dark Mode.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{ "WPFToggleDarkMode": {
"Content": "Dark Theme for Windows", "Content": "Dark Theme for Windows",
"Description": "Enable/Disable Dark Mode.", "Description": "Enable/Disable Dark Mode.",
"category": "Customize Preferences", "category": "Customize Preferences",
"panel": "2", "panel": "2",
"Order": "a100_", "Order": "a100_",
"Type": "Toggle", "Type": "Toggle",
"link": "https://christitustech.github.io/Winutil/dev/tweaks/Customize-Preferences/DarkMode" "registry": [
} {
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize",
"Name": "AppsUseLightTheme",
"Value": "0",
"OriginalValue": "1",
"DefaultState": "false",
"Type": "DWord"
},
{
"Path": "HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize",
"Name": "SystemUsesLightTheme",
"Value": "0",
"OriginalValue": "1",
"DefaultState": "false",
"Type": "DWord"
}
],
"InvokeScript": [
"
Invoke-WinUtilExplorerUpdate
if ($sync.ThemeButton.Content -eq [char]0xF08C) {
Invoke-WinutilThemeChange -theme \"Auto\"
}
"
],
"UndoScript": [
"
Invoke-WinUtilExplorerUpdate
if ($sync.ThemeButton.Content -eq [char]0xF08C) {
Invoke-WinutilThemeChange -theme \"Auto\"
}
"
],
``` ```
</details> ## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
## Function: Invoke-WinutilDarkMode
```powershell
Function Invoke-WinutilDarkMode {
<#
.SYNOPSIS
Enables/Disables Dark Mode
.PARAMETER DarkMoveEnabled
Indicates the current dark mode state
#>
Param($DarkMoveEnabled)
try {
if ($DarkMoveEnabled -eq $false) {
Write-Host "Enabling Dark Mode"
$DarkMoveValue = 0
} else {
Write-Host "Disabling Dark Mode"
$DarkMoveValue = 1
}
$Path = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize"
Set-ItemProperty -Path $Path -Name AppsUseLightTheme -Value $DarkMoveValue
Set-ItemProperty -Path $Path -Name SystemUsesLightTheme -Value $DarkMoveValue
} catch [System.Security.SecurityException] {
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
} catch [System.Management.Automation.ItemNotFoundException] {
Write-Warning $psitem.Exception.ErrorRecord
} catch {
Write-Warning "Unable to set $Name due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/tweaks.json)
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).

View File

@@ -1,76 +1,34 @@
# Detailed BSoD # Detailed BSoD
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
If Enabled then you will see a detailed Blue Screen of Death (BSOD) with more information.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{ "WPFToggleDetailedBSoD": {
"Content": "Detailed BSoD", "Content": "Detailed BSoD",
"Description": "If Enabled then you will see a detailed Blue Screen of Death (BSOD) with more information.", "Description": "If Enabled then you will see a detailed Blue Screen of Death (BSOD) with more information.",
"category": "Customize Preferences", "category": "Customize Preferences",
"panel": "2", "panel": "2",
"Order": "a205_", "Order": "a205_",
"Type": "Toggle", "Type": "Toggle",
"link": "https://christitustech.github.io/Winutil/dev/tweaks/Customize-Preferences/DetailedBSoD" "registry": [
} {
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\CrashControl",
"Name": "DisplayParameters",
"Value": "1",
"OriginalValue": "0",
"DefaultState": "false",
"Type": "DWord"
},
{
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\CrashControl",
"Name": "DisableEmoticon",
"Value": "1",
"OriginalValue": "0",
"DefaultState": "false",
"Type": "DWord"
}
],
``` ```
</details> ## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
## Function: Invoke-WinutilDetailedBSoD
```powershell
Function Invoke-WinutilDetailedBSoD {
<#
.SYNOPSIS
Enables/Disables Detailed BSoD
(Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\CrashControl' -Name 'DisplayParameters').DisplayParameters
#>
Param($Enabled)
try {
if ($Enabled -eq $false) {
Write-Host "Enabling Detailed BSoD"
$value = 1
} else {
Write-Host "Disabling Detailed BSoD"
$value =0
}
$Path = "HKLM:\SYSTEM\CurrentControlSet\Control\CrashControl"
Set-ItemProperty -Path $Path -Name DisplayParameters -Value $value
} catch [System.Security.SecurityException] {
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
} catch [System.Management.Automation.ItemNotFoundException] {
Write-Warning $psitem.Exception.ErrorRecord
} catch {
Write-Warning "Unable to set $Name due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/tweaks.json)
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).

View File

@@ -1,76 +1,36 @@
# Show Hidden Files # Show Hidden Files
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
If Enabled then Hidden Files will be shown.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{ "WPFToggleHiddenFiles": {
"Content": "Show Hidden Files", "Content": "Show Hidden Files",
"Description": "If Enabled then Hidden Files will be shown.", "Description": "If Enabled then Hidden Files will be shown.",
"category": "Customize Preferences", "category": "Customize Preferences",
"panel": "2", "panel": "2",
"Order": "a200_", "Order": "a200_",
"Type": "Toggle", "Type": "Toggle",
"link": "https://christitustech.github.io/Winutil/dev/tweaks/Customize-Preferences/HiddenFiles" "registry": [
} {
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
"Name": "Hidden",
"Value": "1",
"OriginalValue": "0",
"DefaultState": "false",
"Type": "DWord"
}
],
"InvokeScript": [
"
Invoke-WinUtilExplorerUpdate -action \"restart\"
"
],
"UndoScript": [
"
Invoke-WinUtilExplorerUpdate -action \"restart\"
"
],
``` ```
</details> ## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
## Function: Invoke-WinutilHiddenFiles
```powershell
function Invoke-WinutilHiddenFiles {
<#
.SYNOPSIS
Enable/Disable Hidden Files
.PARAMETER Enabled
Indicates whether to enable or disable Hidden Files
#>
Param($Enabled)
try {
if ($Enabled -eq $false) {
Write-Host "Enabling Hidden Files"
$value = 1
} else {
Write-Host "Disabling Hidden Files"
$value = 0
}
$Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
Set-ItemProperty -Path $Path -Name Hidden -Value $value
} catch [System.Security.SecurityException] {
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
} catch [System.Management.Automation.ItemNotFoundException] {
Write-Warning $psitem.Exception.ErrorRecord
} catch {
Write-Warning "Unable to set $Name due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/tweaks.json)
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).

View File

@@ -1,84 +1,42 @@
# Mouse Acceleration # Mouse Acceleration
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
If Enabled then Cursor movement is affected by the speed of your physical mouse movements.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{ "WPFToggleMouseAcceleration": {
"Content": "Mouse Acceleration", "Content": "Mouse Acceleration",
"Description": "If Enabled then Cursor movement is affected by the speed of your physical mouse movements.", "Description": "If Enabled then Cursor movement is affected by the speed of your physical mouse movements.",
"category": "Customize Preferences", "category": "Customize Preferences",
"panel": "2", "panel": "2",
"Order": "a107_", "Order": "a109_",
"Type": "Toggle", "Type": "Toggle",
"link": "https://christitustech.github.io/Winutil/dev/tweaks/Customize-Preferences/MouseAcceleration" "registry": [
} {
"Path": "HKCU:\\Control Panel\\Mouse",
"Name": "MouseSpeed",
"Value": "1",
"OriginalValue": "0",
"DefaultState": "true",
"Type": "DWord"
},
{
"Path": "HKCU:\\Control Panel\\Mouse",
"Name": "MouseThreshold1",
"Value": "6",
"OriginalValue": "0",
"DefaultState": "true",
"Type": "DWord"
},
{
"Path": "HKCU:\\Control Panel\\Mouse",
"Name": "MouseThreshold2",
"Value": "10",
"OriginalValue": "0",
"DefaultState": "true",
"Type": "DWord"
}
],
``` ```
</details> ## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
## Function: Invoke-WinutilMouseAcceleration
```powershell
Function Invoke-WinutilMouseAcceleration {
<#
.SYNOPSIS
Enables/Disables Mouse Acceleration
.PARAMETER DarkMoveEnabled
Indicates the current Mouse Acceleration State
#>
Param($MouseAccelerationEnabled)
try {
if ($MouseAccelerationEnabled -eq $false) {
Write-Host "Enabling Mouse Acceleration"
$MouseSpeed = 1
$MouseThreshold1 = 6
$MouseThreshold2 = 10
} else {
Write-Host "Disabling Mouse Acceleration"
$MouseSpeed = 0
$MouseThreshold1 = 0
$MouseThreshold2 = 0
}
$Path = "HKCU:\Control Panel\Mouse"
Set-ItemProperty -Path $Path -Name MouseSpeed -Value $MouseSpeed
Set-ItemProperty -Path $Path -Name MouseThreshold1 -Value $MouseThreshold1
Set-ItemProperty -Path $Path -Name MouseThreshold2 -Value $MouseThreshold2
} catch [System.Security.SecurityException] {
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
} catch [System.Management.Automation.ItemNotFoundException] {
Write-Warning $psitem.Exception.ErrorRecord
} catch {
Write-Warning "Unable to set $Name due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/tweaks.json)
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).

View File

@@ -1,77 +1,34 @@
# NumLock on Startup # NumLock on Startup
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Toggle the Num Lock key state when your computer starts.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{ "WPFToggleNumLock": {
"Content": "NumLock on Startup", "Content": "NumLock on Startup",
"Description": "Toggle the Num Lock key state when your computer starts.", "Description": "Toggle the Num Lock key state when your computer starts.",
"category": "Customize Preferences", "category": "Customize Preferences",
"panel": "2", "panel": "2",
"Order": "a102_", "Order": "a102_",
"Type": "Toggle", "Type": "Toggle",
"link": "https://christitustech.github.io/Winutil/dev/tweaks/Customize-Preferences/NumLock" "registry": [
} {
"Path": "HKU:\\.Default\\Control Panel\\Keyboard",
"Name": "InitialKeyboardIndicators",
"Value": "2",
"OriginalValue": "0",
"DefaultState": "false",
"Type": "DWord"
},
{
"Path": "HKCU:\\Control Panel\\Keyboard",
"Name": "InitialKeyboardIndicators",
"Value": "2",
"OriginalValue": "0",
"DefaultState": "false",
"Type": "DWord"
}
],
``` ```
</details> ## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
## Function: Invoke-WinutilNumLock
```powershell
function Invoke-WinutilNumLock {
<#
.SYNOPSIS
Disables/Enables NumLock on startup
.PARAMETER Enabled
Indicates whether to enable or disable Numlock on startup
#>
Param($Enabled)
try {
if ($Enabled -eq $false) {
Write-Host "Enabling Numlock on startup"
$value = 2
} else {
Write-Host "Disabling Numlock on startup"
$value = 0
}
New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS
$HKUPath = "HKU:\.Default\Control Panel\Keyboard"
$HKCUPath = "HKCU:\Control Panel\Keyboard"
Set-ItemProperty -Path $HKUPath -Name InitialKeyboardIndicators -Value $value
Set-ItemProperty -Path $HKCUPath -Name InitialKeyboardIndicators -Value $value
}
Catch [System.Security.SecurityException] {
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
} catch [System.Management.Automation.ItemNotFoundException] {
Write-Warning $psitem.Exception.ErrorRecord
} catch {
Write-Warning "Unable to set $Name due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/tweaks.json)
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).

View File

@@ -1,73 +1,36 @@
# Show File Extensions # Show File Extensions
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
If enabled then File extensions (e.g., .txt, .jpg) are visible.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{ "WPFToggleShowExt": {
"Content": "Show File Extensions", "Content": "Show File Extensions",
"Description": "If enabled then File extensions (e.g., .txt, .jpg) are visible.", "Description": "If enabled then File extensions (e.g., .txt, .jpg) are visible.",
"category": "Customize Preferences", "category": "Customize Preferences",
"panel": "2", "panel": "2",
"Order": "a201_", "Order": "a201_",
"Type": "Toggle", "Type": "Toggle",
"link": "https://christitustech.github.io/Winutil/dev/tweaks/Customize-Preferences/ShowExt" "registry": [
} {
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
"Name": "HideFileExt",
"Value": "0",
"OriginalValue": "1",
"DefaultState": "false",
"Type": "DWord"
}
],
"InvokeScript": [
"
Invoke-WinUtilExplorerUpdate -action \"restart\"
"
],
"UndoScript": [
"
Invoke-WinUtilExplorerUpdate -action \"restart\"
"
],
``` ```
</details> ## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
## Function: Invoke-WinutilShowExt
```powershell
function Invoke-WinutilShowExt {
<#
.SYNOPSIS
Disables/Enables Show file Extentions
.PARAMETER Enabled
Indicates whether to enable or disable Show file extentions
#>
Param($Enabled)
try {
if ($Enabled -eq $false) {
Write-Host "Showing file extentions"
$value = 0
} else {
Write-Host "hiding file extensions"
$value = 1
}
$Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
Set-ItemProperty -Path $Path -Name HideFileExt -Value $value
} catch [System.Security.SecurityException] {
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
} catch [System.Management.Automation.ItemNotFoundException] {
Write-Warning $psitem.Exception.ErrorRecord
} catch {
Write-Warning "Unable to set $Name due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/tweaks.json)
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).

View File

@@ -1,76 +1,36 @@
# Snap Assist Flyout # Snap Assist Flyout
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
If enabled then Snap preview is disabled when maximize button is hovered.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{ "WPFToggleSnapFlyout": {
"Content": "Snap Assist Flyout", "Content": "Snap Assist Flyout",
"Description": "If enabled then Snap preview is disabled when maximize button is hovered.", "Description": "If disabled then Snap preview is disabled when maximize button is hovered.",
"category": "Customize Preferences", "category": "Customize Preferences",
"panel": "2", "panel": "2",
"Order": "a105_", "Order": "a107_",
"Type": "Toggle", "Type": "Toggle",
"link": "https://christitustech.github.io/Winutil/dev/tweaks/Customize-Preferences/SnapFlyout" "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\"
"
],
``` ```
</details> ## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
## Function: Invoke-WinutilSnapFlyout
```powershell
function Invoke-WinutilSnapFlyout {
<#
.SYNOPSIS
Disables/Enables Snap Assist Flyout on startup
.PARAMETER Enabled
Indicates whether to enable or disable Snap Assist Flyout on startup
#>
Param($Enabled)
try {
if ($Enabled -eq $false) {
Write-Host "Enabling Snap Assist Flyout On startup"
$value = 1
} else {
Write-Host "Disabling Snap Assist Flyout On startup"
$value = 0
}
# taskkill.exe /F /IM "explorer.exe"
$Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
taskkill.exe /F /IM "explorer.exe"
Set-ItemProperty -Path $Path -Name EnableSnapAssistFlyout -Value $value
Start-Process "explorer.exe"
} catch [System.Security.SecurityException] {
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
} catch [System.Management.Automation.ItemNotFoundException] {
Write-Warning $psitem.Exception.ErrorRecord
} catch {
Write-Warning "Unable to set $Name due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/tweaks.json)
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).

View File

@@ -1,76 +1,36 @@
# Snap Assist Suggestion # Snap Assist Suggestion
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
If enabled then you will get suggestions to snap other applications in the left over spaces.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{ "WPFToggleSnapSuggestion": {
"Content": "Snap Assist Suggestion", "Content": "Snap Assist Suggestion",
"Description": "If enabled then you will get suggestions to snap other applications in the left over spaces.", "Description": "If enabled then you will get suggestions to snap other applications in the left over spaces.",
"category": "Customize Preferences", "category": "Customize Preferences",
"panel": "2", "panel": "2",
"Order": "a106_", "Order": "a108_",
"Type": "Toggle", "Type": "Toggle",
"link": "https://christitustech.github.io/Winutil/dev/tweaks/Customize-Preferences/SnapSuggestion" "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\"
"
],
``` ```
</details> ## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
## Function: Invoke-WinutilSnapSuggestion
```powershell
function Invoke-WinutilSnapSuggestion {
<#
.SYNOPSIS
Disables/Enables Snap Assist Suggestions on startup
.PARAMETER Enabled
Indicates whether to enable or disable Snap Assist Suggestions on startup
#>
Param($Enabled)
try {
if ($Enabled -eq $false) {
Write-Host "Enabling Snap Assist Suggestion On startup"
$value = 1
} else {
Write-Host "Disabling Snap Assist Suggestion On startup"
$value = 0
}
# taskkill.exe /F /IM "explorer.exe"
$Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
taskkill.exe /F /IM "explorer.exe"
Set-ItemProperty -Path $Path -Name SnapAssist -Value $value
Start-Process "explorer.exe"
} catch [System.Security.SecurityException] {
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
} catch [System.Management.Automation.ItemNotFoundException] {
Write-Warning $psitem.Exception.ErrorRecord
} catch {
Write-Warning "Unable to set $Name due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/tweaks.json)
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).

View File

@@ -1,73 +1,26 @@
# Snap Window # Snap Window
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
If enabled you can align windows by dragging them. | Relogin Required
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{ "WPFToggleSnapWindow": {
"Content": "Snap Window", "Content": "Snap Window",
"Description": "If enabled you can align windows by dragging them. | Relogin Required", "Description": "If enabled you can align windows by dragging them. | Relogin Required",
"category": "Customize Preferences", "category": "Customize Preferences",
"panel": "2", "panel": "2",
"Order": "a104_", "Order": "a106_",
"Type": "Toggle", "Type": "Toggle",
"link": "https://christitustech.github.io/Winutil/dev/tweaks/Customize-Preferences/SnapWindow" "registry": [
} {
"Path": "HKCU:\\Control Panel\\Desktop",
"Name": "WindowArrangementActive",
"Value": "1",
"OriginalValue": "0",
"DefaultState": "true",
"Type": "String"
}
],
``` ```
</details> ## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
## Function: Invoke-WinutilSnapWindow
```powershell
function Invoke-WinutilSnapWindow {
<#
.SYNOPSIS
Disables/Enables Snapping Windows on startup
.PARAMETER Enabled
Indicates whether to enable or disable Snapping Windows on startup
#>
Param($Enabled)
try {
if ($Enabled -eq $false) {
Write-Host "Enabling Snap Windows On startup | Relogin Required"
$value = 1
} else {
Write-Host "Disabling Snap Windows On startup | Relogin Required"
$value = 0
}
$Path = "HKCU:\Control Panel\Desktop"
Set-ItemProperty -Path $Path -Name WindowArrangementActive -Value $value
} catch [System.Security.SecurityException] {
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
} catch [System.Management.Automation.ItemNotFoundException] {
Write-Warning $psitem.Exception.ErrorRecord
} catch {
Write-Warning "Unable to set $Name due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/tweaks.json)
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).

View File

@@ -1,73 +1,26 @@
# Sticky Keys # Sticky Keys
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
If Enabled then Sticky Keys is activated - Sticky keys is an accessibility feature of some graphical user interfaces which assists users who have physical disabilities or help users reduce repetitive strain injury.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{ "WPFToggleStickyKeys": {
"Content": "Sticky Keys", "Content": "Sticky Keys",
"Description": "If Enabled then Sticky Keys is activated - Sticky keys is an accessibility feature of some graphical user interfaces which assists users who have physical disabilities or help users reduce repetitive strain injury.", "Description": "If Enabled then Sticky Keys is activated - Sticky keys is an accessibility feature of some graphical user interfaces which assists users who have physical disabilities or help users reduce repetitive strain injury.",
"category": "Customize Preferences", "category": "Customize Preferences",
"panel": "2", "panel": "2",
"Order": "a108_", "Order": "a110_",
"Type": "Toggle", "Type": "Toggle",
"link": "https://christitustech.github.io/Winutil/dev/tweaks/Customize-Preferences/StickyKeys" "registry": [
} {
"Path": "HKCU:\\Control Panel\\Accessibility\\StickyKeys",
"Name": "Flags",
"Value": "510",
"OriginalValue": "58",
"DefaultState": "true",
"Type": "DWord"
}
],
``` ```
</details> ## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
## Function: Invoke-WinutilStickyKeys
```powershell
Function Invoke-WinutilStickyKeys {
<#
.SYNOPSIS
Disables/Enables Sticky Keyss on startup
.PARAMETER Enabled
Indicates whether to enable or disable Sticky Keys on startup
#>
Param($Enabled)
try {
if ($Enabled -eq $false) {
Write-Host "Enabling Sticky Keys On startup"
$value = 510
} else {
Write-Host "Disabling Sticky Keys On startup"
$value = 58
}
$Path = "HKCU:\Control Panel\Accessibility\StickyKeys"
Set-ItemProperty -Path $Path -Name Flags -Value $value
} catch [System.Security.SecurityException] {
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
} catch [System.Management.Automation.ItemNotFoundException] {
Write-Warning $psitem.Exception.ErrorRecord
} catch {
Write-Warning "Unable to set $Name due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/tweaks.json)
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).

View File

@@ -1,76 +1,26 @@
# Task View Button in Taskbar # Task View Button in Taskbar
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
If Enabled then Task View Button in Taskbar will be shown.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{ "WPFToggleTaskView": {
"Content": "Task View Button in Taskbar", "Content": "Task View Button in Taskbar",
"Description": "If Enabled then Task View Button in Taskbar will be shown.", "Description": "If Enabled then Task View Button in Taskbar will be shown.",
"category": "Customize Preferences", "category": "Customize Preferences",
"panel": "2", "panel": "2",
"Order": "a203_", "Order": "a203_",
"Type": "Toggle", "Type": "Toggle",
"link": "https://christitustech.github.io/Winutil/dev/tweaks/Customize-Preferences/TaskView" "registry": [
} {
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
"Name": "ShowTaskViewButton",
"Value": "1",
"OriginalValue": "0",
"DefaultState": "true",
"Type": "DWord"
}
],
``` ```
</details> ## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
## Function: Invoke-WinutilTaskView
```powershell
function Invoke-WinutilTaskView {
<#
.SYNOPSIS
Enable/Disable Task View
.PARAMETER Enabled
Indicates whether to enable or disable Task View
#>
Param($Enabled)
try {
if ($Enabled -eq $false) {
Write-Host "Enabling Task View"
$value = 1
} else {
Write-Host "Disabling Task View"
$value = 0
}
$Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
Set-ItemProperty -Path $Path -Name ShowTaskViewButton -Value $value
} catch [System.Security.SecurityException] {
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
} catch [System.Management.Automation.ItemNotFoundException] {
Write-Warning $psitem.Exception.ErrorRecord
} catch {
Write-Warning "Unable to set $Name due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/tweaks.json)
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).

View File

@@ -1,76 +1,26 @@
# Center Taskbar Items # Center Taskbar Items
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
[Windows 11] If Enabled then the Taskbar Items will be shown on the Center, otherwise the Taskbar Items will be shown on the Left.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{ "WPFToggleTaskbarAlignment": {
"Content": "Center Taskbar Items", "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.", "Description": "[Windows 11] If Enabled then the Taskbar Items will be shown on the Center, otherwise the Taskbar Items will be shown on the Left.",
"category": "Customize Preferences", "category": "Customize Preferences",
"panel": "2", "panel": "2",
"Order": "a204_", "Order": "a204_",
"Type": "Toggle", "Type": "Toggle",
"link": "https://christitustech.github.io/Winutil/dev/tweaks/Customize-Preferences/TaskbarAlignment" "registry": [
} {
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
"Name": "TaskbarAl",
"Value": "1",
"OriginalValue": "0",
"DefaultState": "true",
"Type": "DWord"
}
],
``` ```
</details> ## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
## Function: Invoke-WinutilTaskbarAlignment
```powershell
function Invoke-WinutilTaskbarAlignment {
<#
.SYNOPSIS
Switches between Center & Left Taskbar Alignment
.PARAMETER Enabled
Indicates whether to make Taskbar Alignment Center or Left
#>
Param($Enabled)
try {
if ($Enabled -eq $false) {
Write-Host "Making Taskbar Alignment to the Center"
$value = 1
} else {
Write-Host "Making Taskbar Alignment to the Left"
$value = 0
}
$Path = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
Set-ItemProperty -Path $Path -Name "TaskbarAl" -Value $value
} catch [System.Security.SecurityException] {
Write-Warning "Unable to set $Path\$Name to $value due to a Security Exception"
} catch [System.Management.Automation.ItemNotFoundException] {
Write-Warning $psitem.Exception.ErrorRecord
} catch {
Write-Warning "Unable to set $Name due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/tweaks.json)
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).

View File

@@ -1,76 +1,26 @@
# Search Button in Taskbar # Search Button in Taskbar
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
If Enabled Search Button will be on the taskbar.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{ "WPFToggleTaskbarSearch": {
"Content": "Search Button in Taskbar", "Content": "Search Button in Taskbar",
"Description": "If Enabled Search Button will be on the taskbar.", "Description": "If Enabled Search Button will be on the taskbar.",
"category": "Customize Preferences", "category": "Customize Preferences",
"panel": "2", "panel": "2",
"Order": "a202_", "Order": "a202_",
"Type": "Toggle", "Type": "Toggle",
"link": "https://christitustech.github.io/Winutil/dev/tweaks/Customize-Preferences/TaskbarSearch" "registry": [
} {
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Search",
"Name": "SearchboxTaskbarMode",
"Value": "1",
"OriginalValue": "0",
"DefaultState": "true",
"Type": "DWord"
}
],
``` ```
</details> ## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
## Function: Invoke-WinutilTaskbarSearch
```powershell
function Invoke-WinutilTaskbarSearch {
<#
.SYNOPSIS
Enable/Disable Taskbar Search Button.
.PARAMETER Enabled
Indicates whether to enable or disable Taskbar Search Button.
#>
Param($Enabled)
try {
if ($Enabled -eq $false) {
Write-Host "Enabling Search Button"
$value = 1
} else {
Write-Host "Disabling Search Button"
$value = 0
}
$Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Search\"
Set-ItemProperty -Path $Path -Name SearchboxTaskbarMode -Value $value
} catch [System.Security.SecurityException] {
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
} catch [System.Management.Automation.ItemNotFoundException] {
Write-Warning $psitem.Exception.ErrorRecord
} catch {
Write-Warning "Unable to set $Name due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/tweaks.json)
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).

View File

@@ -1,76 +1,26 @@
# Widgets Button in Taskbar # Widgets Button in Taskbar
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
If Enabled then Widgets Button in Taskbar will be shown.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{ "WPFToggleTaskbarWidgets": {
"Content": "Widgets Button in Taskbar", "Content": "Widgets Button in Taskbar",
"Description": "If Enabled then Widgets Button in Taskbar will be shown.", "Description": "If Enabled then Widgets Button in Taskbar will be shown.",
"category": "Customize Preferences", "category": "Customize Preferences",
"panel": "2", "panel": "2",
"Order": "a204_", "Order": "a204_",
"Type": "Toggle", "Type": "Toggle",
"link": "https://christitustech.github.io/Winutil/dev/tweaks/Customize-Preferences/TaskbarWidgets" "registry": [
} {
"Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
"Name": "TaskbarDa",
"Value": "1",
"OriginalValue": "0",
"DefaultState": "true",
"Type": "DWord"
}
],
``` ```
</details> ## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
## Function: Invoke-WinutilTaskbarWidgets
```powershell
function Invoke-WinutilTaskbarWidgets {
<#
.SYNOPSIS
Enable/Disable Taskbar Widgets
.PARAMETER Enabled
Indicates whether to enable or disable Taskbar Widgets
#>
Param($Enabled)
try {
if ($Enabled -eq $false) {
Write-Host "Enabling Taskbar Widgets"
$value = 1
} else {
Write-Host "Disabling Taskbar Widgets"
$value = 0
}
$Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"
Set-ItemProperty -Path $Path -Name TaskbarDa -Value $value
} catch [System.Security.SecurityException] {
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
} catch [System.Management.Automation.ItemNotFoundException] {
Write-Warning $psitem.Exception.ErrorRecord
} catch {
Write-Warning "Unable to set $Name due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/tweaks.json)
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).

View File

@@ -1,73 +1,26 @@
# Verbose Messages During Logon # Verbose Messages During Logon
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Show detailed messages during the login process for troubleshooting and diagnostics.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{ "WPFToggleVerboseLogon": {
"Content": "Verbose Messages During Logon", "Content": "Verbose Messages During Logon",
"Description": "Show detailed messages during the login process for troubleshooting and diagnostics.", "Description": "Show detailed messages during the login process for troubleshooting and diagnostics.",
"category": "Customize Preferences", "category": "Customize Preferences",
"panel": "2", "panel": "2",
"Order": "a103_", "Order": "a103_",
"Type": "Toggle", "Type": "Toggle",
"link": "https://christitustech.github.io/Winutil/dev/tweaks/Customize-Preferences/VerboseLogon" "registry": [
} {
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System",
"Name": "VerboseStatus",
"Value": "1",
"OriginalValue": "0",
"DefaultState": "false",
"Type": "DWord"
}
],
``` ```
</details> ## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
## Function: Invoke-WinutilVerboseLogon
```powershell
function Invoke-WinutilVerboseLogon {
<#
.SYNOPSIS
Disables/Enables VerboseLogon Messages
.PARAMETER Enabled
Indicates whether to enable or disable VerboseLogon messages
#>
Param($Enabled)
try {
if ($Enabled -eq $false) {
Write-Host "Enabling Verbose Logon Messages"
$value = 1
} else {
Write-Host "Disabling Verbose Logon Messages"
$value = 0
}
$Path = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System"
Set-ItemProperty -Path $Path -Name VerboseStatus -Value $value
} catch [System.Security.SecurityException] {
Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception"
} catch [System.Management.Automation.ItemNotFoundException] {
Write-Warning $psitem.Exception.ErrorRecord
} catch {
Write-Warning "Unable to set $Name due to unhandled exception"
Write-Warning $psitem.Exception.StackTrace
}
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/tweaks.json)
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).

View File

@@ -1,26 +1,18 @@
---
weight: 3
---
# Table of Contents
## Tweaks
### Customize Preferences ### Customize Preferences
- [Bing Search in Start Menu](bingsearch/) - [Bing Search in Start Menu](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/BingSearch.md)
- [Center Taskbar Items](taskbaralignment/) - [Center Taskbar Items](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/TaskbarAlignment.md)
- [Dark Theme for Windows](darkmode/) - [Dark Theme for Windows](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/DarkMode.md)
- [Detailed BSoD](detailedbsod/) - [Detailed BSoD](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/DetailedBSoD.md)
- [Mouse Acceleration](mouseacceleration/) - [Mouse Acceleration](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/MouseAcceleration.md)
- [NumLock on Startup](numlock/) - [NumLock on Startup](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/NumLock.md)
- [Search Button in Taskbar](taskbarsearch/) - [Search Button in Taskbar](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/TaskbarSearch.md)
- [Show File Extensions](showext/) - [Show File Extensions](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/ShowExt.md)
- [Show Hidden Files](hiddenfiles/) - [Show Hidden Files](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/HiddenFiles.md)
- [Snap Assist Flyout](snapflyout/) - [Snap Assist Flyout](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/SnapFlyout.md)
- [Snap Assist Suggestion](snapsuggestion/) - [Snap Assist Suggestion](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/SnapSuggestion.md)
- [Snap Window](snapwindow/) - [Snap Window](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/SnapWindow.md)
- [Sticky Keys](stickykeys/) - [Sticky Keys](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/StickyKeys.md)
- [Task View Button in Taskbar](taskview/) - [Task View Button in Taskbar](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/TaskView.md)
- [Verbose Messages During Logon](verboselogon/) - [Verbose Messages During Logon](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/VerboseLogon.md)
- [Widgets Button in Taskbar](taskbarwidgets/) - [Widgets Button in Taskbar](https://github.com/ChrisTitusTech/winutil/blob/main/docs/content/dev/tweaks/Customize-Preferences/TaskbarWidgets.md)

View File

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

View File

@@ -0,0 +1,38 @@
# Disable Activity History
```json
"WPFTweaksActivity": {
"Content": "Disable Activity History",
"Description": "This erases recent docs, clipboard, and run history.",
"category": "Essential Tweaks",
"panel": "1",
"Order": "a005_",
"registry": [
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\System",
"Name": "EnableActivityFeed",
"Type": "DWord",
"Value": "0",
"OriginalValue": "<RemoveEntry>"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\System",
"Name": "PublishUserActivities",
"Type": "DWord",
"Value": "0",
"OriginalValue": "<RemoveEntry>"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\System",
"Name": "UploadUserActivities",
"Type": "DWord",
"Value": "0",
"OriginalValue": "<RemoveEntry>"
}
],
```
## 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).

View File

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

View File

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

View File

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

View File

@@ -1,91 +0,0 @@
# Disable Microsoft Recall
Last Updated: 2024-10-24
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Disables MS Recall built into Windows since 24H2.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
"WPFTweaksRecallOff": {
"Content": "Disable Recall",
"Description": "Turn Recall off",
"category": "Essential Tweaks",
"panel": "1",
"Order": "a011_",
"registry": [
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsAI",
"Name": "DisableAIDataAnalysis",
"Type": "DWord",
"Value": "1",
"OriginalValue": "0"
}
],
"InvokeScript": [
"
Write-Host \"Disable Recall\"
DISM /Online /Disable-Feature /FeatureName:Recall
"
],
"UndoScript": [
"
Write-Host \"Enable Recall\"
DISM /Online /Enable-Feature /FeatureName:Recall
"
],
"link": "https://christitustech.github.io/Winutil/dev/tweaks/Essential-Tweaks/DisableRecall"
},
```
</details>
## Invoke Script
```powershell
Write-Host "Disable Recall"
DISM /Online /Disable-Feature /FeatureName:Recall
```
## Undo Script
```powershell
Write-Host "Enable Recall"
DISM /Online /Enable-Feature /FeatureName:Recall
```
## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
You can find information about the registry on [Wikipedia](https://www.wikiwand.com/en/Windows_Registry) and [Microsoft's Website](https://learn.microsoft.com/en-us/windows/win32/sysinfo/registry).
### Registry Key: DisableAIDataAnalysis
**Type:** DWord
**Original Value:** 0
**New Value:** 1
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/tweaks.json)

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,52 @@
# Disable GameDVR
```json
"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",
"panel": "1",
"Order": "a005_",
"registry": [
{
"Path": "HKCU:\\System\\GameConfigStore",
"Name": "GameDVR_FSEBehavior",
"Value": "2",
"OriginalValue": "1",
"Type": "DWord"
},
{
"Path": "HKCU:\\System\\GameConfigStore",
"Name": "GameDVR_Enabled",
"Value": "0",
"OriginalValue": "1",
"Type": "DWord"
},
{
"Path": "HKCU:\\System\\GameConfigStore",
"Name": "GameDVR_HonorUserFSEBehaviorMode",
"Value": "1",
"OriginalValue": "0",
"Type": "DWord"
},
{
"Path": "HKCU:\\System\\GameConfigStore",
"Name": "GameDVR_EFSEFeatureFlags",
"Value": "0",
"OriginalValue": "1",
"Type": "DWord"
},
{
"Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\GameDVR",
"Name": "AllowGameDVR",
"Value": "0",
"OriginalValue": "<RemoveEntry>",
"Type": "DWord"
}
],
```
## 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).

View File

@@ -1,96 +0,0 @@
# Disable Hibernation
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Hibernation is really meant for laptops as it saves what's in memory before turning the pc off. It really should never be used, but some people are lazy and rely on it. Don't be like Bob. Bob likes hibernation.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Disable Hibernation",
"Description": "Hibernation is really meant for laptops as it saves what's in memory before turning the pc off. It really should never be used, but some people are lazy and rely on it. Don't be like Bob. Bob likes hibernation.",
"category": "Essential Tweaks",
"panel": "1",
"Order": "a005_",
"registry": [
{
"Path": "HKLM:\\System\\CurrentControlSet\\Control\\Session Manager\\Power",
"Name": "HibernateEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FlyoutMenuSettings",
"Name": "ShowHibernateOption",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
}
],
"InvokeScript": [
"powercfg.exe /hibernate off"
],
"UndoScript": [
"powercfg.exe /hibernate on"
],
"link": "https://christitustech.github.io/Winutil/dev/tweaks/Essential-Tweaks/Hiber"
}
```
</details>
## Invoke Script
```powershell
powercfg.exe /hibernate off
```
## Undo Script
```powershell
powercfg.exe /hibernate on
```
## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
You can find information about the registry on [Wikipedia](https://www.wikiwand.com/en/Windows_Registry) and [Microsoft's Website](https://learn.microsoft.com/en-us/windows/win32/sysinfo/registry).
### Registry Key: HibernateEnabled
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: ShowHibernateOption
**Type:** DWord
**Original Value:** 1
**New Value:** 0
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/tweaks.json)

View File

@@ -0,0 +1,37 @@
# Disable Hibernation
```json
"WPFTweaksHiber": {
"Content": "Disable Hibernation",
"Description": "Hibernation is really meant for laptops as it saves what's in memory before turning the pc off. It really should never be used",
"category": "Essential Tweaks",
"panel": "1",
"Order": "a005_",
"registry": [
{
"Path": "HKLM:\\System\\CurrentControlSet\\Control\\Session Manager\\Power",
"Name": "HibernateEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FlyoutMenuSettings",
"Name": "ShowHibernateOption",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
}
],
"InvokeScript": [
"powercfg.exe /hibernate off"
],
"UndoScript": [
"powercfg.exe /hibernate on"
],
```
## 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).

View File

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

View File

@@ -1,63 +1,24 @@
# Prefer IPv4 over IPv6 # Prefer IPv4 over IPv6
Last Updated: 2024-08-27
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
To set the IPv4 preference can have latency and security benefits on private networks where IPv6 is not configured.
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{ "WPFTweaksIPv46": {
"Content": "Prefer IPv4 over IPv6", "Content": "Prefer IPv4 over IPv6",
"Description": "To set the IPv4 preference can have latency and security benefits on private networks where IPv6 is not configured.", "Description": "To set the IPv4 preference can have latency and security benefits on private networks where IPv6 is not configured.",
"category": "Essential Tweaks", "category": "z__Advanced Tweaks - CAUTION",
"panel": "1", "panel": "1",
"Order": "a005_", "Order": "a027_",
"registry": [ "registry": [
{ {
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Services\\Tcpip6\\Parameters", "Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Services\\Tcpip6\\Parameters",
"Name": "DisabledComponents", "Name": "DisabledComponents",
"Value": "32", "Value": "32",
"OriginalValue": "0", "OriginalValue": "0",
"Type": "DWord" "Type": "DWord"
} }
], ],
"link": "https://christitustech.github.io/Winutil/dev/tweaks/Essential-Tweaks/IPv46"
}
``` ```
</details>
## Registry Changes ## 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. 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). You can find information about the registry on [Wikipedia](https://www.wikiwand.com/en/Windows_Registry) and [Microsoft's Website](https://learn.microsoft.com/en-us/windows/win32/sysinfo/registry).
### Registry Key: DisabledComponents
**Type:** DWord
**Original Value:** 0
**New Value:** 32
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/tweaks.json)

View File

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

View File

@@ -1,108 +0,0 @@
# Disable Location Tracking
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Disables Location Tracking...DUH!
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json
{
"Content": "Disable Location Tracking",
"Description": "Disables Location Tracking...DUH!",
"category": "Essential Tweaks",
"panel": "1",
"Order": "a005_",
"registry": [
{
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\CapabilityAccessManager\\ConsentStore\\location",
"Name": "Value",
"Type": "String",
"Value": "Deny",
"OriginalValue": "Allow"
},
{
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Sensor\\Overrides\\{BFA794E4-F964-4FDB-90F6-51056BFE4B44}",
"Name": "SensorPermissionState",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Services\\lfsvc\\Service\\Configuration",
"Name": "Status",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SYSTEM\\Maps",
"Name": "AutoUpdateEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
}
],
"link": "https://christitustech.github.io/Winutil/dev/tweaks/Essential-Tweaks/Loc"
}
```
</details>
## Registry Changes
Applications and System Components store and retrieve configuration data to modify windows settings, so we can use the registry to change many settings in one place.
You can find information about the registry on [Wikipedia](https://www.wikiwand.com/en/Windows_Registry) and [Microsoft's Website](https://learn.microsoft.com/en-us/windows/win32/sysinfo/registry).
### Registry Key: Value
**Type:** String
**Original Value:** Allow
**New Value:** Deny
### Registry Key: SensorPermissionState
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: Status
**Type:** DWord
**Original Value:** 1
**New Value:** 0
### Registry Key: AutoUpdateEnabled
**Type:** DWord
**Original Value:** 1
**New Value:** 0
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/tweaks.json)

View File

@@ -0,0 +1,45 @@
# Disable Location Tracking
```json
"WPFTweaksLocation": {
"Content": "Disable Location Tracking",
"Description": "Disables Location Tracking...DUH!",
"category": "Essential Tweaks",
"panel": "1",
"Order": "a005_",
"registry": [
{
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\CapabilityAccessManager\\ConsentStore\\location",
"Name": "Value",
"Type": "String",
"Value": "Deny",
"OriginalValue": "Allow"
},
{
"Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Sensor\\Overrides\\{BFA794E4-F964-4FDB-90F6-51056BFE4B44}",
"Name": "SensorPermissionState",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Services\\lfsvc\\Service\\Configuration",
"Name": "Status",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
},
{
"Path": "HKLM:\\SYSTEM\\Maps",
"Name": "AutoUpdateEnabled",
"Type": "DWord",
"Value": "0",
"OriginalValue": "1"
}
],
```
## 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).

View File

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

View File

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

View File

@@ -1,139 +1,30 @@
# Create Restore Point # Create Restore Point
Last Updated: 2024-08-07
> [!NOTE]
The Development Documentation is auto generated for every compilation of Winutil, meaning a part of it will always stay up-to-date. **Developers do have the ability to add custom content, which won't be updated automatically.**
## Description
Creates a restore point at runtime in case a revert is needed from Winutil modifications
<!-- BEGIN CUSTOM CONTENT -->
<!-- END CUSTOM CONTENT -->
<details>
<summary>Preview Code</summary>
```json ```json
{ "WPFTweaksRestorePoint": {
"Content": "Create Restore Point", "Content": "Create Restore Point",
"Description": "Creates a restore point at runtime in case a revert is needed from Winutil modifications", "Description": "Creates a restore point at runtime in case a revert is needed from WinUtil modifications",
"category": "Essential Tweaks", "category": "Essential Tweaks",
"panel": "1", "panel": "1",
"Checked": "False", "Checked": "False",
"Order": "a001_", "Order": "a001_",
"InvokeScript": [ "registry": [
" {
# Check if the user has administrative privileges "Path": "HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SystemRestore",
if (-Not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { "Name": "SystemRestorePointCreationFrequency",
Write-Host \"Please run this script as an administrator.\" "Type": "DWord",
return "Value": "0",
} "OriginalValue": "1440"
}
# Check if System Restore is enabled for the main drive ],
try { "InvokeScript": [
# Try getting restore points to check if System Restore is enabled
Enable-ComputerRestore -Drive \"$env:SystemDrive\"
} catch {
Write-Host \"An error occurred while enabling System Restore: $_\"
}
# Check if the SystemRestorePointCreationFrequency value exists
$exists = Get-ItemProperty -path \"HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SystemRestore\" -Name \"SystemRestorePointCreationFrequency\" -ErrorAction SilentlyContinue
if($null -eq $exists) {
write-host 'Changing system to allow multiple restore points per day'
Set-ItemProperty -Path \"HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SystemRestore\" -Name \"SystemRestorePointCreationFrequency\" -Value \"0\" -Type DWord -Force -ErrorAction Stop | Out-Null
}
# Attempt to load the required module for Get-ComputerRestorePoint
try {
Import-Module Microsoft.PowerShell.Management -ErrorAction Stop
} catch {
Write-Host \"Failed to load the Microsoft.PowerShell.Management module: $_\"
return
}
# Get all the restore points for the current day
try {
$existingRestorePoints = Get-ComputerRestorePoint | Where-Object { $_.CreationTime.Date -eq (Get-Date).Date }
} catch {
Write-Host \"Failed to retrieve restore points: $_\"
return
}
# Check if there is already a restore point created today
if ($existingRestorePoints.Count -eq 0) {
$description = \"System Restore Point created by Winutil\"
Checkpoint-Computer -Description $description -RestorePointType \"MODIFY_SETTINGS\"
Write-Host -ForegroundColor Green \"System Restore Point Created Successfully\"
}
" "
], if (-not (Get-ComputerRestorePoint)) {
"link": "https://christitustech.github.io/Winutil/dev/tweaks/Essential-Tweaks/RestorePoint" Enable-ComputerRestore -Drive $Env:SystemDrive
} }
Checkpoint-Computer -Description \"System Restore Point created by WinUtil\" -RestorePointType MODIFY_SETTINGS
Write-Host \"System Restore Point Created Successfully\" -ForegroundColor Green
"
],
``` ```
</details>
## Invoke Script
```powershell
# Check if the user has administrative privileges
if (-Not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
Write-Host "Please run this script as an administrator."
return
}
# Check if System Restore is enabled for the main drive
try {
# Try getting restore points to check if System Restore is enabled
Enable-ComputerRestore -Drive "$env:SystemDrive"
} catch {
Write-Host "An error occurred while enabling System Restore: $_"
}
# Check if the SystemRestorePointCreationFrequency value exists
$exists = Get-ItemProperty -path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRestore" -Name "SystemRestorePointCreationFrequency" -ErrorAction SilentlyContinue
if($null -eq $exists) {
write-host 'Changing system to allow multiple restore points per day'
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SystemRestore" -Name "SystemRestorePointCreationFrequency" -Value "0" -Type DWord -Force -ErrorAction Stop | Out-Null
}
# Attempt to load the required module for Get-ComputerRestorePoint
try {
Import-Module Microsoft.PowerShell.Management -ErrorAction Stop
} catch {
Write-Host "Failed to load the Microsoft.PowerShell.Management module: $_"
return
}
# Get all the restore points for the current day
try {
$existingRestorePoints = Get-ComputerRestorePoint | Where-Object { $_.CreationTime.Date -eq (Get-Date).Date }
} catch {
Write-Host "Failed to retrieve restore points: $_"
return
}
# Check if there is already a restore point created today
if ($existingRestorePoints.Count -eq 0) {
$description = "System Restore Point created by Winutil"
Checkpoint-Computer -Description $description -RestorePointType "MODIFY_SETTINGS"
Write-Host -ForegroundColor Green "System Restore Point Created Successfully"
}
```
<!-- BEGIN SECOND CUSTOM CONTENT -->
<!-- END SECOND CUSTOM CONTENT -->
[View the JSON file](https://github.com/ChrisTitusTech/Winutil/tree/main/config/tweaks.json)

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