├── .gitattributes ├── .github ├── CODEOWNERS ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md ├── PULL_REQUEST_TEMPLATE.md ├── SECURITY.md ├── dependabot.yml ├── mkdocs.yml ├── release-drafter.yml ├── requirements.txt └── workflows │ ├── close-discussion-on-pr.yaml │ ├── close-issue-command.yaml │ ├── close-old-issues.yaml │ ├── compile-check.yaml │ ├── github-pages.yaml │ ├── pre-release.yaml │ ├── remove-winutil.yaml │ ├── sponsors.yaml │ └── unittests.yaml ├── .gitignore ├── Compile.ps1 ├── LICENSE ├── README.md ├── config ├── applications.json ├── autounattend.xml ├── dns.json ├── feature.json ├── preset.json ├── themes.json └── tweaks.json ├── docs ├── KnownIssues.md ├── assets │ ├── Commit-GHD.png │ ├── Compile.png │ ├── Create-Branch.png │ ├── Discard-GHD.png │ ├── Fork-Button-Dark.png │ ├── Fork-Button-Light.png │ ├── Get-Installed-Dark.png │ ├── Get-Installed-Light.png │ ├── Install-Tab-Dark.png │ ├── Install-Tab-Light.png │ ├── MicroWinScreen.png │ ├── Microwin-Dark.png │ ├── Microwin-Light.png │ ├── Push-Commit.png │ ├── Screen.png │ ├── Settings-Export-Dark.png │ ├── Settings-Export-Light.png │ ├── Title-Screen.png │ ├── Tweaks-Tab-Dark.png │ ├── Tweaks-Tab-Light.png │ └── favicon.png ├── contribute.md ├── dev │ ├── features │ │ ├── Features │ │ │ ├── DisableLegacyRecovery.md │ │ │ ├── DisableSearchSuggestions.md │ │ │ ├── EnableLegacyRecovery.md │ │ │ ├── EnableSearchSuggestions.md │ │ │ ├── Install.md │ │ │ ├── RegBackup.md │ │ │ ├── Sandbox.md │ │ │ ├── dotnet.md │ │ │ ├── hyperv.md │ │ │ ├── legacymedia.md │ │ │ ├── nfs.md │ │ │ └── wsl.md │ │ ├── Fixes │ │ │ ├── Autologin.md │ │ │ ├── DISM.md │ │ │ ├── Network.md │ │ │ ├── RunAdobeCCCleanerTool.md │ │ │ ├── Update.md │ │ │ └── Winget.md │ │ └── Legacy-Windows-Panels │ │ │ ├── control.md │ │ │ ├── network.md │ │ │ ├── power.md │ │ │ ├── printer.md │ │ │ ├── region.md │ │ │ ├── sound.md │ │ │ ├── system.md │ │ │ └── user.md │ └── tweaks │ │ ├── Customize-Preferences │ │ ├── BingSearch.md │ │ ├── DarkMode.md │ │ ├── DetailedBSoD.md │ │ ├── HiddenFiles.md │ │ ├── MouseAcceleration.md │ │ ├── NumLock.md │ │ ├── ShowExt.md │ │ ├── SnapFlyout.md │ │ ├── SnapSuggestion.md │ │ ├── SnapWindow.md │ │ ├── StickyKeys.md │ │ ├── TaskView.md │ │ ├── TaskbarAlignment.md │ │ ├── TaskbarSearch.md │ │ ├── TaskbarWidgets.md │ │ └── VerboseLogon.md │ │ ├── Essential-Tweaks │ │ ├── AH.md │ │ ├── ConsumerFeatures.md │ │ ├── DVR.md │ │ ├── DeleteTempFiles.md │ │ ├── DiskCleanup.md │ │ ├── EdgeDebloat.md │ │ ├── EndTaskOnTaskbar.md │ │ ├── Hiber.md │ │ ├── Home.md │ │ ├── IPv46.md │ │ ├── LaptopHibernation.md │ │ ├── Loc.md │ │ ├── Powershell7.md │ │ ├── Powershell7Tele.md │ │ ├── RestorePoint.md │ │ ├── Services.md │ │ ├── Storage.md │ │ ├── Tele.md │ │ └── Wifi.md │ │ ├── Performance-Plans │ │ ├── AddUltPerf.md │ │ └── RemoveUltPerf.md │ │ ├── Shortcuts │ │ └── Shortcut.md │ │ └── z--Advanced-Tweaks---CAUTION │ │ ├── BlockAdobeNet.md │ │ ├── DeBloat.md │ │ ├── DebloatAdobe.md │ │ ├── DisableBGapps.md │ │ ├── DisableFSO.md │ │ ├── DisableLMS1.md │ │ ├── DisableNotifications.md │ │ ├── Disableipsix.md │ │ ├── Display.md │ │ ├── OOSUbutton.md │ │ ├── RemoveCopilot.md │ │ ├── RemoveEdge.md │ │ ├── RemoveHomeGallery.md │ │ ├── RemoveOnedrive.md │ │ ├── RightClickMenu.md │ │ ├── Teredo.md │ │ ├── UTC.md │ │ ├── Undoall.md │ │ ├── button.md │ │ └── changedns.md ├── devdocs.md ├── faq.md ├── index.md ├── stylesheets │ └── extra.css └── userguide.md ├── functions ├── private │ ├── Copy-Files.ps1 │ ├── Get-LocalizedYesNo.ps1 │ ├── Get-Oscdimg.ps1 │ ├── Get-WPFObjectName.ps1 │ ├── Get-WinUtilCheckBoxes.ps1 │ ├── Get-WinUtilInstallerProcess.ps1 │ ├── Get-WinUtilToggleStatus.ps1 │ ├── Get-WinUtilVariables.ps1 │ ├── Get-WinUtilWingetLatest.ps1 │ ├── Get-WinUtilWingetPrerequisites.ps1 │ ├── Install-WinUtilChoco.ps1 │ ├── Install-WinUtilProgramChoco.ps1 │ ├── Install-WinUtilProgramWinget.ps1 │ ├── Install-WinUtilWinget.ps1 │ ├── Invoke-WinUtilAssets.ps1 │ ├── Invoke-WinUtilBingSearch.ps1 │ ├── Invoke-WinUtilCurrentSystem.ps1 │ ├── Invoke-WinUtilDarkMode.ps1 │ ├── Invoke-WinUtilDetailedBSoD.ps1 │ ├── Invoke-WinUtilFeatureInstall.ps1 │ ├── Invoke-WinUtilGPU.ps1 │ ├── Invoke-WinUtilHiddenFiles.ps1 │ ├── Invoke-WinUtilMicroWin-Helper.ps1 │ ├── Invoke-WinUtilMouseAcceleration.ps1 │ ├── Invoke-WinUtilNumLock.ps1 │ ├── Invoke-WinUtilScript.ps1 │ ├── Invoke-WinUtilShowExt.ps1 │ ├── Invoke-WinUtilSnapFlyout.ps1 │ ├── Invoke-WinUtilSnapSuggestion.ps1 │ ├── Invoke-WinUtilSnapWindow.ps1 │ ├── Invoke-WinUtilSponsors.ps1 │ ├── Invoke-WinUtilStickyKeys.ps1 │ ├── Invoke-WinUtilTaskView.ps1 │ ├── Invoke-WinUtilTaskbarAlignment.ps1 │ ├── Invoke-WinUtilTaskbarSearch.ps1 │ ├── Invoke-WinUtilTaskbarWidgets.ps1 │ ├── Invoke-WinUtilTweaks.ps1 │ ├── Invoke-WinUtilVerboseLogon.ps1 │ ├── Invoke-WinUtilpsProfile.ps1 │ ├── Remove-WinUtilAPPX.ps1 │ ├── Set-WinUtilDNS.ps1 │ ├── Set-WinUtilProgressbar.ps1 │ ├── Set-WinUtilRegistry.ps1 │ ├── Set-WinUtilScheduledTask.ps1 │ ├── Set-WinUtilService.ps1 │ ├── Set-WinUtilTaskbarItem.ps1 │ ├── Set-WinUtilUITheme.ps1 │ ├── Show-CustomDialog.ps1 │ ├── Test-WinUtilPackageManager.ps1 │ ├── Uninstall-WinUtilEdgeBrowser.ps1 │ └── Update-WinUtilProgramWinget.ps1 └── public │ ├── Invoke-ScratchDialog.ps1 │ ├── Invoke-WPFButton.ps1 │ ├── Invoke-WPFCloseButton.ps1 │ ├── Invoke-WPFControlPanel.ps1 │ ├── Invoke-WPFFeatureInstall.ps1 │ ├── Invoke-WPFFixesNetwork.ps1 │ ├── Invoke-WPFFixesUpdate.ps1 │ ├── Invoke-WPFFixesWinget.ps1 │ ├── Invoke-WPFFormVariables.ps1 │ ├── Invoke-WPFGetInstalled.ps1 │ ├── Invoke-WPFGetIso.ps1 │ ├── Invoke-WPFImpex.ps1 │ ├── Invoke-WPFInstall.ps1 │ ├── Invoke-WPFInstallUpgrade.ps1 │ ├── Invoke-WPFMicrowin.ps1 │ ├── Invoke-WPFOOSU.ps1 │ ├── Invoke-WPFPanelAutologin.ps1 │ ├── Invoke-WPFPanelDISM.ps1 │ ├── Invoke-WPFPresets.ps1 │ ├── Invoke-WPFRunAdobeCCCleanerTool.ps1 │ ├── Invoke-WPFRunspace.ps1 │ ├── Invoke-WPFShortcut.ps1 │ ├── Invoke-WPFTab.ps1 │ ├── Invoke-WPFToggle.ps1 │ ├── Invoke-WPFTweakPS7.ps1 │ ├── Invoke-WPFUIElements.ps1 │ ├── Invoke-WPFUltimatePerformance.ps1 │ ├── Invoke-WPFUnInstall.ps1 │ ├── Invoke-WPFUpdatesdefault.ps1 │ ├── Invoke-WPFUpdatesdisable.ps1 │ ├── Invoke-WPFUpdatessecurity.ps1 │ ├── Invoke-WPFtweaksbutton.ps1 │ └── Invoke-WPFundoall.ps1 ├── lint └── PSScriptAnalyser.ps1 ├── overrides └── main.html ├── pester ├── configs.Tests.ps1 └── functions.Tests.ps1 ├── releases └── oscdimg.exe ├── scripts ├── main.ps1 └── start.ps1 ├── tools ├── Invoke-Preprocessing.ps1 └── devdocs-generator.ps1 ├── windev.ps1 ├── winget.ps1 └── xaml └── inputXML.xaml /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | 3 | *.ps1 text eol=crlf 4 | *.json text eol=crlf 5 | *.cfg text eol=crlf 6 | 7 | *.png binary 8 | *.jpg binary 9 | 10 | config/* diff 11 | config/applications.json diff 12 | *.json diff 13 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # This is a comment. 2 | # Each line is a file pattern followed by one or more owners. 3 | 4 | # These owners will be the default owners for everything in 5 | # the repo. Unless a later match takes precedence, 6 | # @global-owner1 and @global-owner2 will be requested for 7 | # review when someone opens a pull request. 8 | * @ChrisTitusTech 9 | 10 | # Order is important; the last matching pattern takes the most 11 | # precedence. When someone opens a pull request that only 12 | # modifies JS files, only @js-owner and not the global 13 | # owner(s) will be requested for a review. 14 | # *.js @js-owner #This is an inline comment. 15 | 16 | # You can also use email addresses if you prefer. They'll be 17 | # used to look up users just like we do for commit author 18 | # emails. 19 | # *.go docs@example.com 20 | 21 | # Teams can be specified as code owners as well. Teams should 22 | # be identified in the format @org/team-name. Teams must have 23 | # explicit write access to the repository. In this example, 24 | # the octocats team in the octo-org organization owns all .txt files. 25 | # *.txt @octo-org/octocats 26 | 27 | # In this example, @doctocat owns any files in the build/logs 28 | # directory at the root of the repository and any of its 29 | # subdirectories. 30 | # /build/logs/ @doctocat 31 | 32 | # The `docs/*` pattern will match files like 33 | # `docs/getting-started.md` but not further nested files like 34 | # `docs/build-app/troubleshooting.md`. 35 | # docs/* docs@example.com 36 | 37 | # In this example, @octocat owns any file in an apps directory 38 | # anywhere in your repository. 39 | # apps/ @octocat 40 | 41 | # In this example, @doctocat owns any file in the `/docs` 42 | # directory in the root of your repository and any of its 43 | # subdirectories. 44 | # /docs/ @doctocat 45 | 46 | # In this example, any change inside the `/scripts` directory 47 | # will require approval from @doctocat or @octocat. 48 | # /scripts/ @doctocat @octocat 49 | 50 | # In this example, @octocat owns any file in a `/logs` directory such as 51 | # `/build/logs`, `/scripts/logs`, and `/deeply/nested/logs`. Any changes 52 | # in a `/logs` directory will require approval from @octocat. 53 | # **/logs @octocat 54 | 55 | # In this example, @octocat owns any file in the `/apps` 56 | # directory in the root of your repository except for the `/apps/github` 57 | # subdirectory, as its owners are left empty. 58 | # /apps/ @octocat 59 | # /apps/github -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | custom: https://www.cttstore.com/windows-toolbox 2 | github: christitustech 3 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: 'bug' 6 | assignees: '' 7 | --- 8 | 9 | ## Describe the bug 10 | 11 | 12 | ## To Reproduce 13 | Steps to reproduce the behavior: 14 | 1. Go to '...' 15 | 2. Click on '....' 16 | 3. Scroll down to '....' 17 | 4. See error 18 | 19 | ## Expected behavior 20 | 21 | 22 | ## Screenshots 23 | 24 | 25 | ## Additional context 26 | 27 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: 'enhancement' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | 12 | 13 | **Describe the solution you'd like** 14 | 15 | 16 | **Describe alternatives you've considered** 17 | 18 | 19 | **Additional context** 20 | 21 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Type of Change 4 | - [ ] New feature 5 | - [ ] Bug fix 6 | - [ ] Documentation update 7 | - [ ] Refactoring 8 | - [ ] Hotfix 9 | - [ ] Security patch 10 | - [ ] UI/UX improvement 11 | 12 | ## Description 13 | 14 | 15 | ## Testing 16 | 17 | 18 | ## Impact 19 | 20 | 21 | ## Issue related to PR 22 | 23 | - Resolves # 24 | 25 | ## Additional Information 26 | 27 | 28 | ## Checklist 29 | - [ ] My code adheres to the coding and style guidelines of the project. 30 | - [ ] I have performed a self-review of my own code. 31 | - [ ] I have commented my code, particularly in hard-to-understand areas. 32 | - [ ] I have made corresponding changes to the documentation. 33 | - [ ] My changes generate no errors/warnings/merge conflicts. 34 | -------------------------------------------------------------------------------- /.github/SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | If you find a security issue please make post it in the issues tab. If you think it should be private you can email me at contact@christitus.com. 4 | 5 | For immediate response check out our discord server @ [![](https://dcbadge.limes.pink/api/server/https://discord.gg/RUbZUZyByQ?theme=default-inverted&style=for-the-badge)](https://discord.gg/RUbZUZyByQ) 6 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "github-actions" 4 | directory: "/" 5 | schedule: 6 | interval: "weekly" 7 | ignore: 8 | - dependency-name: "actions/stale" 9 | versions: '>= 9' 10 | -------------------------------------------------------------------------------- /.github/mkdocs.yml: -------------------------------------------------------------------------------- 1 | site_name: WinUtil Documentation 2 | docs_dir: '../docs' 3 | repo_url: https://github.com/ChrisTitusTech/winutil 4 | 5 | nav: 6 | - Introduction: 'index.md' 7 | - User Guide: 'userguide.md' 8 | - Contributing Guide: 'contribute.md' 9 | - Documentation: 10 | - Dev Docs: 'devdocs.md' 11 | - Known Issues: 'KnownIssues.md' 12 | - FAQ: 'faq.md' 13 | 14 | theme: 15 | name: material 16 | custom_dir: '../overrides' 17 | features: 18 | - navigation.tabs 19 | - navigation.sections 20 | - toc.integrate 21 | - navigation.top 22 | - search.suggest 23 | - search.highlight 24 | - content.tabs.link 25 | - content.code.annotation 26 | - content.code.copy 27 | language: en 28 | logo: assets/favicon.png 29 | favicon: assets/favicon.png 30 | palette: 31 | # Palette toggle for automatic mode 32 | - media: "(prefers-color-scheme)" 33 | toggle: 34 | icon: material/brightness-auto 35 | name: Switch to light mode 36 | 37 | # Palette toggle for light mode 38 | - media: "(prefers-color-scheme: light)" 39 | scheme: default 40 | accent: blue 41 | toggle: 42 | icon: material/brightness-7 43 | name: Switch to dark mode 44 | 45 | # Palette toggle for dark mode 46 | - media: "(prefers-color-scheme: dark)" 47 | scheme: slate 48 | primary: black 49 | accent: blue 50 | toggle: 51 | icon: material/weather-night 52 | name: Switch to light mode 53 | markdown_extensions: 54 | - admonition 55 | - pymdownx.details 56 | - pymdownx.superfences 57 | - pymdownx.superfences: 58 | custom_fences: 59 | - name: mermaid 60 | class: mermaid 61 | format: !!python/name:pymdownx.superfences.fence_code_format 62 | - abbr 63 | - attr_list 64 | - pymdownx.snippets 65 | - md_in_html 66 | - pymdownx.superfences 67 | - pymdownx.tabbed: 68 | alternate_style: true 69 | - pymdownx.highlight: 70 | anchor_linenums: true 71 | line_spans: __span 72 | pygments_lang_class: true 73 | - pymdownx.inlinehilite 74 | - def_list 75 | - pymdownx.tasklist: 76 | custom_checkbox: true 77 | - toc: 78 | permalink: true 79 | 80 | plugins: 81 | - search 82 | - awesome-pages 83 | - git-revision-date-localized 84 | - minify: 85 | minify_html: true 86 | htmlmin_opts: 87 | remove_comments: true 88 | cache_safe: true 89 | -------------------------------------------------------------------------------- /.github/release-drafter.yml: -------------------------------------------------------------------------------- 1 | tag-prefix: '' 2 | categories: 3 | - title: '🚀 Features' 4 | labels: 5 | - 'feature' 6 | - 'enhancement' 7 | - title: '🐛 Bug Fixes' 8 | labels: 9 | - 'fix' 10 | - 'bugfix' 11 | - 'bug' 12 | - title: '📚 Documentation' 13 | label: 'documentation' 14 | - title: '🔒 Security' 15 | label: 'security' 16 | change-template: '- $TITLE @$AUTHOR (#$NUMBER)' 17 | template: | 18 | ## Changes 19 | 20 | $CHANGES 21 | 22 | change-title-escapes: '\<*_&"''' 23 | autolabeler: 24 | - label: 'documentation' 25 | files: 26 | - '*.md' 27 | branch: 28 | - '/docs{0,1}\/.+/' 29 | - label: 'bug' 30 | branch: 31 | - '/fix\/.+/' 32 | title: 33 | - '/fix/i' 34 | - label: 'enhancement' 35 | branch: 36 | - '/feature\/.+/' 37 | body: 38 | - '/[A-Z]+-[0-9]+/' 39 | - label: 'documentation' 40 | files: 41 | - '**/*.md' 42 | - 'docs/**/*' 43 | - label: 'security' 44 | branch: 45 | - '/security\/.+/' 46 | replacers: 47 | - search: /"/g 48 | replace: '' 49 | - search: /'/g 50 | replace: '' 51 | exclude-labels: 52 | - 'skip-changelog' 53 | 54 | filter-by-commitish: true 55 | -------------------------------------------------------------------------------- /.github/requirements.txt: -------------------------------------------------------------------------------- 1 | Babel==2.15.0 2 | bracex==2.5 3 | cairocffi==1.7.1 4 | CairoSVG==2.7.1 5 | certifi==2024.7.4 6 | cffi==1.17.0 7 | charset-normalizer==3.3.2 8 | click==8.1.7 9 | colorama==0.4.6 10 | csscompressor==0.9.5 11 | cssselect2==0.7.0 12 | defusedxml==0.7.1 13 | ghp-import==2.1.0 14 | gitdb==4.0.11 15 | GitPython==3.1.43 16 | htmlmin2==0.1.13 17 | idna==3.7 18 | Jinja2==3.1.4 19 | jsmin==3.0.1 20 | Markdown==3.6 21 | MarkupSafe==2.1.5 22 | mergedeep==1.3.4 23 | mkdocs==1.6.0 24 | mkdocs-awesome-pages-plugin==2.9.3 25 | mkdocs-get-deps==0.2.0 26 | mkdocs-git-revision-date-localized-plugin==1.2.6 27 | mkdocs-material==9.5.31 28 | mkdocs-material-extensions==1.3.1 29 | mkdocs-minify-plugin==0.8.0 30 | natsort==8.4.0 31 | packaging==24.1 32 | paginate==0.5.6 33 | pathspec==0.12.1 34 | pillow==10.4.0 35 | platformdirs==4.2.2 36 | pycparser==2.22 37 | Pygments==2.18.0 38 | pymdown-extensions==10.9 39 | python-dateutil==2.9.0.post0 40 | pytz==2024.1 41 | PyYAML==6.0.2 42 | pyyaml_env_tag==0.1 43 | regex==2024.7.24 44 | requests==2.32.3 45 | six==1.16.0 46 | smmap==5.0.1 47 | tinycss2==1.3.0 48 | urllib3==2.2.2 49 | watchdog==4.0.1 50 | wcmatch==9.0 51 | webencodings==0.5.1 52 | -------------------------------------------------------------------------------- /.github/workflows/close-discussion-on-pr.yaml: -------------------------------------------------------------------------------- 1 | name: Close Discussion on PR Merge 2 | 3 | on: 4 | pull_request: 5 | types: [closed] 6 | 7 | jobs: 8 | closeDiscussion: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Checkout repository 12 | uses: actions/checkout@v4 13 | 14 | - name: Check if PR was merged 15 | if: github.event.pull_request.merged == true 16 | run: echo "PR was merged" 17 | 18 | - name: Extract Discussion Number & Close If any Were Found 19 | env: 20 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 21 | if: github.event.pull_request.merged == true 22 | id: extract-discussion 23 | run: | 24 | pr_body="${{ github.event.pull_request.body }}" 25 | discussion_ids=$(echo "$pr_body" | grep -oP '(?i)(resolve|fix|close)[s|d]? #\K[0-9]+') 26 | 27 | if [ -z "$discussion_ids" ]; then 28 | echo "No discussion IDs found." 29 | exit 0 30 | fi 31 | 32 | for discussion_id in $discussion_ids; do 33 | echo "Attempting to close discussion #$discussion_id" 34 | response=$(curl -s -X PATCH -H "Authorization: token $GITHUB_TOKEN" \ 35 | -H "Accept: application/vnd.github.v3+json" \ 36 | -d '{"state": "closed"}' \ 37 | "https://api.github.com/repos/${{ github.repository }}/discussions/$discussion_id") 38 | 39 | if echo "$response" | jq -e '.id' > /dev/null; then 40 | echo "Successfully closed discussion #$discussion_id" 41 | else 42 | error_message=$(echo "$response" | jq -r '.message // "Unknown error"') 43 | echo "Warning: Failed to close discussion #$discussion_id. Error: $error_message" 44 | echo "Full response: $response" 45 | fi 46 | done 47 | shell: bash 48 | continue-on-error: true 49 | -------------------------------------------------------------------------------- /.github/workflows/close-issue-command.yaml: -------------------------------------------------------------------------------- 1 | name: Close issue on /close 2 | 3 | on: 4 | issue_comment: 5 | types: [created, edited] 6 | 7 | jobs: 8 | closeIssueOnClose: 9 | # Skip this job if the comment was created/edited on a PR 10 | if: ${{ !github.event.issue.pull_request }} 11 | runs-on: ubuntu-latest 12 | permissions: 13 | issues: write 14 | pull-requests: none 15 | contents: read 16 | 17 | steps: 18 | - name: Check for /close comment 19 | id: check_comment 20 | run: | 21 | if [[ "${{ contains(github.event.comment.body, '/close') }}" == "true" ]]; then 22 | echo "comment=true" >> $GITHUB_ENV 23 | else 24 | echo "comment=false" >> $GITHUB_ENV 25 | fi 26 | 27 | - name: Check if the user is allowed 28 | id: check_user 29 | if: env.comment == 'true' 30 | run: | 31 | ALLOWED_USERS=("ChrisTitusTech" "og-mrk" "Marterich" "MyDrift-user" "Real-MullaC") 32 | if [[ " ${ALLOWED_USERS[@]} " =~ " ${{ github.event.comment.user.login }} " ]]; then 33 | echo "user=true" >> $GITHUB_ENV 34 | else 35 | echo "user=false" >> $GITHUB_ENV 36 | fi 37 | 38 | - name: Close issue if conditions are met 39 | if: env.comment == 'true' && env.user == 'true' 40 | env: 41 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 42 | ISSUE_NUMBER: ${{ github.event.issue.number }} 43 | run: | 44 | echo Closing the issue... 45 | gh issue close $ISSUE_NUMBER --repo ${{ github.repository }} 46 | -------------------------------------------------------------------------------- /.github/workflows/close-old-issues.yaml: -------------------------------------------------------------------------------- 1 | name: Close Inactive Issues 2 | 3 | on: 4 | schedule: 5 | - cron: '0 0 * * *' # Run daily 6 | workflow_dispatch: # This line enables manual triggering 7 | 8 | jobs: 9 | close-issues: 10 | runs-on: ubuntu-latest 11 | permissions: 12 | issues: write # Ensure necessary permissions for issues 13 | pull-requests: none 14 | contents: none 15 | steps: 16 | - name: Close inactive issues 17 | uses: actions/stale@v8 18 | with: 19 | # A list of labels to reference when looking through issues, 20 | # and only when one (or even more) of these labels are found.. 21 | # then skip this issue, and never try to stale and/or close it. 22 | exempt-issue-labels: "Keep Issue Open" 23 | # Split it into two weeks, after one week the issue will be marked as stale, 24 | # after another week have pasted without any update.. the issue will then be closed. 25 | days-before-issue-stale: 90 26 | days-before-issue-close: 365 27 | # NEVER mark PRs as Stale or Close + this workflow should never have write permissions on PRs, EVER! 28 | days-before-pr-stale: -1 29 | days-before-pr-close: -1 30 | # Sends a message for both the Stale and Close events of an issue. 31 | stale-issue-message: "This issue was marked as stale because it has been inactive for 7 days" 32 | close-issue-message: "This issue was closed because it has been inactive for 7 days since it was marked as stale" 33 | # Increase this value if the project receives a lot of 34 | # PRs (yes.. apparently they're processed no matter what) & Issues. 35 | # Default value for it (according to the docs) is 30 36 | operations-per-run: 200 37 | # Make this field equal true if you want to test your configuration if it works correctly or not 38 | debug-only: false 39 | repo-token: ${{ secrets.GITHUB_TOKEN }} 40 | -------------------------------------------------------------------------------- /.github/workflows/compile-check.yaml: -------------------------------------------------------------------------------- 1 | name: Compile & Check 2 | 3 | on: 4 | push: 5 | branches: ["main"] 6 | pull_request: 7 | branches: ["main"] 8 | workflow_dispatch: # Manual trigger added 9 | workflow_call: # Allow other Actions to call this workflow 10 | 11 | jobs: 12 | Compile-and-Check: 13 | runs-on: windows-latest 14 | steps: 15 | - name: Checkout Sources 16 | uses: actions/checkout@v4 17 | 18 | - name: Compile and Syntaxcheck winutil.ps1 19 | shell: pwsh 20 | run: | 21 | Set-ExecutionPolicy Bypass -Scope Process -Force; ./Compile.ps1 22 | continue-on-error: false # Directly fail the job on error, removing the need for a separate check 23 | -------------------------------------------------------------------------------- /.github/workflows/github-pages.yaml: -------------------------------------------------------------------------------- 1 | name: GitHub Pages Deploy 2 | 3 | on: 4 | push: 5 | paths: 6 | - '.github/mkdocs.yml' 7 | - '.github/requirements.txt' 8 | - 'docs/**' 9 | - 'overrides/**' 10 | - '.github/CONTRIBUTING.md' 11 | workflow_dispatch: 12 | 13 | jobs: 14 | build-and-deploy: 15 | runs-on: ubuntu-latest 16 | 17 | steps: 18 | - name: Checkout Repository 19 | uses: actions/checkout@v4 20 | with: 21 | fetch-depth: '0' # Fetch all commit history for all branches as well as tags. 22 | 23 | - name: Setup Python 24 | uses: actions/setup-python@v5 25 | with: 26 | python-version: 3.x # Install latest Stable release of Python 3 27 | cache: 'pip' # Caching pip dependencies 28 | 29 | - name: Install Necessary Dependencies 30 | run: pip install -r .github/requirements.txt 31 | 32 | - name: Build & Deploy using mkdocs 33 | run: mkdocs gh-deploy --force -f .github/mkdocs.yml 34 | -------------------------------------------------------------------------------- /.github/workflows/remove-winutil.yaml: -------------------------------------------------------------------------------- 1 | name: Remove winutil.ps1 if included in a Push 2 | 3 | on: 4 | push: 5 | branches: 6 | - '**' 7 | 8 | jobs: 9 | check-and-delete-file: 10 | runs-on: ubuntu-latest 11 | 12 | steps: 13 | - name: Checkout code 14 | uses: actions/checkout@v4 15 | 16 | - name: Check if winutil.ps1 exists 17 | id: check_existence 18 | run: | 19 | if [ -f "winutil.ps1" ]; then 20 | echo "winutil_exists=true" >> $GITHUB_OUTPUT 21 | else 22 | echo "winutil_exists=false" >> $GITHUB_OUTPUT 23 | fi 24 | 25 | - name: Delete winutil.ps1 if it exists 26 | if: steps.check_existence.outputs.winutil_exists == 'true' 27 | run: | 28 | git config --global user.email "winutil-action@noreply.github.com" 29 | git config --global user.name "winutil-action" 30 | git rm winutil.ps1 31 | git commit -m "Delete winutil.ps1 as it is not allowed" 32 | git push origin HEAD:${{ github.ref }} 33 | env: 34 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 35 | -------------------------------------------------------------------------------- /.github/workflows/sponsors.yaml: -------------------------------------------------------------------------------- 1 | name: Generate Sponsors README 2 | on: 3 | workflow_dispatch: 4 | schedule: 5 | - cron: 30 15 * * 0-6 6 | permissions: 7 | contents: write 8 | jobs: 9 | deploy: 10 | runs-on: ubuntu-latest 11 | if: (github.event_name == 'schedule' && github.repository == 'ChrisTitusTech/winutil') || (github.event_name != 'schedule') 12 | steps: 13 | - name: Checkout 🛎️ 14 | uses: actions/checkout@v4 15 | 16 | - name: Generate Sponsors 💖 17 | uses: JamesIves/github-sponsors-readme-action@v1 18 | with: 19 | token: ${{ secrets.PAT }} 20 | file: 'README.md' 21 | 22 | - name: Deploy to GitHub Pages 🚀 23 | uses: JamesIves/github-pages-deploy-action@v4 24 | with: 25 | branch: main 26 | folder: '.' 27 | -------------------------------------------------------------------------------- /.github/workflows/unittests.yaml: -------------------------------------------------------------------------------- 1 | name: Unit Tests 2 | 3 | on: 4 | push: 5 | 6 | jobs: 7 | lint: 8 | name: PS Script Analyzer 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v4 12 | - name: lint 13 | uses: devblackops/github-action-psscriptanalyzer@master 14 | with: 15 | sendComment: false 16 | settingsPath: lint/PSScriptAnalyser.ps1 17 | failOnErrors: false 18 | failOnWarnings: false 19 | failOnInfos: false 20 | test: 21 | runs-on: windows-latest 22 | 23 | steps: 24 | - name: Checkout code 25 | uses: actions/checkout@v4 26 | 27 | - name: Install Pester 28 | run: | 29 | Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process 30 | Install-Module -Name Pester -Force -SkipPublisherCheck -AllowClobber 31 | shell: pwsh 32 | 33 | - name: Run Pester tests 34 | run: | 35 | Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process 36 | Invoke-Pester -Path 'pester/*.Tests.ps1' -Output Detailed 37 | 38 | shell: pwsh 39 | env: 40 | TEMP: ${{ runner.temp }} 41 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ### VSCode ### 2 | 3 | # Configuration folder 4 | .vscode/ 5 | 6 | ### Visual Studio ### 7 | 8 | # Visual Studio user-specific files 9 | .vs/ 10 | 11 | winutil.pdb 12 | 13 | ### Windows ### 14 | 15 | # Folder config file 16 | [Dd]esktop.ini 17 | 18 | # Ignore Generated XAML Files 19 | xaml/inputApp.xaml 20 | xaml/inputFeatures.xaml 21 | xaml/inputTweaks.xaml 22 | 23 | # Executables and Configs 24 | winget.msixbundle 25 | pester.ps1 26 | *.psd* 27 | ooshutup10.cfg 28 | winutil.exe.config 29 | Microsoft.UI.Xaml* 30 | license1.xml 31 | winutil.ps1 32 | 33 | # Libraries 34 | System.Management.Automation.dll 35 | Microsoft.PowerShell.ConsoleHost.dll 36 | 37 | # Compressed files 38 | *.zip 39 | 40 | ### MacOS ### 41 | 42 | # General 43 | .DS_Store 44 | microwin.log 45 | True 46 | test.ps1 47 | winutil.ps1 48 | 49 | binary/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 CT Tech Group LLC 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /config/dns.json: -------------------------------------------------------------------------------- 1 | { 2 | "Google":{ 3 | "Primary": "8.8.8.8", 4 | "Secondary": "8.8.4.4", 5 | "Primary6": "2001:4860:4860::8888", 6 | "Secondary6": "2001:4860:4860::8844" 7 | }, 8 | "Cloudflare":{ 9 | "Primary": "1.1.1.1", 10 | "Secondary": "1.0.0.1", 11 | "Primary6": "2606:4700:4700::1111", 12 | "Secondary6": "2606:4700:4700::1001" 13 | }, 14 | "Cloudflare_Malware":{ 15 | "Primary": "1.1.1.2", 16 | "Secondary": "1.0.0.2", 17 | "Primary6": "2606:4700:4700::1112", 18 | "Secondary6": "2606:4700:4700::1002" 19 | }, 20 | "Cloudflare_Malware_Adult":{ 21 | "Primary": "1.1.1.3", 22 | "Secondary": "1.0.0.3", 23 | "Primary6": "2606:4700:4700::1113", 24 | "Secondary6": "2606:4700:4700::1003" 25 | }, 26 | "Open_DNS":{ 27 | "Primary": "208.67.222.222", 28 | "Secondary": "208.67.220.220", 29 | "Primary6": "2620:119:35::35", 30 | "Secondary6": "2620:119:53::53" 31 | }, 32 | "Quad9":{ 33 | "Primary": "9.9.9.9", 34 | "Secondary": "149.112.112.112", 35 | "Primary6": "2620:fe::fe", 36 | "Secondary6": "2620:fe::9" 37 | }, 38 | "AdGuard_Ads_Trackers":{ 39 | "Primary": "94.140.14.14", 40 | "Secondary": "94.140.15.15", 41 | "Primary6": "2a10:50c0::ad1:ff", 42 | "Secondary6": "2a10:50c0::ad2:ff" 43 | }, 44 | "AdGuard_Ads_Trackers_Malware_Adult":{ 45 | "Primary": "94.140.14.15", 46 | "Secondary": "94.140.15.16", 47 | "Primary6": "2a10:50c0::bad1:ff", 48 | "Secondary6": "2a10:50c0::bad2:ff" 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /config/preset.json: -------------------------------------------------------------------------------- 1 | { 2 | "Standard": [ 3 | "WPFTweaksAH", 4 | "WPFTweaksConsumerFeatures", 5 | "WPFTweaksDVR", 6 | "WPFTweaksHiber", 7 | "WPFTweaksHome", 8 | "WPFTweaksLoc", 9 | "WPFTweaksServices", 10 | "WPFTweaksStorage", 11 | "WPFTweaksTele", 12 | "WPFTweaksWifi", 13 | "WPFTweaksDiskCleanup", 14 | "WPFTweaksDeleteTempFiles", 15 | "WPFTweaksEndTaskOnTaskbar", 16 | "WPFTweaksRestorePoint", 17 | "WPFTweaksIPv46", 18 | "WPFTweaksPowershell7Tele" 19 | ], 20 | "Minimal": [ 21 | "WPFTweaksConsumerFeatures", 22 | "WPFTweaksHome", 23 | "WPFTweaksServices", 24 | "WPFTweaksTele" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /docs/assets/Commit-GHD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingWonders/winutil/81aead7a687feae2c4ffb9841196559692789eba/docs/assets/Commit-GHD.png -------------------------------------------------------------------------------- /docs/assets/Compile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingWonders/winutil/81aead7a687feae2c4ffb9841196559692789eba/docs/assets/Compile.png -------------------------------------------------------------------------------- /docs/assets/Create-Branch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingWonders/winutil/81aead7a687feae2c4ffb9841196559692789eba/docs/assets/Create-Branch.png -------------------------------------------------------------------------------- /docs/assets/Discard-GHD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingWonders/winutil/81aead7a687feae2c4ffb9841196559692789eba/docs/assets/Discard-GHD.png -------------------------------------------------------------------------------- /docs/assets/Fork-Button-Dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingWonders/winutil/81aead7a687feae2c4ffb9841196559692789eba/docs/assets/Fork-Button-Dark.png -------------------------------------------------------------------------------- /docs/assets/Fork-Button-Light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingWonders/winutil/81aead7a687feae2c4ffb9841196559692789eba/docs/assets/Fork-Button-Light.png -------------------------------------------------------------------------------- /docs/assets/Get-Installed-Dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingWonders/winutil/81aead7a687feae2c4ffb9841196559692789eba/docs/assets/Get-Installed-Dark.png -------------------------------------------------------------------------------- /docs/assets/Get-Installed-Light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingWonders/winutil/81aead7a687feae2c4ffb9841196559692789eba/docs/assets/Get-Installed-Light.png -------------------------------------------------------------------------------- /docs/assets/Install-Tab-Dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingWonders/winutil/81aead7a687feae2c4ffb9841196559692789eba/docs/assets/Install-Tab-Dark.png -------------------------------------------------------------------------------- /docs/assets/Install-Tab-Light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingWonders/winutil/81aead7a687feae2c4ffb9841196559692789eba/docs/assets/Install-Tab-Light.png -------------------------------------------------------------------------------- /docs/assets/MicroWinScreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingWonders/winutil/81aead7a687feae2c4ffb9841196559692789eba/docs/assets/MicroWinScreen.png -------------------------------------------------------------------------------- /docs/assets/Microwin-Dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingWonders/winutil/81aead7a687feae2c4ffb9841196559692789eba/docs/assets/Microwin-Dark.png -------------------------------------------------------------------------------- /docs/assets/Microwin-Light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingWonders/winutil/81aead7a687feae2c4ffb9841196559692789eba/docs/assets/Microwin-Light.png -------------------------------------------------------------------------------- /docs/assets/Push-Commit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingWonders/winutil/81aead7a687feae2c4ffb9841196559692789eba/docs/assets/Push-Commit.png -------------------------------------------------------------------------------- /docs/assets/Screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingWonders/winutil/81aead7a687feae2c4ffb9841196559692789eba/docs/assets/Screen.png -------------------------------------------------------------------------------- /docs/assets/Settings-Export-Dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingWonders/winutil/81aead7a687feae2c4ffb9841196559692789eba/docs/assets/Settings-Export-Dark.png -------------------------------------------------------------------------------- /docs/assets/Settings-Export-Light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingWonders/winutil/81aead7a687feae2c4ffb9841196559692789eba/docs/assets/Settings-Export-Light.png -------------------------------------------------------------------------------- /docs/assets/Title-Screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingWonders/winutil/81aead7a687feae2c4ffb9841196559692789eba/docs/assets/Title-Screen.png -------------------------------------------------------------------------------- /docs/assets/Tweaks-Tab-Dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingWonders/winutil/81aead7a687feae2c4ffb9841196559692789eba/docs/assets/Tweaks-Tab-Dark.png -------------------------------------------------------------------------------- /docs/assets/Tweaks-Tab-Light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingWonders/winutil/81aead7a687feae2c4ffb9841196559692789eba/docs/assets/Tweaks-Tab-Light.png -------------------------------------------------------------------------------- /docs/assets/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingWonders/winutil/81aead7a687feae2c4ffb9841196559692789eba/docs/assets/favicon.png -------------------------------------------------------------------------------- /docs/contribute.md: -------------------------------------------------------------------------------- 1 | --8<-- ".github/CONTRIBUTING.md" 2 | 3 | 4 | -------------------------------------------------------------------------------- /docs/dev/features/Features/DisableLegacyRecovery.md: -------------------------------------------------------------------------------- 1 | # Disable Legacy F8 Boot Recovery 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | Disables Advanced Boot Options screen that lets you start Windows in advanced troubleshooting modes. 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Disable Legacy F8 Boot Recovery", 22 | "Description": "Disables Advanced Boot Options screen that lets you start Windows in advanced troubleshooting modes.", 23 | "category": "Features", 24 | "panel": "1", 25 | "Order": "a019_", 26 | "feature": [], 27 | "InvokeScript": [ 28 | " 29 | If (!(Test-Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood')) { 30 | New-Item -Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood' -Force | Out-Null 31 | } 32 | New-ItemProperty -Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood' -Name 'Enabled' -Type DWord -Value 0 -Force 33 | Start-Process -FilePath cmd.exe -ArgumentList '/c bcdedit /Set {Current} BootMenuPolicy Standard' -Wait 34 | " 35 | ], 36 | "link": "https://christitustech.github.io/winutil/dev/features/Features/DisableLegacyRecovery" 37 | } 38 | ``` 39 | 40 |
41 | 42 | ## Invoke Script 43 | 44 | ```powershell 45 | 46 | If (!(Test-Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Configuration Manager\LastKnownGood')) { 47 | New-Item -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Configuration Manager\LastKnownGood' -Force | Out-Null 48 | } 49 | New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Configuration Manager\LastKnownGood' -Name 'Enabled' -Type DWord -Value 0 -Force 50 | Start-Process -FilePath cmd.exe -ArgumentList '/c bcdedit /Set {Current} BootMenuPolicy Standard' -Wait 51 | 52 | 53 | ``` 54 | 55 | 56 | 57 | 58 | 59 | 60 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json) 61 | 62 | -------------------------------------------------------------------------------- /docs/dev/features/Features/DisableSearchSuggestions.md: -------------------------------------------------------------------------------- 1 | # Disable Search Box Web Suggestions in Registry(explorer restart) 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | Disables web suggestions when searching using Windows Search. 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Disable Search Box Web Suggestions in Registry(explorer restart)", 22 | "Description": "Disables web suggestions when searching using Windows Search.", 23 | "category": "Features", 24 | "panel": "1", 25 | "Order": "a016_", 26 | "feature": [], 27 | "InvokeScript": [ 28 | " 29 | If (!(Test-Path 'HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer')) { 30 | New-Item -Path 'HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer' -Force | Out-Null 31 | } 32 | New-ItemProperty -Path 'HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer' -Name 'DisableSearchBoxSuggestions' -Type DWord -Value 1 -Force 33 | Stop-Process -name explorer -force 34 | " 35 | ], 36 | "link": "https://christitustech.github.io/winutil/dev/features/Features/DisableSearchSuggestions" 37 | } 38 | ``` 39 | 40 |
41 | 42 | ## Invoke Script 43 | 44 | ```powershell 45 | 46 | If (!(Test-Path 'HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer')) { 47 | New-Item -Path 'HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer' -Force | Out-Null 48 | } 49 | New-ItemProperty -Path 'HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer' -Name 'DisableSearchBoxSuggestions' -Type DWord -Value 1 -Force 50 | Stop-Process -name explorer -force 51 | 52 | 53 | ``` 54 | 55 | 56 | 57 | 58 | 59 | 60 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json) 61 | 62 | -------------------------------------------------------------------------------- /docs/dev/features/Features/EnableLegacyRecovery.md: -------------------------------------------------------------------------------- 1 | # Enable Legacy F8 Boot Recovery 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | Enables Advanced Boot Options screen that lets you start Windows in advanced troubleshooting modes. 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Enable Legacy F8 Boot Recovery", 22 | "Description": "Enables Advanced Boot Options screen that lets you start Windows in advanced troubleshooting modes.", 23 | "category": "Features", 24 | "panel": "1", 25 | "Order": "a018_", 26 | "feature": [], 27 | "InvokeScript": [ 28 | " 29 | If (!(Test-Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood')) { 30 | New-Item -Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood' -Force | Out-Null 31 | } 32 | New-ItemProperty -Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\LastKnownGood' -Name 'Enabled' -Type DWord -Value 1 -Force 33 | Start-Process -FilePath cmd.exe -ArgumentList '/c bcdedit /Set {Current} BootMenuPolicy Legacy' -Wait 34 | " 35 | ], 36 | "link": "https://christitustech.github.io/winutil/dev/features/Features/EnableLegacyRecovery" 37 | } 38 | ``` 39 | 40 |
41 | 42 | ## Invoke Script 43 | 44 | ```powershell 45 | 46 | If (!(Test-Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Configuration Manager\LastKnownGood')) { 47 | New-Item -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Configuration Manager\LastKnownGood' -Force | Out-Null 48 | } 49 | New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Configuration Manager\LastKnownGood' -Name 'Enabled' -Type DWord -Value 1 -Force 50 | Start-Process -FilePath cmd.exe -ArgumentList '/c bcdedit /Set {Current} BootMenuPolicy Legacy' -Wait 51 | 52 | 53 | ``` 54 | 55 | 56 | 57 | 58 | 59 | 60 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json) 61 | 62 | -------------------------------------------------------------------------------- /docs/dev/features/Features/EnableSearchSuggestions.md: -------------------------------------------------------------------------------- 1 | # Enable Search Box Web Suggestions in Registry(explorer restart) 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | Enables web suggestions when searching using Windows Search. 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Enable Search Box Web Suggestions in Registry(explorer restart)", 22 | "Description": "Enables web suggestions when searching using Windows Search.", 23 | "category": "Features", 24 | "panel": "1", 25 | "Order": "a015_", 26 | "feature": [], 27 | "InvokeScript": [ 28 | " 29 | If (!(Test-Path 'HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer')) { 30 | New-Item -Path 'HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer' -Force | Out-Null 31 | } 32 | New-ItemProperty -Path 'HKCU:\\SOFTWARE\\Policies\\Microsoft\\Windows\\Explorer' -Name 'DisableSearchBoxSuggestions' -Type DWord -Value 0 -Force 33 | Stop-Process -name explorer -force 34 | " 35 | ], 36 | "link": "https://christitustech.github.io/winutil/dev/features/Features/EnableSearchSuggestions" 37 | } 38 | ``` 39 | 40 |
41 | 42 | ## Invoke Script 43 | 44 | ```powershell 45 | 46 | If (!(Test-Path 'HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer')) { 47 | New-Item -Path 'HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer' -Force | Out-Null 48 | } 49 | New-ItemProperty -Path 'HKCU:\SOFTWARE\Policies\Microsoft\Windows\Explorer' -Name 'DisableSearchBoxSuggestions' -Type DWord -Value 0 -Force 50 | Stop-Process -name explorer -force 51 | 52 | 53 | ``` 54 | 55 | 56 | 57 | 58 | 59 | 60 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json) 61 | 62 | -------------------------------------------------------------------------------- /docs/dev/features/Features/Sandbox.md: -------------------------------------------------------------------------------- 1 | # Windows Sandbox 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | Windows Sandbox is a lightweight virtual machine that provides a temporary desktop environment to safely run applications and programs in isolation. 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Windows Sandbox", 22 | "category": "Features", 23 | "panel": "1", 24 | "Order": "a021_", 25 | "Description": "Windows Sandbox is a lightweight virtual machine that provides a temporary desktop environment to safely run applications and programs in isolation.", 26 | "link": "https://christitustech.github.io/winutil/dev/features/Features/Sandbox" 27 | } 28 | ``` 29 | 30 |
31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json) 39 | 40 | -------------------------------------------------------------------------------- /docs/dev/features/Features/dotnet.md: -------------------------------------------------------------------------------- 1 | # All .Net Framework (2,3,4) 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | .NET and .NET Framework is a developer platform made up of tools, programming languages, and libraries for building many different types of applications. 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "All .Net Framework (2,3,4)", 22 | "Description": ".NET and .NET Framework is a developer platform made up of tools, programming languages, and libraries for building many different types of applications.", 23 | "category": "Features", 24 | "panel": "1", 25 | "Order": "a010_", 26 | "feature": [ 27 | "NetFx4-AdvSrvs", 28 | "NetFx3" 29 | ], 30 | "InvokeScript": [], 31 | "link": "https://christitustech.github.io/winutil/dev/features/Features/dotnet" 32 | } 33 | ``` 34 | 35 |
36 | 37 | ## Features 38 | 39 | 40 | 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. 41 | 42 | 43 | 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). 44 | 45 | ### Features to install 46 | - NetFx4-AdvSrvs 47 | - NetFx3 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json) 56 | 57 | -------------------------------------------------------------------------------- /docs/dev/features/Features/legacymedia.md: -------------------------------------------------------------------------------- 1 | # Legacy Media (WMP, DirectPlay) 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | Enables legacy programs from previous versions of windows 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Legacy Media (WMP, DirectPlay)", 22 | "Description": "Enables legacy programs from previous versions of windows", 23 | "category": "Features", 24 | "panel": "1", 25 | "Order": "a012_", 26 | "feature": [ 27 | "WindowsMediaPlayer", 28 | "MediaPlayback", 29 | "DirectPlay", 30 | "LegacyComponents" 31 | ], 32 | "InvokeScript": [], 33 | "link": "https://christitustech.github.io/winutil/dev/features/Features/legacymedia" 34 | } 35 | ``` 36 | 37 |
38 | 39 | ## Features 40 | 41 | 42 | 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. 43 | 44 | 45 | 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). 46 | 47 | ### Features to install 48 | - WindowsMediaPlayer 49 | - MediaPlayback 50 | - DirectPlay 51 | - LegacyComponents 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json) 60 | 61 | -------------------------------------------------------------------------------- /docs/dev/features/Features/wsl.md: -------------------------------------------------------------------------------- 1 | # Windows Subsystem for Linux 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | 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. 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Windows Subsystem for Linux", 22 | "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.", 23 | "category": "Features", 24 | "panel": "1", 25 | "Order": "a020_", 26 | "feature": [ 27 | "VirtualMachinePlatform", 28 | "Microsoft-Windows-Subsystem-Linux" 29 | ], 30 | "InvokeScript": [], 31 | "link": "https://christitustech.github.io/winutil/dev/features/Features/wsl" 32 | } 33 | ``` 34 | 35 |
36 | 37 | ## Features 38 | 39 | 40 | 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. 41 | 42 | 43 | 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). 44 | 45 | ### Features to install 46 | - VirtualMachinePlatform 47 | - Microsoft-Windows-Subsystem-Linux 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json) 56 | 57 | -------------------------------------------------------------------------------- /docs/dev/features/Fixes/Autologin.md: -------------------------------------------------------------------------------- 1 | # Set Up Autologin 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | Preview Code 16 | 17 | ```json 18 | { 19 | "Content": "Set Up Autologin", 20 | "category": "Fixes", 21 | "Order": "a040_", 22 | "panel": "1", 23 | "Type": "Button", 24 | "ButtonWidth": "300", 25 | "link": "https://christitustech.github.io/winutil/dev/features/Fixes/Autologin" 26 | } 27 | ``` 28 | 29 |
30 | 31 | ## Function: Invoke-WPFPanelAutologin 32 | 33 | ```powershell 34 | function Invoke-WPFPanelAutologin { 35 | <# 36 | 37 | .SYNOPSIS 38 | Enables autologin using Sysinternals Autologon.exe 39 | 40 | #> 41 | 42 | # Official Microsoft recommendation: https://learn.microsoft.com/en-us/sysinternals/downloads/autologon 43 | Invoke-WebRequest -Uri "https://live.sysinternals.com/Autologon.exe" -OutFile "$env:temp\autologin.exe" 44 | cmd /c "$env:temp\autologin.exe" /accepteula 45 | } 46 | 47 | ``` 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json) 56 | 57 | -------------------------------------------------------------------------------- /docs/dev/features/Fixes/Network.md: -------------------------------------------------------------------------------- 1 | # Reset Network 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | Preview Code 16 | 17 | ```json 18 | { 19 | "Content": "Reset Network", 20 | "category": "Fixes", 21 | "Order": "a042_", 22 | "panel": "1", 23 | "Type": "Button", 24 | "ButtonWidth": "300", 25 | "link": "https://christitustech.github.io/winutil/dev/features/Fixes/Network" 26 | } 27 | ``` 28 | 29 |
30 | 31 | ## Function: Invoke-WPFFixesNetwork 32 | 33 | ```powershell 34 | function Invoke-WPFFixesNetwork { 35 | <# 36 | 37 | .SYNOPSIS 38 | Resets various network configurations 39 | 40 | #> 41 | 42 | Write-Host "Resetting Network with netsh" 43 | 44 | # Reset WinSock catalog to a clean state 45 | Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "winsock", "reset" 46 | # Resets WinHTTP proxy setting to DIRECT 47 | Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "winhttp", "reset", "proxy" 48 | # Removes all user configured IP settings 49 | Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "int", "ip", "reset" 50 | 51 | Write-Host "Process complete. Please reboot your computer." 52 | 53 | $ButtonType = [System.Windows.MessageBoxButton]::OK 54 | $MessageboxTitle = "Network Reset " 55 | $Messageboxbody = ("Stock settings loaded.`n Please reboot your computer") 56 | $MessageIcon = [System.Windows.MessageBoxImage]::Information 57 | 58 | [System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon) 59 | Write-Host "==========================================" 60 | Write-Host "-- Network Configuration has been Reset --" 61 | Write-Host "==========================================" 62 | } 63 | 64 | ``` 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json) 73 | 74 | -------------------------------------------------------------------------------- /docs/dev/features/Fixes/RunAdobeCCCleanerTool.md: -------------------------------------------------------------------------------- 1 | # Remove Adobe Creative Cloud 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | Preview Code 16 | 17 | ```json 18 | { 19 | "Content": "Remove Adobe Creative Cloud", 20 | "category": "Fixes", 21 | "panel": "1", 22 | "Order": "a045_", 23 | "Type": "Button", 24 | "ButtonWidth": "300", 25 | "link": "https://christitustech.github.io/winutil/dev/features/Fixes/RunAdobeCCCleanerTool" 26 | } 27 | ``` 28 | 29 |
30 | 31 | ## Function: Invoke-WPFRunAdobeCCCleanerTool 32 | 33 | ```powershell 34 | function Invoke-WPFRunAdobeCCCleanerTool { 35 | <# 36 | .SYNOPSIS 37 | It removes or fixes problem files and resolves permission issues in registry keys. 38 | .DESCRIPTION 39 | The Creative Cloud Cleaner tool is a utility for experienced users to clean up corrupted installations. 40 | #> 41 | 42 | [string]$url="https://swupmf.adobe.com/webfeed/CleanerTool/win/AdobeCreativeCloudCleanerTool.exe" 43 | 44 | Write-Host "The Adobe Creative Cloud Cleaner tool is hosted at" 45 | Write-Host "$url" 46 | 47 | try { 48 | # Don't show the progress because it will slow down the download speed 49 | $ProgressPreference='SilentlyContinue' 50 | 51 | Invoke-WebRequest -Uri $url -OutFile "$env:TEMP\AdobeCreativeCloudCleanerTool.exe" -UseBasicParsing -ErrorAction SilentlyContinue -Verbose 52 | 53 | # Revert back the ProgressPreference variable to the default value since we got the file desired 54 | $ProgressPreference='Continue' 55 | 56 | Start-Process -FilePath "$env:TEMP\AdobeCreativeCloudCleanerTool.exe" -Wait -ErrorAction SilentlyContinue -Verbose 57 | } catch { 58 | Write-Error $_.Exception.Message 59 | } finally { 60 | if (Test-Path -Path "$env:TEMP\AdobeCreativeCloudCleanerTool.exe") { 61 | Write-Host "Cleaning up..." 62 | Remove-Item -Path "$env:TEMP\AdobeCreativeCloudCleanerTool.exe" -Verbose 63 | } 64 | } 65 | } 66 | 67 | ``` 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json) 76 | 77 | -------------------------------------------------------------------------------- /docs/dev/features/Fixes/Winget.md: -------------------------------------------------------------------------------- 1 | # WinGet Reinstall 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | Preview Code 16 | 17 | ```json 18 | { 19 | "Content": "WinGet Reinstall", 20 | "category": "Fixes", 21 | "panel": "1", 22 | "Order": "a044_", 23 | "Type": "Button", 24 | "ButtonWidth": "300", 25 | "link": "https://christitustech.github.io/winutil/dev/features/Fixes/Winget" 26 | } 27 | ``` 28 | 29 |
30 | 31 | ## Function: Invoke-WPFFixesWinget 32 | 33 | ```powershell 34 | function Invoke-WPFFixesWinget { 35 | 36 | <# 37 | 38 | .SYNOPSIS 39 | Fixes Winget by running choco install winget 40 | .DESCRIPTION 41 | BravoNorris for the fantastic idea of a button to reinstall winget 42 | #> 43 | # Install Choco if not already present 44 | Install-WinUtilChoco 45 | Start-Process -FilePath "choco" -ArgumentList "install winget -y --force" -NoNewWindow -Wait 46 | 47 | } 48 | 49 | ``` 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json) 58 | 59 | -------------------------------------------------------------------------------- /docs/dev/features/Legacy-Windows-Panels/control.md: -------------------------------------------------------------------------------- 1 | # Control Panel 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | Preview Code 16 | 17 | ```json 18 | { 19 | "Content": "Control Panel", 20 | "category": "Legacy Windows Panels", 21 | "panel": "2", 22 | "Type": "Button", 23 | "ButtonWidth": "300", 24 | "link": "https://christitustech.github.io/winutil/dev/features/Legacy-Windows-Panels/control" 25 | } 26 | ``` 27 | 28 |
29 | 30 | ## Function: Invoke-WPFControlPanel 31 | 32 | ```powershell 33 | function Invoke-WPFControlPanel { 34 | <# 35 | 36 | .SYNOPSIS 37 | Opens the requested legacy panel 38 | 39 | .PARAMETER Panel 40 | The panel to open 41 | 42 | #> 43 | param($Panel) 44 | 45 | switch ($Panel) { 46 | "WPFPanelcontrol" {cmd /c control} 47 | "WPFPanelnetwork" {cmd /c ncpa.cpl} 48 | "WPFPanelpower" {cmd /c powercfg.cpl} 49 | "WPFPanelregion" {cmd /c intl.cpl} 50 | "WPFPanelsound" {cmd /c mmsys.cpl} 51 | "WPFPanelsystem" {cmd /c sysdm.cpl} 52 | "WPFPaneluser" {cmd /c "control userpasswords2"} 53 | } 54 | } 55 | 56 | ``` 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json) 65 | 66 | -------------------------------------------------------------------------------- /docs/dev/features/Legacy-Windows-Panels/network.md: -------------------------------------------------------------------------------- 1 | # Network Connections 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | Preview Code 16 | 17 | ```json 18 | { 19 | "Content": "Network Connections", 20 | "category": "Legacy Windows Panels", 21 | "panel": "2", 22 | "Type": "Button", 23 | "ButtonWidth": "300", 24 | "link": "https://christitustech.github.io/winutil/dev/features/Legacy-Windows-Panels/network" 25 | } 26 | ``` 27 | 28 |
29 | 30 | ## Function: Invoke-WPFControlPanel 31 | 32 | ```powershell 33 | function Invoke-WPFControlPanel { 34 | <# 35 | 36 | .SYNOPSIS 37 | Opens the requested legacy panel 38 | 39 | .PARAMETER Panel 40 | The panel to open 41 | 42 | #> 43 | param($Panel) 44 | 45 | switch ($Panel) { 46 | "WPFPanelcontrol" {cmd /c control} 47 | "WPFPanelnetwork" {cmd /c ncpa.cpl} 48 | "WPFPanelpower" {cmd /c powercfg.cpl} 49 | "WPFPanelregion" {cmd /c intl.cpl} 50 | "WPFPanelsound" {cmd /c mmsys.cpl} 51 | "WPFPanelsystem" {cmd /c sysdm.cpl} 52 | "WPFPaneluser" {cmd /c "control userpasswords2"} 53 | } 54 | } 55 | 56 | ``` 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json) 65 | 66 | -------------------------------------------------------------------------------- /docs/dev/features/Legacy-Windows-Panels/power.md: -------------------------------------------------------------------------------- 1 | # Power Panel 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | Preview Code 16 | 17 | ```json 18 | { 19 | "Content": "Power Panel", 20 | "category": "Legacy Windows Panels", 21 | "panel": "2", 22 | "Type": "Button", 23 | "ButtonWidth": "300", 24 | "link": "https://christitustech.github.io/winutil/dev/features/Legacy-Windows-Panels/power" 25 | } 26 | ``` 27 | 28 |
29 | 30 | ## Function: Invoke-WPFControlPanel 31 | 32 | ```powershell 33 | function Invoke-WPFControlPanel { 34 | <# 35 | 36 | .SYNOPSIS 37 | Opens the requested legacy panel 38 | 39 | .PARAMETER Panel 40 | The panel to open 41 | 42 | #> 43 | param($Panel) 44 | 45 | switch ($Panel) { 46 | "WPFPanelcontrol" {cmd /c control} 47 | "WPFPanelnetwork" {cmd /c ncpa.cpl} 48 | "WPFPanelpower" {cmd /c powercfg.cpl} 49 | "WPFPanelregion" {cmd /c intl.cpl} 50 | "WPFPanelsound" {cmd /c mmsys.cpl} 51 | "WPFPanelsystem" {cmd /c sysdm.cpl} 52 | "WPFPaneluser" {cmd /c "control userpasswords2"} 53 | } 54 | } 55 | 56 | ``` 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json) 65 | 66 | -------------------------------------------------------------------------------- /docs/dev/features/Legacy-Windows-Panels/printer.md: -------------------------------------------------------------------------------- 1 | # Printer Settings 2 | 3 | Last Updated: 2024-08-31 4 | 5 | 6 | !!! info 7 | 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.** 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | Preview Code 16 | 17 | ```json 18 | { 19 | "Content": "Printer Settings", 20 | "category": "Legacy Windows Panels", 21 | "panel": "2", 22 | "Type": "Button", 23 | "ButtonWidth": "300" 24 | } 25 | ``` 26 | 27 |
28 | 29 | ## Function: Invoke-WPFControlPanel 30 | 31 | ```powershell 32 | function Invoke-WPFControlPanel { 33 | <# 34 | 35 | .SYNOPSIS 36 | Opens the requested legacy panel 37 | 38 | .PARAMETER Panel 39 | The panel to open 40 | 41 | #> 42 | param($Panel) 43 | 44 | switch ($Panel) { 45 | "WPFPanelcontrol" {cmd /c control} 46 | "WPFPanelnetwork" {cmd /c ncpa.cpl} 47 | "WPFPanelpower" {cmd /c powercfg.cpl} 48 | "WPFPanelregion" {cmd /c intl.cpl} 49 | "WPFPanelsound" {cmd /c mmsys.cpl} 50 | "WPFPanelprinter" {Start-Process "shell:::{A8A91A66-3A7D-4424-8D24-04E180695C7A}"} 51 | "WPFPanelsystem" {cmd /c sysdm.cpl} 52 | "WPFPaneluser" {cmd /c "control userpasswords2"} 53 | } 54 | } 55 | 56 | ``` 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/../config/feature.json) 65 | 66 | -------------------------------------------------------------------------------- /docs/dev/features/Legacy-Windows-Panels/region.md: -------------------------------------------------------------------------------- 1 | # Region 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | Preview Code 16 | 17 | ```json 18 | { 19 | "Content": "Region", 20 | "category": "Legacy Windows Panels", 21 | "panel": "2", 22 | "Type": "Button", 23 | "ButtonWidth": "300", 24 | "link": "https://christitustech.github.io/winutil/dev/features/Legacy-Windows-Panels/region" 25 | } 26 | ``` 27 | 28 |
29 | 30 | ## Function: Invoke-WPFControlPanel 31 | 32 | ```powershell 33 | function Invoke-WPFControlPanel { 34 | <# 35 | 36 | .SYNOPSIS 37 | Opens the requested legacy panel 38 | 39 | .PARAMETER Panel 40 | The panel to open 41 | 42 | #> 43 | param($Panel) 44 | 45 | switch ($Panel) { 46 | "WPFPanelcontrol" {cmd /c control} 47 | "WPFPanelnetwork" {cmd /c ncpa.cpl} 48 | "WPFPanelpower" {cmd /c powercfg.cpl} 49 | "WPFPanelregion" {cmd /c intl.cpl} 50 | "WPFPanelsound" {cmd /c mmsys.cpl} 51 | "WPFPanelsystem" {cmd /c sysdm.cpl} 52 | "WPFPaneluser" {cmd /c "control userpasswords2"} 53 | } 54 | } 55 | 56 | ``` 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json) 65 | 66 | -------------------------------------------------------------------------------- /docs/dev/features/Legacy-Windows-Panels/sound.md: -------------------------------------------------------------------------------- 1 | # Sound Settings 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | Preview Code 16 | 17 | ```json 18 | { 19 | "Content": "Sound Settings", 20 | "category": "Legacy Windows Panels", 21 | "panel": "2", 22 | "Type": "Button", 23 | "ButtonWidth": "300", 24 | "link": "https://christitustech.github.io/winutil/dev/features/Legacy-Windows-Panels/sound" 25 | } 26 | ``` 27 | 28 |
29 | 30 | ## Function: Invoke-WPFControlPanel 31 | 32 | ```powershell 33 | function Invoke-WPFControlPanel { 34 | <# 35 | 36 | .SYNOPSIS 37 | Opens the requested legacy panel 38 | 39 | .PARAMETER Panel 40 | The panel to open 41 | 42 | #> 43 | param($Panel) 44 | 45 | switch ($Panel) { 46 | "WPFPanelcontrol" {cmd /c control} 47 | "WPFPanelnetwork" {cmd /c ncpa.cpl} 48 | "WPFPanelpower" {cmd /c powercfg.cpl} 49 | "WPFPanelregion" {cmd /c intl.cpl} 50 | "WPFPanelsound" {cmd /c mmsys.cpl} 51 | "WPFPanelsystem" {cmd /c sysdm.cpl} 52 | "WPFPaneluser" {cmd /c "control userpasswords2"} 53 | } 54 | } 55 | 56 | ``` 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json) 65 | 66 | -------------------------------------------------------------------------------- /docs/dev/features/Legacy-Windows-Panels/system.md: -------------------------------------------------------------------------------- 1 | # System Properties 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | Preview Code 16 | 17 | ```json 18 | { 19 | "Content": "System Properties", 20 | "category": "Legacy Windows Panels", 21 | "panel": "2", 22 | "Type": "Button", 23 | "ButtonWidth": "300", 24 | "link": "https://christitustech.github.io/winutil/dev/features/Legacy-Windows-Panels/system" 25 | } 26 | ``` 27 | 28 |
29 | 30 | ## Function: Invoke-WPFControlPanel 31 | 32 | ```powershell 33 | function Invoke-WPFControlPanel { 34 | <# 35 | 36 | .SYNOPSIS 37 | Opens the requested legacy panel 38 | 39 | .PARAMETER Panel 40 | The panel to open 41 | 42 | #> 43 | param($Panel) 44 | 45 | switch ($Panel) { 46 | "WPFPanelcontrol" {cmd /c control} 47 | "WPFPanelnetwork" {cmd /c ncpa.cpl} 48 | "WPFPanelpower" {cmd /c powercfg.cpl} 49 | "WPFPanelregion" {cmd /c intl.cpl} 50 | "WPFPanelsound" {cmd /c mmsys.cpl} 51 | "WPFPanelsystem" {cmd /c sysdm.cpl} 52 | "WPFPaneluser" {cmd /c "control userpasswords2"} 53 | } 54 | } 55 | 56 | ``` 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json) 65 | 66 | -------------------------------------------------------------------------------- /docs/dev/features/Legacy-Windows-Panels/user.md: -------------------------------------------------------------------------------- 1 | # User Accounts 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | Preview Code 16 | 17 | ```json 18 | { 19 | "Content": "User Accounts", 20 | "category": "Legacy Windows Panels", 21 | "panel": "2", 22 | "Type": "Button", 23 | "ButtonWidth": "300", 24 | "link": "https://christitustech.github.io/winutil/dev/features/Legacy-Windows-Panels/user" 25 | } 26 | ``` 27 | 28 |
29 | 30 | ## Function: Invoke-WPFControlPanel 31 | 32 | ```powershell 33 | function Invoke-WPFControlPanel { 34 | <# 35 | 36 | .SYNOPSIS 37 | Opens the requested legacy panel 38 | 39 | .PARAMETER Panel 40 | The panel to open 41 | 42 | #> 43 | param($Panel) 44 | 45 | switch ($Panel) { 46 | "WPFPanelcontrol" {cmd /c control} 47 | "WPFPanelnetwork" {cmd /c ncpa.cpl} 48 | "WPFPanelpower" {cmd /c powercfg.cpl} 49 | "WPFPanelregion" {cmd /c intl.cpl} 50 | "WPFPanelsound" {cmd /c mmsys.cpl} 51 | "WPFPanelsystem" {cmd /c sysdm.cpl} 52 | "WPFPaneluser" {cmd /c "control userpasswords2"} 53 | } 54 | } 55 | 56 | ``` 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/feature.json) 65 | 66 | -------------------------------------------------------------------------------- /docs/dev/tweaks/Customize-Preferences/BingSearch.md: -------------------------------------------------------------------------------- 1 | # Bing Search in Start Menu 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | If enable then includes web search results from Bing in your Start Menu search. 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Bing Search in Start Menu", 22 | "Description": "If enable then includes web search results from Bing in your Start Menu search.", 23 | "category": "Customize Preferences", 24 | "panel": "2", 25 | "Order": "a101_", 26 | "Type": "Toggle", 27 | "link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/BingSearch" 28 | } 29 | ``` 30 | 31 |
32 | 33 | ## Function: Invoke-WinUtilBingSearch 34 | 35 | ```powershell 36 | function Invoke-WinUtilBingSearch { 37 | <# 38 | 39 | .SYNOPSIS 40 | Disables/Enables Bing Search 41 | 42 | .PARAMETER Enabled 43 | Indicates whether to enable or disable Bing Search 44 | 45 | #> 46 | Param($Enabled) 47 | try { 48 | if ($Enabled -eq $false) { 49 | Write-Host "Enabling Bing Search" 50 | $value = 1 51 | } else { 52 | Write-Host "Disabling Bing Search" 53 | $value = 0 54 | } 55 | $Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Search" 56 | Set-ItemProperty -Path $Path -Name BingSearchEnabled -Value $value 57 | } catch [System.Security.SecurityException] { 58 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 59 | } catch [System.Management.Automation.ItemNotFoundException] { 60 | Write-Warning $psitem.Exception.ErrorRecord 61 | } catch { 62 | Write-Warning "Unable to set $Name due to unhandled exception" 63 | Write-Warning $psitem.Exception.StackTrace 64 | } 65 | } 66 | 67 | ``` 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json) 76 | 77 | -------------------------------------------------------------------------------- /docs/dev/tweaks/Customize-Preferences/DarkMode.md: -------------------------------------------------------------------------------- 1 | # Dark Theme for Windows 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | Enable/Disable Dark Mode. 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Dark Theme for Windows", 22 | "Description": "Enable/Disable Dark Mode.", 23 | "category": "Customize Preferences", 24 | "panel": "2", 25 | "Order": "a100_", 26 | "Type": "Toggle", 27 | "link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/DarkMode" 28 | } 29 | ``` 30 | 31 |
32 | 33 | ## Function: Invoke-WinUtilDarkMode 34 | 35 | ```powershell 36 | Function Invoke-WinUtilDarkMode { 37 | <# 38 | 39 | .SYNOPSIS 40 | Enables/Disables Dark Mode 41 | 42 | .PARAMETER DarkMoveEnabled 43 | Indicates the current dark mode state 44 | 45 | #> 46 | Param($DarkMoveEnabled) 47 | try { 48 | if ($DarkMoveEnabled -eq $false) { 49 | Write-Host "Enabling Dark Mode" 50 | $DarkMoveValue = 0 51 | } else { 52 | Write-Host "Disabling Dark Mode" 53 | $DarkMoveValue = 1 54 | } 55 | 56 | $Path = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize" 57 | Set-ItemProperty -Path $Path -Name AppsUseLightTheme -Value $DarkMoveValue 58 | Set-ItemProperty -Path $Path -Name SystemUsesLightTheme -Value $DarkMoveValue 59 | } catch [System.Security.SecurityException] { 60 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 61 | } catch [System.Management.Automation.ItemNotFoundException] { 62 | Write-Warning $psitem.Exception.ErrorRecord 63 | } catch { 64 | Write-Warning "Unable to set $Name due to unhandled exception" 65 | Write-Warning $psitem.Exception.StackTrace 66 | } 67 | } 68 | 69 | ``` 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json) 78 | 79 | -------------------------------------------------------------------------------- /docs/dev/tweaks/Customize-Preferences/DetailedBSoD.md: -------------------------------------------------------------------------------- 1 | # Detailed BSoD 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | If Enabled then you will see a detailed Blue Screen of Death (BSOD) with more information. 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Detailed BSoD", 22 | "Description": "If Enabled then you will see a detailed Blue Screen of Death (BSOD) with more information.", 23 | "category": "Customize Preferences", 24 | "panel": "2", 25 | "Order": "a205_", 26 | "Type": "Toggle", 27 | "link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/DetailedBSoD" 28 | } 29 | ``` 30 | 31 |
32 | 33 | ## Function: Invoke-WinUtilDetailedBSoD 34 | 35 | ```powershell 36 | Function Invoke-WinUtilDetailedBSoD { 37 | <# 38 | 39 | .SYNOPSIS 40 | Enables/Disables Detailed BSoD 41 | (Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\CrashControl' -Name 'DisplayParameters').DisplayParameters 42 | 43 | 44 | #> 45 | Param($Enabled) 46 | try { 47 | if ($Enabled -eq $false) { 48 | Write-Host "Enabling Detailed BSoD" 49 | $value = 1 50 | } else { 51 | Write-Host "Disabling Detailed BSoD" 52 | $value =0 53 | } 54 | 55 | $Path = "HKLM:\SYSTEM\CurrentControlSet\Control\CrashControl" 56 | Set-ItemProperty -Path $Path -Name DisplayParameters -Value $value 57 | } catch [System.Security.SecurityException] { 58 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 59 | } catch [System.Management.Automation.ItemNotFoundException] { 60 | Write-Warning $psitem.Exception.ErrorRecord 61 | } catch { 62 | Write-Warning "Unable to set $Name due to unhandled exception" 63 | Write-Warning $psitem.Exception.StackTrace 64 | } 65 | } 66 | 67 | ``` 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json) 76 | 77 | -------------------------------------------------------------------------------- /docs/dev/tweaks/Customize-Preferences/HiddenFiles.md: -------------------------------------------------------------------------------- 1 | # Show Hidden Files 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | If Enabled then Hidden Files will be shown. 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Show Hidden Files", 22 | "Description": "If Enabled then Hidden Files will be shown.", 23 | "category": "Customize Preferences", 24 | "panel": "2", 25 | "Order": "a200_", 26 | "Type": "Toggle", 27 | "link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/HiddenFiles" 28 | } 29 | ``` 30 | 31 |
32 | 33 | ## Function: Invoke-WinUtilHiddenFiles 34 | 35 | ```powershell 36 | function Invoke-WinUtilHiddenFiles { 37 | <# 38 | 39 | .SYNOPSIS 40 | Enable/Disable Hidden Files 41 | 42 | .PARAMETER Enabled 43 | Indicates whether to enable or disable Hidden Files 44 | 45 | #> 46 | Param($Enabled) 47 | try { 48 | if ($Enabled -eq $false) { 49 | Write-Host "Enabling Hidden Files" 50 | $value = 1 51 | } else { 52 | Write-Host "Disabling Hidden Files" 53 | $value = 0 54 | } 55 | $Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" 56 | Set-ItemProperty -Path $Path -Name Hidden -Value $value 57 | } catch [System.Security.SecurityException] { 58 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 59 | } catch [System.Management.Automation.ItemNotFoundException] { 60 | Write-Warning $psitem.Exception.ErrorRecord 61 | } catch { 62 | Write-Warning "Unable to set $Name due to unhandled exception" 63 | Write-Warning $psitem.Exception.StackTrace 64 | } 65 | } 66 | 67 | ``` 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json) 76 | 77 | -------------------------------------------------------------------------------- /docs/dev/tweaks/Customize-Preferences/NumLock.md: -------------------------------------------------------------------------------- 1 | # NumLock on Startup 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | Toggle the Num Lock key state when your computer starts. 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "NumLock on Startup", 22 | "Description": "Toggle the Num Lock key state when your computer starts.", 23 | "category": "Customize Preferences", 24 | "panel": "2", 25 | "Order": "a102_", 26 | "Type": "Toggle", 27 | "link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/NumLock" 28 | } 29 | ``` 30 | 31 |
32 | 33 | ## Function: Invoke-WinUtilNumLock 34 | 35 | ```powershell 36 | function Invoke-WinUtilNumLock { 37 | <# 38 | .SYNOPSIS 39 | Disables/Enables NumLock on startup 40 | .PARAMETER Enabled 41 | Indicates whether to enable or disable Numlock on startup 42 | #> 43 | Param($Enabled) 44 | try { 45 | if ($Enabled -eq $false) { 46 | Write-Host "Enabling Numlock on startup" 47 | $value = 2 48 | } else { 49 | Write-Host "Disabling Numlock on startup" 50 | $value = 0 51 | } 52 | New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS 53 | $HKUPath = "HKU:\.Default\Control Panel\Keyboard" 54 | $HKCUPath = "HKCU:\Control Panel\Keyboard" 55 | Set-ItemProperty -Path $HKUPath -Name InitialKeyboardIndicators -Value $value 56 | Set-ItemProperty -Path $HKCUPath -Name InitialKeyboardIndicators -Value $value 57 | } 58 | Catch [System.Security.SecurityException] { 59 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 60 | } catch [System.Management.Automation.ItemNotFoundException] { 61 | Write-Warning $psitem.Exception.ErrorRecord 62 | } catch { 63 | Write-Warning "Unable to set $Name due to unhandled exception" 64 | Write-Warning $psitem.Exception.StackTrace 65 | } 66 | } 67 | 68 | ``` 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json) 77 | 78 | -------------------------------------------------------------------------------- /docs/dev/tweaks/Customize-Preferences/ShowExt.md: -------------------------------------------------------------------------------- 1 | # Show File Extensions 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | If enabled then File extensions (e.g., .txt, .jpg) are visible. 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Show File Extensions", 22 | "Description": "If enabled then File extensions (e.g., .txt, .jpg) are visible.", 23 | "category": "Customize Preferences", 24 | "panel": "2", 25 | "Order": "a201_", 26 | "Type": "Toggle", 27 | "link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/ShowExt" 28 | } 29 | ``` 30 | 31 |
32 | 33 | ## Function: Invoke-WinUtilShowExt 34 | 35 | ```powershell 36 | function Invoke-WinUtilShowExt { 37 | <# 38 | .SYNOPSIS 39 | Disables/Enables Show file Extentions 40 | .PARAMETER Enabled 41 | Indicates whether to enable or disable Show file extentions 42 | #> 43 | Param($Enabled) 44 | try { 45 | if ($Enabled -eq $false) { 46 | Write-Host "Showing file extentions" 47 | $value = 0 48 | } else { 49 | Write-Host "hiding file extensions" 50 | $value = 1 51 | } 52 | $Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" 53 | Set-ItemProperty -Path $Path -Name HideFileExt -Value $value 54 | } catch [System.Security.SecurityException] { 55 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 56 | } catch [System.Management.Automation.ItemNotFoundException] { 57 | Write-Warning $psitem.Exception.ErrorRecord 58 | } catch { 59 | Write-Warning "Unable to set $Name due to unhandled exception" 60 | Write-Warning $psitem.Exception.StackTrace 61 | } 62 | } 63 | 64 | ``` 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json) 73 | 74 | -------------------------------------------------------------------------------- /docs/dev/tweaks/Customize-Preferences/SnapFlyout.md: -------------------------------------------------------------------------------- 1 | # Snap Assist Flyout 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | If enabled then Snap preview is disabled when maximize button is hovered. 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Snap Assist Flyout", 22 | "Description": "If enabled then Snap preview is disabled when maximize button is hovered.", 23 | "category": "Customize Preferences", 24 | "panel": "2", 25 | "Order": "a105_", 26 | "Type": "Toggle", 27 | "link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/SnapFlyout" 28 | } 29 | ``` 30 | 31 |
32 | 33 | ## Function: Invoke-WinUtilSnapFlyout 34 | 35 | ```powershell 36 | function Invoke-WinUtilSnapFlyout { 37 | <# 38 | .SYNOPSIS 39 | Disables/Enables Snap Assist Flyout on startup 40 | .PARAMETER Enabled 41 | Indicates whether to enable or disable Snap Assist Flyout on startup 42 | #> 43 | Param($Enabled) 44 | try { 45 | if ($Enabled -eq $false) { 46 | Write-Host "Enabling Snap Assist Flyout On startup" 47 | $value = 1 48 | } else { 49 | Write-Host "Disabling Snap Assist Flyout On startup" 50 | $value = 0 51 | } 52 | # taskkill.exe /F /IM "explorer.exe" 53 | $Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" 54 | taskkill.exe /F /IM "explorer.exe" 55 | Set-ItemProperty -Path $Path -Name EnableSnapAssistFlyout -Value $value 56 | Start-Process "explorer.exe" 57 | } catch [System.Security.SecurityException] { 58 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 59 | } catch [System.Management.Automation.ItemNotFoundException] { 60 | Write-Warning $psitem.Exception.ErrorRecord 61 | } catch { 62 | Write-Warning "Unable to set $Name due to unhandled exception" 63 | Write-Warning $psitem.Exception.StackTrace 64 | } 65 | } 66 | 67 | ``` 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json) 76 | 77 | -------------------------------------------------------------------------------- /docs/dev/tweaks/Customize-Preferences/SnapWindow.md: -------------------------------------------------------------------------------- 1 | # Snap Window 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | If enabled you can align windows by dragging them. | Relogin Required 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Snap Window", 22 | "Description": "If enabled you can align windows by dragging them. | Relogin Required", 23 | "category": "Customize Preferences", 24 | "panel": "2", 25 | "Order": "a104_", 26 | "Type": "Toggle", 27 | "link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/SnapWindow" 28 | } 29 | ``` 30 | 31 |
32 | 33 | ## Function: Invoke-WinUtilSnapWindow 34 | 35 | ```powershell 36 | function Invoke-WinUtilSnapWindow { 37 | <# 38 | .SYNOPSIS 39 | Disables/Enables Snapping Windows on startup 40 | .PARAMETER Enabled 41 | Indicates whether to enable or disable Snapping Windows on startup 42 | #> 43 | Param($Enabled) 44 | try { 45 | if ($Enabled -eq $false) { 46 | Write-Host "Enabling Snap Windows On startup | Relogin Required" 47 | $value = 1 48 | } else { 49 | Write-Host "Disabling Snap Windows On startup | Relogin Required" 50 | $value = 0 51 | } 52 | $Path = "HKCU:\Control Panel\Desktop" 53 | Set-ItemProperty -Path $Path -Name WindowArrangementActive -Value $value 54 | } catch [System.Security.SecurityException] { 55 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 56 | } catch [System.Management.Automation.ItemNotFoundException] { 57 | Write-Warning $psitem.Exception.ErrorRecord 58 | } catch { 59 | Write-Warning "Unable to set $Name due to unhandled exception" 60 | Write-Warning $psitem.Exception.StackTrace 61 | } 62 | } 63 | 64 | ``` 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json) 73 | 74 | -------------------------------------------------------------------------------- /docs/dev/tweaks/Customize-Preferences/TaskView.md: -------------------------------------------------------------------------------- 1 | # Task View Button in Taskbar 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | If Enabled then Task View Button in Taskbar will be shown. 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Task View Button in Taskbar", 22 | "Description": "If Enabled then Task View Button in Taskbar will be shown.", 23 | "category": "Customize Preferences", 24 | "panel": "2", 25 | "Order": "a203_", 26 | "Type": "Toggle", 27 | "link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/TaskView" 28 | } 29 | ``` 30 | 31 |
32 | 33 | ## Function: Invoke-WinUtilTaskView 34 | 35 | ```powershell 36 | function Invoke-WinUtilTaskView { 37 | <# 38 | 39 | .SYNOPSIS 40 | Enable/Disable Task View 41 | 42 | .PARAMETER Enabled 43 | Indicates whether to enable or disable Task View 44 | 45 | #> 46 | Param($Enabled) 47 | try { 48 | if ($Enabled -eq $false) { 49 | Write-Host "Enabling Task View" 50 | $value = 1 51 | } else { 52 | Write-Host "Disabling Task View" 53 | $value = 0 54 | } 55 | $Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" 56 | Set-ItemProperty -Path $Path -Name ShowTaskViewButton -Value $value 57 | } catch [System.Security.SecurityException] { 58 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 59 | } catch [System.Management.Automation.ItemNotFoundException] { 60 | Write-Warning $psitem.Exception.ErrorRecord 61 | } catch { 62 | Write-Warning "Unable to set $Name due to unhandled exception" 63 | Write-Warning $psitem.Exception.StackTrace 64 | } 65 | } 66 | 67 | ``` 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json) 76 | 77 | -------------------------------------------------------------------------------- /docs/dev/tweaks/Customize-Preferences/TaskbarAlignment.md: -------------------------------------------------------------------------------- 1 | # Center Taskbar Items 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | [Windows 11] If Enabled then the Taskbar Items will be shown on the Center, otherwise the Taskbar Items will be shown on the Left. 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Center Taskbar Items", 22 | "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.", 23 | "category": "Customize Preferences", 24 | "panel": "2", 25 | "Order": "a204_", 26 | "Type": "Toggle", 27 | "link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/TaskbarAlignment" 28 | } 29 | ``` 30 | 31 |
32 | 33 | ## Function: Invoke-WinUtilTaskbarAlignment 34 | 35 | ```powershell 36 | function Invoke-WinUtilTaskbarAlignment { 37 | <# 38 | 39 | .SYNOPSIS 40 | Switches between Center & Left Taskbar Alignment 41 | 42 | .PARAMETER Enabled 43 | Indicates whether to make Taskbar Alignment Center or Left 44 | 45 | #> 46 | Param($Enabled) 47 | try { 48 | if ($Enabled -eq $false) { 49 | Write-Host "Making Taskbar Alignment to the Center" 50 | $value = 1 51 | } else { 52 | Write-Host "Making Taskbar Alignment to the Left" 53 | $value = 0 54 | } 55 | $Path = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" 56 | Set-ItemProperty -Path $Path -Name "TaskbarAl" -Value $value 57 | } catch [System.Security.SecurityException] { 58 | Write-Warning "Unable to set $Path\$Name to $value due to a Security Exception" 59 | } catch [System.Management.Automation.ItemNotFoundException] { 60 | Write-Warning $psitem.Exception.ErrorRecord 61 | } catch { 62 | Write-Warning "Unable to set $Name due to unhandled exception" 63 | Write-Warning $psitem.Exception.StackTrace 64 | } 65 | } 66 | 67 | ``` 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json) 76 | 77 | -------------------------------------------------------------------------------- /docs/dev/tweaks/Customize-Preferences/TaskbarSearch.md: -------------------------------------------------------------------------------- 1 | # Search Button in Taskbar 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | If Enabled Search Button will be on the taskbar. 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Search Button in Taskbar", 22 | "Description": "If Enabled Search Button will be on the taskbar.", 23 | "category": "Customize Preferences", 24 | "panel": "2", 25 | "Order": "a202_", 26 | "Type": "Toggle", 27 | "link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/TaskbarSearch" 28 | } 29 | ``` 30 | 31 |
32 | 33 | ## Function: Invoke-WinUtilTaskbarSearch 34 | 35 | ```powershell 36 | function Invoke-WinUtilTaskbarSearch { 37 | <# 38 | 39 | .SYNOPSIS 40 | Enable/Disable Taskbar Search Button. 41 | 42 | .PARAMETER Enabled 43 | Indicates whether to enable or disable Taskbar Search Button. 44 | 45 | #> 46 | Param($Enabled) 47 | try { 48 | if ($Enabled -eq $false) { 49 | Write-Host "Enabling Search Button" 50 | $value = 1 51 | } else { 52 | Write-Host "Disabling Search Button" 53 | $value = 0 54 | } 55 | $Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Search\" 56 | Set-ItemProperty -Path $Path -Name SearchboxTaskbarMode -Value $value 57 | } catch [System.Security.SecurityException] { 58 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 59 | } catch [System.Management.Automation.ItemNotFoundException] { 60 | Write-Warning $psitem.Exception.ErrorRecord 61 | } catch { 62 | Write-Warning "Unable to set $Name due to unhandled exception" 63 | Write-Warning $psitem.Exception.StackTrace 64 | } 65 | } 66 | 67 | ``` 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json) 76 | 77 | -------------------------------------------------------------------------------- /docs/dev/tweaks/Customize-Preferences/TaskbarWidgets.md: -------------------------------------------------------------------------------- 1 | # Widgets Button in Taskbar 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | If Enabled then Widgets Button in Taskbar will be shown. 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Widgets Button in Taskbar", 22 | "Description": "If Enabled then Widgets Button in Taskbar will be shown.", 23 | "category": "Customize Preferences", 24 | "panel": "2", 25 | "Order": "a204_", 26 | "Type": "Toggle", 27 | "link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/TaskbarWidgets" 28 | } 29 | ``` 30 | 31 |
32 | 33 | ## Function: Invoke-WinUtilTaskbarWidgets 34 | 35 | ```powershell 36 | function Invoke-WinUtilTaskbarWidgets { 37 | <# 38 | 39 | .SYNOPSIS 40 | Enable/Disable Taskbar Widgets 41 | 42 | .PARAMETER Enabled 43 | Indicates whether to enable or disable Taskbar Widgets 44 | 45 | #> 46 | Param($Enabled) 47 | try { 48 | if ($Enabled -eq $false) { 49 | Write-Host "Enabling Taskbar Widgets" 50 | $value = 1 51 | } else { 52 | Write-Host "Disabling Taskbar Widgets" 53 | $value = 0 54 | } 55 | $Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" 56 | Set-ItemProperty -Path $Path -Name TaskbarDa -Value $value 57 | } catch [System.Security.SecurityException] { 58 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 59 | } catch [System.Management.Automation.ItemNotFoundException] { 60 | Write-Warning $psitem.Exception.ErrorRecord 61 | } catch { 62 | Write-Warning "Unable to set $Name due to unhandled exception" 63 | Write-Warning $psitem.Exception.StackTrace 64 | } 65 | } 66 | 67 | ``` 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json) 76 | 77 | -------------------------------------------------------------------------------- /docs/dev/tweaks/Customize-Preferences/VerboseLogon.md: -------------------------------------------------------------------------------- 1 | # Verbose Messages During Logon 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | Show detailed messages during the login process for troubleshooting and diagnostics. 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Verbose Messages During Logon", 22 | "Description": "Show detailed messages during the login process for troubleshooting and diagnostics.", 23 | "category": "Customize Preferences", 24 | "panel": "2", 25 | "Order": "a103_", 26 | "Type": "Toggle", 27 | "link": "https://christitustech.github.io/winutil/dev/tweaks/Customize-Preferences/VerboseLogon" 28 | } 29 | ``` 30 | 31 |
32 | 33 | ## Function: Invoke-WinUtilVerboseLogon 34 | 35 | ```powershell 36 | function Invoke-WinUtilVerboseLogon { 37 | <# 38 | .SYNOPSIS 39 | Disables/Enables VerboseLogon Messages 40 | .PARAMETER Enabled 41 | Indicates whether to enable or disable VerboseLogon messages 42 | #> 43 | Param($Enabled) 44 | try { 45 | if ($Enabled -eq $false) { 46 | Write-Host "Enabling Verbose Logon Messages" 47 | $value = 1 48 | } else { 49 | Write-Host "Disabling Verbose Logon Messages" 50 | $value = 0 51 | } 52 | $Path = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" 53 | Set-ItemProperty -Path $Path -Name VerboseStatus -Value $value 54 | } catch [System.Security.SecurityException] { 55 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 56 | } catch [System.Management.Automation.ItemNotFoundException] { 57 | Write-Warning $psitem.Exception.ErrorRecord 58 | } catch { 59 | Write-Warning "Unable to set $Name due to unhandled exception" 60 | Write-Warning $psitem.Exception.StackTrace 61 | } 62 | } 63 | 64 | ``` 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json) 73 | 74 | -------------------------------------------------------------------------------- /docs/dev/tweaks/Essential-Tweaks/ConsumerFeatures.md: -------------------------------------------------------------------------------- 1 | # Disable ConsumerFeatures 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | 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) 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Disable ConsumerFeatures", 22 | "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)", 23 | "category": "Essential Tweaks", 24 | "panel": "1", 25 | "Order": "a003_", 26 | "registry": [ 27 | { 28 | "Path": "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\CloudContent", 29 | "OriginalValue": "0", 30 | "Name": "DisableWindowsConsumerFeatures", 31 | "Value": "1", 32 | "Type": "DWord" 33 | } 34 | ], 35 | "link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/ConsumerFeatures" 36 | } 37 | ``` 38 | 39 |
40 | 41 | ## Registry Changes 42 | 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. 43 | 44 | 45 | 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). 46 | 47 | ### Registry Key: DisableWindowsConsumerFeatures 48 | 49 | **Type:** DWord 50 | 51 | **Original Value:** 0 52 | 53 | **New Value:** 1 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json) 63 | 64 | -------------------------------------------------------------------------------- /docs/dev/tweaks/Essential-Tweaks/DeleteTempFiles.md: -------------------------------------------------------------------------------- 1 | # Delete Temporary Files 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | Erases TEMP Folders 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Delete Temporary Files", 22 | "Description": "Erases TEMP Folders", 23 | "category": "Essential Tweaks", 24 | "panel": "1", 25 | "Order": "a002_", 26 | "InvokeScript": [ 27 | "Get-ChildItem -Path \"C:\\Windows\\Temp\" *.* -Recurse | Remove-Item -Force -Recurse 28 | Get-ChildItem -Path $env:TEMP *.* -Recurse | Remove-Item -Force -Recurse" 29 | ], 30 | "link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/DeleteTempFiles" 31 | } 32 | ``` 33 | 34 |
35 | 36 | ## Invoke Script 37 | 38 | ```powershell 39 | Get-ChildItem -Path "C:\Windows\Temp" *.* -Recurse | Remove-Item -Force -Recurse 40 | Get-ChildItem -Path $env:TEMP *.* -Recurse | Remove-Item -Force -Recurse 41 | 42 | ``` 43 | 44 | 45 | 46 | 47 | 48 | 49 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json) 50 | 51 | -------------------------------------------------------------------------------- /docs/dev/tweaks/Essential-Tweaks/DiskCleanup.md: -------------------------------------------------------------------------------- 1 | # Run Disk Cleanup 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | Runs Disk Cleanup on Drive C: and removes old Windows Updates. 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Run Disk Cleanup", 22 | "Description": "Runs Disk Cleanup on Drive C: and removes old Windows Updates.", 23 | "category": "Essential Tweaks", 24 | "panel": "1", 25 | "Order": "a009_", 26 | "InvokeScript": [ 27 | " 28 | cleanmgr.exe /d C: /VERYLOWDISK 29 | Dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase 30 | " 31 | ], 32 | "link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/DiskCleanup" 33 | } 34 | ``` 35 | 36 |
37 | 38 | ## Invoke Script 39 | 40 | ```powershell 41 | 42 | cleanmgr.exe /d C: /VERYLOWDISK 43 | Dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase 44 | 45 | 46 | ``` 47 | 48 | 49 | 50 | 51 | 52 | 53 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json) 54 | 55 | -------------------------------------------------------------------------------- /docs/dev/tweaks/Essential-Tweaks/Home.md: -------------------------------------------------------------------------------- 1 | # Disable Homegroup 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | 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. 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Disable Homegroup", 22 | "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.", 23 | "category": "Essential Tweaks", 24 | "panel": "1", 25 | "Order": "a005_", 26 | "service": [ 27 | { 28 | "Name": "HomeGroupListener", 29 | "StartupType": "Manual", 30 | "OriginalType": "Automatic" 31 | }, 32 | { 33 | "Name": "HomeGroupProvider", 34 | "StartupType": "Manual", 35 | "OriginalType": "Automatic" 36 | } 37 | ], 38 | "link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/Home" 39 | } 40 | ``` 41 | 42 |
43 | 44 | ## Service Changes 45 | 46 | Windows services are background processes for system functions or applications. Setting some to manual optimizes performance by starting them only when needed. 47 | 48 | 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). 49 | 50 | ### Service Name: HomeGroupListener 51 | 52 | **Startup Type:** Manual 53 | 54 | **Original Type:** Automatic 55 | 56 | ### Service Name: HomeGroupProvider 57 | 58 | **Startup Type:** Manual 59 | 60 | **Original Type:** Automatic 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json) 70 | 71 | -------------------------------------------------------------------------------- /docs/dev/tweaks/Essential-Tweaks/IPv46.md: -------------------------------------------------------------------------------- 1 | # Prefer IPv4 over IPv6 2 | 3 | Last Updated: 2024-08-27 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | To set the IPv4 preference can have latency and security benefits on private networks where IPv6 is not configured. 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Prefer IPv4 over IPv6", 22 | "Description": "To set the IPv4 preference can have latency and security benefits on private networks where IPv6 is not configured.", 23 | "category": "Essential Tweaks", 24 | "panel": "1", 25 | "Order": "a005_", 26 | "registry": [ 27 | { 28 | "Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Services\\Tcpip6\\Parameters", 29 | "Name": "DisabledComponents", 30 | "Value": "32", 31 | "OriginalValue": "0", 32 | "Type": "DWord" 33 | } 34 | ], 35 | "link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/IPv46" 36 | } 37 | ``` 38 | 39 |
40 | 41 | ## Registry Changes 42 | 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. 43 | 44 | 45 | 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). 46 | 47 | ### Registry Key: DisabledComponents 48 | 49 | **Type:** DWord 50 | 51 | **Original Value:** 0 52 | 53 | **New Value:** 32 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json) 63 | 64 | -------------------------------------------------------------------------------- /docs/dev/tweaks/Essential-Tweaks/Powershell7Tele.md: -------------------------------------------------------------------------------- 1 | # Disable Powershell 7 Telemetry 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | 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. 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Disable Powershell 7 Telemetry", 22 | "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.", 23 | "category": "Essential Tweaks", 24 | "panel": "1", 25 | "Order": "a009_", 26 | "InvokeScript": [ 27 | "[Environment]::SetEnvironmentVariable('POWERSHELL_TELEMETRY_OPTOUT', '1', 'Machine')" 28 | ], 29 | "UndoScript": [ 30 | "[Environment]::SetEnvironmentVariable('POWERSHELL_TELEMETRY_OPTOUT', '', 'Machine')" 31 | ], 32 | "link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/Powershell7Tele" 33 | } 34 | ``` 35 | 36 |
37 | 38 | ## Invoke Script 39 | 40 | ```powershell 41 | [Environment]::SetEnvironmentVariable('POWERSHELL_TELEMETRY_OPTOUT', '1', 'Machine') 42 | 43 | ``` 44 | ## Undo Script 45 | 46 | ```powershell 47 | [Environment]::SetEnvironmentVariable('POWERSHELL_TELEMETRY_OPTOUT', '', 'Machine') 48 | 49 | ``` 50 | 51 | 52 | 53 | 54 | 55 | 56 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json) 57 | 58 | -------------------------------------------------------------------------------- /docs/dev/tweaks/Essential-Tweaks/Storage.md: -------------------------------------------------------------------------------- 1 | # Disable Storage Sense 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | Storage Sense deletes temp files automatically. 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Disable Storage Sense", 22 | "Description": "Storage Sense deletes temp files automatically.", 23 | "category": "Essential Tweaks", 24 | "panel": "1", 25 | "Order": "a005_", 26 | "InvokeScript": [ 27 | "Set-ItemProperty -Path \"HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\StorageSense\\Parameters\\StoragePolicy\" -Name \"01\" -Value 0 -Type Dword -Force" 28 | ], 29 | "UndoScript": [ 30 | "Set-ItemProperty -Path \"HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\StorageSense\\Parameters\\StoragePolicy\" -Name \"01\" -Value 1 -Type Dword -Force" 31 | ], 32 | "link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/Storage" 33 | } 34 | ``` 35 | 36 |
37 | 38 | ## Invoke Script 39 | 40 | ```powershell 41 | Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\StorageSense\Parameters\StoragePolicy" -Name "01" -Value 0 -Type Dword -Force 42 | 43 | ``` 44 | ## Undo Script 45 | 46 | ```powershell 47 | Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\StorageSense\Parameters\StoragePolicy" -Name "01" -Value 1 -Type Dword -Force 48 | 49 | ``` 50 | 51 | 52 | 53 | 54 | 55 | 56 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json) 57 | 58 | -------------------------------------------------------------------------------- /docs/dev/tweaks/Essential-Tweaks/Wifi.md: -------------------------------------------------------------------------------- 1 | # Disable Wifi-Sense 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | Wifi Sense is a spying service that phones home all nearby scanned wifi networks and your current geo location. 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Disable Wifi-Sense", 22 | "Description": "Wifi Sense is a spying service that phones home all nearby scanned wifi networks and your current geo location.", 23 | "category": "Essential Tweaks", 24 | "panel": "1", 25 | "Order": "a005_", 26 | "registry": [ 27 | { 28 | "Path": "HKLM:\\Software\\Microsoft\\PolicyManager\\default\\WiFi\\AllowWiFiHotSpotReporting", 29 | "Name": "Value", 30 | "Type": "DWord", 31 | "Value": "0", 32 | "OriginalValue": "1" 33 | }, 34 | { 35 | "Path": "HKLM:\\Software\\Microsoft\\PolicyManager\\default\\WiFi\\AllowAutoConnectToWiFiSenseHotspots", 36 | "Name": "Value", 37 | "Type": "DWord", 38 | "Value": "0", 39 | "OriginalValue": "1" 40 | } 41 | ], 42 | "link": "https://christitustech.github.io/winutil/dev/tweaks/Essential-Tweaks/Wifi" 43 | } 44 | ``` 45 | 46 |
47 | 48 | ## Registry Changes 49 | 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. 50 | 51 | 52 | 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). 53 | 54 | ### Registry Key: Value 55 | 56 | **Type:** DWord 57 | 58 | **Original Value:** 1 59 | 60 | **New Value:** 0 61 | 62 | ### Registry Key: Value 63 | 64 | **Type:** DWord 65 | 66 | **Original Value:** 1 67 | 68 | **New Value:** 0 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json) 78 | 79 | -------------------------------------------------------------------------------- /docs/dev/tweaks/z--Advanced-Tweaks---CAUTION/DisableBGapps.md: -------------------------------------------------------------------------------- 1 | # Disable Background Apps 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | Disables all Microsoft Store apps from running in the background, which has to be done individually since Win11 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Disable Background Apps", 22 | "Description": "Disables all Microsoft Store apps from running in the background, which has to be done individually since Win11", 23 | "category": "z__Advanced Tweaks - CAUTION", 24 | "panel": "1", 25 | "Order": "a024_", 26 | "registry": [ 27 | { 28 | "Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\BackgroundAccessApplications", 29 | "Name": "GlobalUserDisabled", 30 | "Value": "1", 31 | "OriginalValue": "0", 32 | "Type": "DWord" 33 | } 34 | ], 35 | "link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/DisableBGapps" 36 | } 37 | ``` 38 | 39 |
40 | 41 | ## Registry Changes 42 | 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. 43 | 44 | 45 | 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). 46 | 47 | ### Registry Key: GlobalUserDisabled 48 | 49 | **Type:** DWord 50 | 51 | **Original Value:** 0 52 | 53 | **New Value:** 1 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json) 63 | 64 | -------------------------------------------------------------------------------- /docs/dev/tweaks/z--Advanced-Tweaks---CAUTION/DisableFSO.md: -------------------------------------------------------------------------------- 1 | # Disable Fullscreen Optimizations 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | Disables FSO in all applications. NOTE: This will disable Color Management in Exclusive Fullscreen 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Disable Fullscreen Optimizations", 22 | "Description": "Disables FSO in all applications. NOTE: This will disable Color Management in Exclusive Fullscreen", 23 | "category": "z__Advanced Tweaks - CAUTION", 24 | "panel": "1", 25 | "Order": "a024_", 26 | "registry": [ 27 | { 28 | "Path": "HKCU:\\System\\GameConfigStore", 29 | "Name": "GameDVR_DXGIHonorFSEWindowsCompatible", 30 | "Value": "1", 31 | "OriginalValue": "0", 32 | "Type": "DWord" 33 | } 34 | ], 35 | "link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/DisableFSO" 36 | } 37 | ``` 38 | 39 |
40 | 41 | ## Registry Changes 42 | 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. 43 | 44 | 45 | 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). 46 | 47 | ### Registry Key: GameDVR_DXGIHonorFSEWindowsCompatible 48 | 49 | **Type:** DWord 50 | 51 | **Original Value:** 0 52 | 53 | **New Value:** 1 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json) 63 | 64 | -------------------------------------------------------------------------------- /docs/dev/tweaks/z--Advanced-Tweaks---CAUTION/DisableNotifications.md: -------------------------------------------------------------------------------- 1 | # Disable Notification Tray/Calendar 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | Disables all Notifications INCLUDING Calendar 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Disable Notification Tray/Calendar", 22 | "Description": "Disables all Notifications INCLUDING Calendar", 23 | "category": "z__Advanced Tweaks - CAUTION", 24 | "panel": "1", 25 | "Order": "a026_", 26 | "registry": [ 27 | { 28 | "Path": "HKCU:\\Software\\Policies\\Microsoft\\Windows\\Explorer", 29 | "Name": "DisableNotificationCenter", 30 | "Type": "DWord", 31 | "Value": "1", 32 | "OriginalValue": "0" 33 | }, 34 | { 35 | "Path": "HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\PushNotifications", 36 | "Name": "ToastEnabled", 37 | "Type": "DWord", 38 | "Value": "0", 39 | "OriginalValue": "1" 40 | } 41 | ], 42 | "link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/DisableNotifications" 43 | } 44 | ``` 45 | 46 |
47 | 48 | ## Registry Changes 49 | 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. 50 | 51 | 52 | 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). 53 | 54 | ### Registry Key: DisableNotificationCenter 55 | 56 | **Type:** DWord 57 | 58 | **Original Value:** 0 59 | 60 | **New Value:** 1 61 | 62 | ### Registry Key: ToastEnabled 63 | 64 | **Type:** DWord 65 | 66 | **Original Value:** 1 67 | 68 | **New Value:** 0 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json) 78 | 79 | -------------------------------------------------------------------------------- /docs/dev/tweaks/z--Advanced-Tweaks---CAUTION/Disableipsix.md: -------------------------------------------------------------------------------- 1 | # Disable IPv6 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | Disables IPv6. 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Disable IPv6", 22 | "Description": "Disables IPv6.", 23 | "category": "z__Advanced Tweaks - CAUTION", 24 | "panel": "1", 25 | "Order": "a023_", 26 | "registry": [ 27 | { 28 | "Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Services\\Tcpip6\\Parameters", 29 | "Name": "DisabledComponents", 30 | "Value": "255", 31 | "OriginalValue": "0", 32 | "Type": "DWord" 33 | } 34 | ], 35 | "InvokeScript": [ 36 | "Disable-NetAdapterBinding -Name \"*\" -ComponentID ms_tcpip6" 37 | ], 38 | "UndoScript": [ 39 | "Enable-NetAdapterBinding -Name \"*\" -ComponentID ms_tcpip6" 40 | ], 41 | "link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/Disableipsix" 42 | } 43 | ``` 44 | 45 |
46 | 47 | ## Invoke Script 48 | 49 | ```powershell 50 | Disable-NetAdapterBinding -Name "*" -ComponentID ms_tcpip6 51 | 52 | ``` 53 | ## Undo Script 54 | 55 | ```powershell 56 | Enable-NetAdapterBinding -Name "*" -ComponentID ms_tcpip6 57 | 58 | ``` 59 | ## Registry Changes 60 | 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. 61 | 62 | 63 | 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). 64 | 65 | ### Registry Key: DisabledComponents 66 | 67 | **Type:** DWord 68 | 69 | **Original Value:** 0 70 | 71 | **New Value:** 255 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json) 81 | 82 | -------------------------------------------------------------------------------- /docs/dev/tweaks/z--Advanced-Tweaks---CAUTION/OOSUbutton.md: -------------------------------------------------------------------------------- 1 | # Run OO Shutup 10 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | Preview Code 16 | 17 | ```json 18 | { 19 | "Content": "Run OO Shutup 10", 20 | "category": "z__Advanced Tweaks - CAUTION", 21 | "panel": "1", 22 | "Order": "a039_", 23 | "Type": "Button", 24 | "link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/OOSUbutton" 25 | } 26 | ``` 27 | 28 |
29 | 30 | ## Function: Invoke-WPFOOSU 31 | 32 | ```powershell 33 | function Invoke-WPFOOSU { 34 | <# 35 | .SYNOPSIS 36 | Downloads and runs OO Shutup 10 37 | #> 38 | try { 39 | $OOSU_filepath = "$ENV:temp\OOSU10.exe" 40 | $Initial_ProgressPreference = $ProgressPreference 41 | $ProgressPreference = "SilentlyContinue" # Disables the Progress Bar to drasticly speed up Invoke-WebRequest 42 | Invoke-WebRequest -Uri "https://dl5.oo-software.com/files/ooshutup10/OOSU10.exe" -OutFile $OOSU_filepath 43 | Write-Host "Starting OO Shutup 10 ..." 44 | Start-Process $OOSU_filepath 45 | } catch { 46 | Write-Host "Error Downloading and Running OO Shutup 10" -ForegroundColor Red 47 | } 48 | finally { 49 | $ProgressPreference = $Initial_ProgressPreference 50 | } 51 | } 52 | 53 | ``` 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json) 62 | 63 | -------------------------------------------------------------------------------- /docs/dev/tweaks/z--Advanced-Tweaks---CAUTION/Teredo.md: -------------------------------------------------------------------------------- 1 | # Disable Teredo 2 | 3 | Last Updated: 2024-08-27 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | Teredo network tunneling is a ipv6 feature that can cause additional latency, but may cause problems with some games 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Disable Teredo", 22 | "Description": "Teredo network tunneling is a ipv6 feature that can cause additional latency, but may cause problems with some games", 23 | "category": "z__Advanced Tweaks - CAUTION", 24 | "panel": "1", 25 | "Order": "a023_", 26 | "registry": [ 27 | { 28 | "Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Services\\Tcpip6\\Parameters", 29 | "Name": "DisabledComponents", 30 | "Value": "1", 31 | "OriginalValue": "0", 32 | "Type": "DWord" 33 | } 34 | ], 35 | "InvokeScript": [ 36 | "netsh interface teredo set state disabled" 37 | ], 38 | "UndoScript": [ 39 | "netsh interface teredo set state default" 40 | ], 41 | "link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/Teredo" 42 | } 43 | ``` 44 | 45 |
46 | 47 | ## Invoke Script 48 | 49 | ```powershell 50 | netsh interface teredo set state disabled 51 | 52 | ``` 53 | ## Undo Script 54 | 55 | ```powershell 56 | netsh interface teredo set state default 57 | 58 | ``` 59 | ## Registry Changes 60 | 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. 61 | 62 | 63 | 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). 64 | 65 | ### Registry Key: DisabledComponents 66 | 67 | **Type:** DWord 68 | 69 | **Original Value:** 0 70 | 71 | **New Value:** 1 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json) 81 | 82 | -------------------------------------------------------------------------------- /docs/dev/tweaks/z--Advanced-Tweaks---CAUTION/UTC.md: -------------------------------------------------------------------------------- 1 | # Set Time to UTC (Dual Boot) 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | ## Description 9 | 10 | Essential for computers that are dual booting. Fixes the time sync with Linux Systems. 11 | 12 | 13 | 14 | 15 | 16 |
17 | Preview Code 18 | 19 | ```json 20 | { 21 | "Content": "Set Time to UTC (Dual Boot)", 22 | "Description": "Essential for computers that are dual booting. Fixes the time sync with Linux Systems.", 23 | "category": "z__Advanced Tweaks - CAUTION", 24 | "panel": "1", 25 | "Order": "a027_", 26 | "registry": [ 27 | { 28 | "Path": "HKLM:\\SYSTEM\\CurrentControlSet\\Control\\TimeZoneInformation", 29 | "Name": "RealTimeIsUniversal", 30 | "Type": "DWord", 31 | "Value": "1", 32 | "OriginalValue": "0" 33 | } 34 | ], 35 | "link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/UTC" 36 | } 37 | ``` 38 | 39 |
40 | 41 | ## Registry Changes 42 | 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. 43 | 44 | 45 | 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). 46 | 47 | ### Registry Key: RealTimeIsUniversal 48 | 49 | **Type:** DWord 50 | 51 | **Original Value:** 0 52 | 53 | **New Value:** 1 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json) 63 | 64 | -------------------------------------------------------------------------------- /docs/dev/tweaks/z--Advanced-Tweaks---CAUTION/changedns.md: -------------------------------------------------------------------------------- 1 | # DNS 2 | 3 | Last Updated: 2024-08-07 4 | 5 | 6 | !!! info 7 | 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.** 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | Preview Code 16 | 17 | ```json 18 | { 19 | "Content": "DNS", 20 | "category": "z__Advanced Tweaks - CAUTION", 21 | "panel": "1", 22 | "Order": "a040_", 23 | "Type": "Combobox", 24 | "ComboItems": "Default DHCP Google Cloudflare Cloudflare_Malware Cloudflare_Malware_Adult Open_DNS Quad9 AdGuard_Ads_Trackers AdGuard_Ads_Trackers_Malware_Adult", 25 | "link": "https://christitustech.github.io/winutil/dev/tweaks/z--Advanced-Tweaks---CAUTION/changedns" 26 | } 27 | ``` 28 | 29 |
30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | [View the JSON file](https://github.com/ChrisTitusTech/winutil/tree/main/config/tweaks.json) 38 | 39 | -------------------------------------------------------------------------------- /docs/faq.md: -------------------------------------------------------------------------------- 1 | # FAQ's 2 | 3 | ## How do I uninstall WinUtil? 4 | * You do not have to uninstall WinUtil. As it is a script you run from Powershell it only loads into your RAM. This means as soon as you close WinUtil it will be deleted off your system. 5 | 6 | ## I applied a tweak and now something doesn't work, what do I do? 7 | * If you applied a tweak and it breaks something, you can always revert the tweak by selecting the tweak and clicking "Undo Selected Tweaks". 8 | -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | # Welcome to the WinUtil Documentation! 2 | 3 | [![Version](https://img.shields.io/github/v/release/ChrisTitusTech/winutil?color=%230567ff&label=Latest%20Release&style=for-the-badge)](https://github.com/ChrisTitusTech/winutil/releases/latest) 4 | ![GitHub Downloads (specific asset, all releases)](https://img.shields.io/github/downloads/ChrisTitusTech/winutil/winutil.ps1?label=Total%20Downloads&style=for-the-badge) 5 | [![Discord Community Server](https://dcbadge.limes.pink/api/server/https://discord.gg/RUbZUZyByQ)](https://discord.gg/RUbZUZyByQ) 6 | 7 | Welcome to the official documentation for WinUtil, your go-to utility for optimizing and managing your Windows environment. Whether you’re an IT professional, power user, or regular user, WinUtil provides a comprehensive set of tools to enhance your Windows experience. 8 | 9 | ## Running the latest release of WinUtil 10 | 11 | * You will first need to start a Powershell terminal **as Admin**. 12 | * Now you can run the following command: 13 | ```ps1 14 | irm christitus.com/win | iex 15 | ``` 16 | 17 | !!! info 18 | 19 | WinUtil is updated weekly as of the time of writing. Consequently, features and functionalities may evolve, and the documentation may not always reflect the most current images or information. 20 | -------------------------------------------------------------------------------- /docs/stylesheets/extra.css: -------------------------------------------------------------------------------- 1 | /* Custom styles for MkDocs Material */ 2 | body { 3 | background-color: #c22525; 4 | } 5 | 6 | .md-nav__link { 7 | color: #ff5722; 8 | } 9 | 10 | .md-typeset h1 { 11 | font-size: 2.5em; 12 | color: #3f51b5; 13 | } 14 | -------------------------------------------------------------------------------- /functions/private/Copy-Files.ps1: -------------------------------------------------------------------------------- 1 | function Copy-Files { 2 | <# 3 | 4 | .DESCRIPTION 5 | This function will make all modifications to the registry 6 | 7 | .EXAMPLE 8 | 9 | Set-WinUtilRegistry -Name "PublishUserActivities" -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" -Type "DWord" -Value "0" 10 | 11 | #> 12 | param ( 13 | [string]$Path, 14 | [string]$Destination, 15 | [switch]$Recurse = $false, 16 | [switch]$Force = $false 17 | ) 18 | 19 | try { 20 | 21 | $files = Get-ChildItem -Path $path -Recurse:$recurse 22 | Write-Host "Copy $($files.Count)(s) from $path to $destination" 23 | 24 | foreach ($file in $files) { 25 | $status = "Copy files {0} on {1}: {2}" -f $counter, $files.Count, $file.Name 26 | Write-Progress -Activity "Copy Windows files" -Status $status -PercentComplete ($counter++/$files.count*100) 27 | $restpath = $file.FullName -Replace $path, '' 28 | 29 | if ($file.PSIsContainer -eq $true) { 30 | Write-Debug "Creating $($destination + $restpath)" 31 | New-Item ($destination+$restpath) -Force:$force -Type Directory -ErrorAction SilentlyContinue 32 | } else { 33 | Write-Debug "Copy from $($file.FullName) to $($destination+$restpath)" 34 | Copy-Item $file.FullName ($destination+$restpath) -ErrorAction SilentlyContinue -Force:$force 35 | Set-ItemProperty -Path ($destination+$restpath) -Name IsReadOnly -Value $false 36 | } 37 | } 38 | Write-Progress -Activity "Copy Windows files" -Status "Ready" -Completed 39 | } catch { 40 | Write-Warning "Unable to Copy all the files due to unhandled exception" 41 | Write-Warning $psitem.Exception.StackTrace 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /functions/private/Get-LocalizedYesNo.ps1: -------------------------------------------------------------------------------- 1 | function Get-LocalizedYesNo { 2 | <# 3 | .SYNOPSIS 4 | This function runs choice.exe and captures its output to extract yes no in a localized Windows 5 | 6 | .DESCRIPTION 7 | The function retrieves the output of the command 'cmd /c "choice nul"' and converts the default output for Yes and No 8 | in the localized format, such as "Yes=, No=". 9 | 10 | .EXAMPLE 11 | $yesNoArray = Get-LocalizedYesNo 12 | Write-Host "Yes=$($yesNoArray[0]), No=$($yesNoArray[1])" 13 | #> 14 | 15 | # Run choice and capture its options as output 16 | # The output shows the options for Yes and No as "[Y,N]?" in the (partitially) localized format. 17 | # eg. English: [Y,N]? 18 | # Dutch: [Y,N]? 19 | # German: [J,N]? 20 | # French: [O,N]? 21 | # Spanish: [S,N]? 22 | # Italian: [S,N]? 23 | # Russian: [Y,N]? 24 | 25 | $line = cmd /c "choice nul" 26 | $charactersArray = @() 27 | $regexPattern = '([a-zA-Z])' 28 | $charactersArray = [regex]::Matches($line, $regexPattern) | ForEach-Object { $_.Groups[1].Value } 29 | 30 | Write-Debug "According to takeown.exe local Yes is $charactersArray[0]" 31 | # Return the array of characters 32 | return $charactersArray 33 | 34 | } 35 | -------------------------------------------------------------------------------- /functions/private/Get-Oscdimg.ps1: -------------------------------------------------------------------------------- 1 | function Get-Oscdimg { 2 | <# 3 | .DESCRIPTION 4 | This function will download oscdimg file from github Release folders and put it into env:temp folder 5 | 6 | .EXAMPLE 7 | Get-Oscdimg 8 | #> 9 | 10 | param( 11 | [Parameter(Mandatory, position=0)] 12 | [string]$oscdimgPath 13 | ) 14 | 15 | $oscdimgPath = "$env:TEMP\oscdimg.exe" 16 | $downloadUrl = "https://github.com/ChrisTitusTech/winutil/raw/main/releases/oscdimg.exe" 17 | Invoke-RestMethod -Uri $downloadUrl -OutFile $oscdimgPath 18 | $hashResult = Get-FileHash -Path $oscdimgPath -Algorithm SHA256 19 | $sha256Hash = $hashResult.Hash 20 | 21 | Write-Host "[INFO] oscdimg.exe SHA-256 Hash: $sha256Hash" 22 | 23 | $expectedHash = "AB9E161049D293B544961BFDF2D61244ADE79376D6423DF4F60BF9B147D3C78D" # Replace with the actual expected hash 24 | if ($sha256Hash -eq $expectedHash) { 25 | Write-Host "Hashes match. File is verified." 26 | } else { 27 | Write-Host "Hashes do not match. File may be corrupted or tampered with." 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /functions/private/Get-WPFObjectName.ps1: -------------------------------------------------------------------------------- 1 | function Get-WPFObjectName { 2 | <# 3 | .SYNOPSIS 4 | This is a helper function that generates an objectname with the prefix WPF that can be used as a Powershell Variable after compilation. 5 | To achieve this, all characters that are not a-z, A-Z or 0-9 are simply removed from the name. 6 | 7 | .PARAMETER type 8 | The type of object for which the name should be generated. (e.g. Label, Button, CheckBox...) 9 | 10 | .PARAMETER name 11 | The name or description to be used for the object. (invalid characters are removed) 12 | 13 | .OUTPUTS 14 | A string that can be used as a object/variable name in powershell. 15 | For example: WPFLabelMicrosoftTools 16 | 17 | .EXAMPLE 18 | Get-WPFObjectName -type Label -name "Microsoft Tools" 19 | #> 20 | 21 | param( 22 | [Parameter(Mandatory, position=0)] 23 | [string]$type, 24 | 25 | [Parameter(position=1)] 26 | [string]$name 27 | ) 28 | 29 | $Output = $("WPF"+$type+$name) -replace '[^a-zA-Z0-9]', '' 30 | return $Output 31 | } 32 | -------------------------------------------------------------------------------- /functions/private/Get-WinUtilInstallerProcess.ps1: -------------------------------------------------------------------------------- 1 | function Get-WinUtilInstallerProcess { 2 | <# 3 | 4 | .SYNOPSIS 5 | Checks if the given process is running 6 | 7 | .PARAMETER Process 8 | The process to check 9 | 10 | .OUTPUTS 11 | Boolean - True if the process is running 12 | 13 | #> 14 | 15 | param($Process) 16 | 17 | if ($Null -eq $Process) { 18 | return $false 19 | } 20 | if (Get-Process -Id $Process.Id -ErrorAction SilentlyContinue) { 21 | return $true 22 | } 23 | return $false 24 | } 25 | -------------------------------------------------------------------------------- /functions/private/Get-WinUtilVariables.ps1: -------------------------------------------------------------------------------- 1 | function Get-WinUtilVariables { 2 | 3 | <# 4 | .SYNOPSIS 5 | Gets every form object of the provided type 6 | 7 | .OUTPUTS 8 | List containing every object that matches the provided type 9 | #> 10 | param ( 11 | [Parameter()] 12 | [string[]]$Type 13 | ) 14 | $keys = ($sync.keys).where{ $_ -like "WPF*" } 15 | if ($Type) { 16 | $output = $keys | ForEach-Object { 17 | try { 18 | $objType = $sync["$psitem"].GetType().Name 19 | if ($Type -contains $objType) { 20 | Write-Output $psitem 21 | } 22 | } catch { 23 | <#I am here so errors don't get outputted for a couple variables that don't have the .GetType() attribute#> 24 | } 25 | } 26 | return $output 27 | } 28 | return $keys 29 | } 30 | -------------------------------------------------------------------------------- /functions/private/Get-WinUtilWingetLatest.ps1: -------------------------------------------------------------------------------- 1 | function Get-WinUtilWingetLatest { 2 | <# 3 | .SYNOPSIS 4 | Uses GitHub API to check for the latest release of Winget. 5 | .DESCRIPTION 6 | This function grabs the latest version of Winget and returns the download path to Install-WinUtilWinget for installation. 7 | #> 8 | # Invoke-WebRequest is notoriously slow when the byte progress is displayed. The following lines disable the progress bar and reset them at the end of the function 9 | $PreviousProgressPreference = $ProgressPreference 10 | $ProgressPreference = "silentlyContinue" 11 | try { 12 | # Grabs the latest release of Winget from the Github API for the install process. 13 | $response = Invoke-RestMethod -Uri "https://api.github.com/repos/microsoft/Winget-cli/releases/latest" -Method Get -ErrorAction Stop 14 | $latestVersion = $response.tag_name #Stores version number of latest release. 15 | $licenseWingetUrl = $response.assets.browser_download_url | Where-Object {$_ -like "*License1.xml"} #Index value for License file. 16 | Write-Host "Latest Version:`t$($latestVersion)`n" 17 | Write-Host "Downloading..." 18 | $assetUrl = $response.assets.browser_download_url | Where-Object {$_ -like "*Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle"} 19 | Invoke-WebRequest -Uri $licenseWingetUrl -OutFile $ENV:TEMP\License1.xml 20 | # The only pain is that the msixbundle for winget-cli is 246MB. In some situations this can take a bit, with slower connections. 21 | Invoke-WebRequest -Uri $assetUrl -OutFile $ENV:TEMP\Microsoft.DesktopAppInstaller.msixbundle 22 | } catch { 23 | throw [WingetFailedInstall]::new('Failed to get latest Winget release and license') 24 | } 25 | $ProgressPreference = $PreviousProgressPreference 26 | } 27 | -------------------------------------------------------------------------------- /functions/private/Get-WinUtilWingetPrerequisites.ps1: -------------------------------------------------------------------------------- 1 | function Get-WinUtilWingetPrerequisites { 2 | <# 3 | .SYNOPSIS 4 | Downloads the Winget Prereqs. 5 | .DESCRIPTION 6 | Downloads Prereqs for Winget. Version numbers are coded as variables and can be updated as uncommonly as Microsoft updates the prereqs. 7 | #> 8 | 9 | # I don't know of a way to detect the prereqs automatically, so if someone has a better way of defining these, that would be great. 10 | # Microsoft.VCLibs version rarely changes, but for future compatibility I made it a variable. 11 | $versionVCLibs = "14.00" 12 | $fileVCLibs = "https://aka.ms/Microsoft.VCLibs.x64.${versionVCLibs}.Desktop.appx" 13 | # Write-Host "$fileVCLibs" 14 | # Microsoft.UI.Xaml version changed recently, so I made the version numbers variables. 15 | $versionUIXamlMinor = "2.8" 16 | $versionUIXamlPatch = "2.8.6" 17 | $fileUIXaml = "https://github.com/microsoft/microsoft-ui-xaml/releases/download/v${versionUIXamlPatch}/Microsoft.UI.Xaml.${versionUIXamlMinor}.x64.appx" 18 | # Write-Host "$fileUIXaml" 19 | 20 | try { 21 | Write-Host "Downloading Microsoft.VCLibs Dependency..." 22 | Invoke-WebRequest -Uri $fileVCLibs -OutFile $ENV:TEMP\Microsoft.VCLibs.x64.Desktop.appx 23 | Write-Host "Downloading Microsoft.UI.Xaml Dependency...`n" 24 | Invoke-WebRequest -Uri $fileUIXaml -OutFile $ENV:TEMP\Microsoft.UI.Xaml.x64.appx 25 | } catch { 26 | throw [WingetFailedInstall]::new('Failed to install prerequsites') 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /functions/private/Install-WinUtilChoco.ps1: -------------------------------------------------------------------------------- 1 | function Install-WinUtilChoco { 2 | 3 | <# 4 | 5 | .SYNOPSIS 6 | Installs Chocolatey if it is not already installed 7 | 8 | #> 9 | 10 | try { 11 | Write-Host "Checking if Chocolatey is Installed..." 12 | 13 | if((Test-WinUtilPackageManager -choco) -eq "installed") { 14 | return 15 | } 16 | # Install logic taken from https://chocolatey.org/install#individual 17 | Write-Host "Seems Chocolatey is not installed, installing now." 18 | Set-ExecutionPolicy Bypass -Scope Process -Force; 19 | [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; 20 | Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1')) 21 | 22 | } catch { 23 | Write-Host "===========================================" -Foregroundcolor Red 24 | Write-Host "-- Chocolatey failed to install ---" -Foregroundcolor Red 25 | Write-Host "===========================================" -Foregroundcolor Red 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /functions/private/Invoke-WinUtilBingSearch.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WinUtilBingSearch { 2 | <# 3 | 4 | .SYNOPSIS 5 | Disables/Enables Bing Search 6 | 7 | .PARAMETER Enabled 8 | Indicates whether to enable or disable Bing Search 9 | 10 | #> 11 | Param($Enabled) 12 | try { 13 | if ($Enabled -eq $false) { 14 | Write-Host "Enabling Bing Search" 15 | $value = 1 16 | } else { 17 | Write-Host "Disabling Bing Search" 18 | $value = 0 19 | } 20 | $Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Search" 21 | Set-ItemProperty -Path $Path -Name BingSearchEnabled -Value $value 22 | } catch [System.Security.SecurityException] { 23 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 24 | } catch [System.Management.Automation.ItemNotFoundException] { 25 | Write-Warning $psitem.Exception.ErrorRecord 26 | } catch { 27 | Write-Warning "Unable to set $Name due to unhandled exception" 28 | Write-Warning $psitem.Exception.StackTrace 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /functions/private/Invoke-WinUtilDarkMode.ps1: -------------------------------------------------------------------------------- 1 | Function Invoke-WinUtilDarkMode { 2 | <# 3 | 4 | .SYNOPSIS 5 | Enables/Disables Dark Mode 6 | 7 | .PARAMETER DarkMoveEnabled 8 | Indicates the current dark mode state 9 | 10 | #> 11 | Param($DarkMoveEnabled) 12 | try { 13 | if ($DarkMoveEnabled -eq $false) { 14 | Write-Host "Enabling Dark Mode" 15 | $DarkMoveValue = 0 16 | } else { 17 | Write-Host "Disabling Dark Mode" 18 | $DarkMoveValue = 1 19 | } 20 | 21 | $Path = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize" 22 | Set-ItemProperty -Path $Path -Name AppsUseLightTheme -Value $DarkMoveValue 23 | Set-ItemProperty -Path $Path -Name SystemUsesLightTheme -Value $DarkMoveValue 24 | } catch [System.Security.SecurityException] { 25 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 26 | } catch [System.Management.Automation.ItemNotFoundException] { 27 | Write-Warning $psitem.Exception.ErrorRecord 28 | } catch { 29 | Write-Warning "Unable to set $Name due to unhandled exception" 30 | Write-Warning $psitem.Exception.StackTrace 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /functions/private/Invoke-WinUtilDetailedBSoD.ps1: -------------------------------------------------------------------------------- 1 | Function Invoke-WinUtilDetailedBSoD { 2 | <# 3 | 4 | .SYNOPSIS 5 | Enables/Disables Detailed BSoD 6 | (Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\CrashControl' -Name 'DisplayParameters').DisplayParameters 7 | 8 | 9 | #> 10 | Param($Enabled) 11 | try { 12 | if ($Enabled -eq $false) { 13 | Write-Host "Enabling Detailed BSoD" 14 | $value = 1 15 | } else { 16 | Write-Host "Disabling Detailed BSoD" 17 | $value =0 18 | } 19 | 20 | $Path = "HKLM:\SYSTEM\CurrentControlSet\Control\CrashControl" 21 | $dwords = ("DisplayParameters", "DisableEmoticon") 22 | foreach ($name in $dwords) { 23 | Set-ItemProperty -Path $Path -Name $name -Value $value 24 | } 25 | Set-ItemProperty -Path $Path -Name DisplayParameters -Value $value 26 | } catch [System.Security.SecurityException] { 27 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 28 | } catch [System.Management.Automation.ItemNotFoundException] { 29 | Write-Warning $psitem.Exception.ErrorRecord 30 | } catch { 31 | Write-Warning "Unable to set $Name due to unhandled exception" 32 | Write-Warning $psitem.Exception.StackTrace 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /functions/private/Invoke-WinUtilFeatureInstall.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WinUtilFeatureInstall { 2 | <# 3 | 4 | .SYNOPSIS 5 | Converts all the values from the tweaks.json and routes them to the appropriate function 6 | 7 | #> 8 | 9 | param( 10 | $CheckBox 11 | ) 12 | 13 | $x = 0 14 | 15 | $CheckBox | ForEach-Object { 16 | if($sync.configs.feature.$psitem.feature) { 17 | Foreach( $feature in $sync.configs.feature.$psitem.feature ) { 18 | try { 19 | Write-Host "Installing $feature" 20 | Enable-WindowsOptionalFeature -Online -FeatureName $feature -All -NoRestart 21 | } catch { 22 | if ($psitem.Exception.Message -like "*requires elevation*") { 23 | Write-Warning "Unable to Install $feature due to permissions. Are you running as admin?" 24 | $sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Error" }) 25 | } else { 26 | 27 | Write-Warning "Unable to Install $feature due to unhandled exception" 28 | Write-Warning $psitem.Exception.StackTrace 29 | } 30 | } 31 | } 32 | } 33 | if($sync.configs.feature.$psitem.InvokeScript) { 34 | Foreach( $script in $sync.configs.feature.$psitem.InvokeScript ) { 35 | try { 36 | $Scriptblock = [scriptblock]::Create($script) 37 | 38 | Write-Host "Running Script for $psitem" 39 | Invoke-Command $scriptblock -ErrorAction stop 40 | } catch { 41 | if ($psitem.Exception.Message -like "*requires elevation*") { 42 | Write-Warning "Unable to Install $feature due to permissions. Are you running as admin?" 43 | $sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Error" }) 44 | } else { 45 | $sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Error" }) 46 | Write-Warning "Unable to Install $feature due to unhandled exception" 47 | Write-Warning $psitem.Exception.StackTrace 48 | } 49 | } 50 | } 51 | } 52 | $X++ 53 | $sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -value ($x/$CheckBox.Count) }) 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /functions/private/Invoke-WinUtilGPU.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WinUtilGPU { 2 | $gpuInfo = Get-CimInstance Win32_VideoController 3 | 4 | # GPUs to blacklist from using Demanding Theming 5 | $lowPowerGPUs = ( 6 | "*NVIDIA GeForce*M*", 7 | "*NVIDIA GeForce*Laptop*", 8 | "*NVIDIA GeForce*GT*", 9 | "*AMD Radeon(TM)*", 10 | "*Intel(R) HD Graphics*", 11 | "*UHD*" 12 | 13 | ) 14 | 15 | foreach ($gpu in $gpuInfo) { 16 | foreach ($gpuPattern in $lowPowerGPUs) { 17 | if ($gpu.Name -like $gpuPattern) { 18 | return $false 19 | } 20 | } 21 | } 22 | return $true 23 | } 24 | -------------------------------------------------------------------------------- /functions/private/Invoke-WinUtilHiddenFiles.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WinUtilHiddenFiles { 2 | <# 3 | 4 | .SYNOPSIS 5 | Enable/Disable Hidden Files 6 | 7 | .PARAMETER Enabled 8 | Indicates whether to enable or disable Hidden Files 9 | 10 | #> 11 | Param($Enabled) 12 | try { 13 | if ($Enabled -eq $false) { 14 | Write-Host "Enabling Hidden Files" 15 | $value = 1 16 | } else { 17 | Write-Host "Disabling Hidden Files" 18 | $value = 0 19 | } 20 | $Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" 21 | Set-ItemProperty -Path $Path -Name Hidden -Value $value 22 | } catch [System.Security.SecurityException] { 23 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 24 | } catch [System.Management.Automation.ItemNotFoundException] { 25 | Write-Warning $psitem.Exception.ErrorRecord 26 | } catch { 27 | Write-Warning "Unable to set $Name due to unhandled exception" 28 | Write-Warning $psitem.Exception.StackTrace 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /functions/private/Invoke-WinUtilMouseAcceleration.ps1: -------------------------------------------------------------------------------- 1 | Function Invoke-WinUtilMouseAcceleration { 2 | <# 3 | 4 | .SYNOPSIS 5 | Enables/Disables Mouse Acceleration 6 | 7 | .PARAMETER DarkMoveEnabled 8 | Indicates the current Mouse Acceleration State 9 | 10 | #> 11 | Param($MouseAccelerationEnabled) 12 | try { 13 | if ($MouseAccelerationEnabled -eq $false) { 14 | Write-Host "Enabling Mouse Acceleration" 15 | $MouseSpeed = 1 16 | $MouseThreshold1 = 6 17 | $MouseThreshold2 = 10 18 | } else { 19 | Write-Host "Disabling Mouse Acceleration" 20 | $MouseSpeed = 0 21 | $MouseThreshold1 = 0 22 | $MouseThreshold2 = 0 23 | 24 | } 25 | 26 | $Path = "HKCU:\Control Panel\Mouse" 27 | Set-ItemProperty -Path $Path -Name MouseSpeed -Value $MouseSpeed 28 | Set-ItemProperty -Path $Path -Name MouseThreshold1 -Value $MouseThreshold1 29 | Set-ItemProperty -Path $Path -Name MouseThreshold2 -Value $MouseThreshold2 30 | } catch [System.Security.SecurityException] { 31 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 32 | } catch [System.Management.Automation.ItemNotFoundException] { 33 | Write-Warning $psitem.Exception.ErrorRecord 34 | } catch { 35 | Write-Warning "Unable to set $Name due to unhandled exception" 36 | Write-Warning $psitem.Exception.StackTrace 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /functions/private/Invoke-WinUtilNumLock.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WinUtilNumLock { 2 | <# 3 | .SYNOPSIS 4 | Disables/Enables NumLock on startup 5 | .PARAMETER Enabled 6 | Indicates whether to enable or disable Numlock on startup 7 | #> 8 | Param($Enabled) 9 | try { 10 | if ($Enabled -eq $false) { 11 | Write-Host "Enabling Numlock on startup" 12 | $value = 2 13 | } else { 14 | Write-Host "Disabling Numlock on startup" 15 | $value = 0 16 | } 17 | New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS 18 | $HKUPath = "HKU:\.Default\Control Panel\Keyboard" 19 | $HKCUPath = "HKCU:\Control Panel\Keyboard" 20 | Set-ItemProperty -Path $HKUPath -Name InitialKeyboardIndicators -Value $value 21 | Set-ItemProperty -Path $HKCUPath -Name InitialKeyboardIndicators -Value $value 22 | } 23 | Catch [System.Security.SecurityException] { 24 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 25 | } catch [System.Management.Automation.ItemNotFoundException] { 26 | Write-Warning $psitem.Exception.ErrorRecord 27 | } catch { 28 | Write-Warning "Unable to set $Name due to unhandled exception" 29 | Write-Warning $psitem.Exception.StackTrace 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /functions/private/Invoke-WinUtilScript.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WinUtilScript { 2 | <# 3 | 4 | .SYNOPSIS 5 | Invokes the provided scriptblock. Intended for things that can't be handled with the other functions. 6 | 7 | .PARAMETER Name 8 | The name of the scriptblock being invoked 9 | 10 | .PARAMETER scriptblock 11 | The scriptblock to be invoked 12 | 13 | .EXAMPLE 14 | $Scriptblock = [scriptblock]::Create({"Write-output 'Hello World'"}) 15 | Invoke-WinUtilScript -ScriptBlock $scriptblock -Name "Hello World" 16 | 17 | #> 18 | param ( 19 | $Name, 20 | [scriptblock]$scriptblock 21 | ) 22 | 23 | try { 24 | Write-Host "Running Script for $name" 25 | Invoke-Command $scriptblock -ErrorAction Stop 26 | } catch [System.Management.Automation.CommandNotFoundException] { 27 | Write-Warning "The specified command was not found." 28 | Write-Warning $PSItem.Exception.message 29 | } catch [System.Management.Automation.RuntimeException] { 30 | Write-Warning "A runtime exception occurred." 31 | Write-Warning $PSItem.Exception.message 32 | } catch [System.Security.SecurityException] { 33 | Write-Warning "A security exception occurred." 34 | Write-Warning $PSItem.Exception.message 35 | } catch [System.UnauthorizedAccessException] { 36 | Write-Warning "Access denied. You do not have permission to perform this operation." 37 | Write-Warning $PSItem.Exception.message 38 | } catch { 39 | # Generic catch block to handle any other type of exception 40 | Write-Warning "Unable to run script for $name due to unhandled exception" 41 | Write-Warning $psitem.Exception.StackTrace 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /functions/private/Invoke-WinUtilShowExt.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WinUtilShowExt { 2 | <# 3 | .SYNOPSIS 4 | Disables/Enables Show file Extentions 5 | .PARAMETER Enabled 6 | Indicates whether to enable or disable Show file extentions 7 | #> 8 | Param($Enabled) 9 | try { 10 | if ($Enabled -eq $false) { 11 | Write-Host "Showing file extentions" 12 | $value = 0 13 | } else { 14 | Write-Host "hiding file extensions" 15 | $value = 1 16 | } 17 | $Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" 18 | Set-ItemProperty -Path $Path -Name HideFileExt -Value $value 19 | } catch [System.Security.SecurityException] { 20 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 21 | } catch [System.Management.Automation.ItemNotFoundException] { 22 | Write-Warning $psitem.Exception.ErrorRecord 23 | } catch { 24 | Write-Warning "Unable to set $Name due to unhandled exception" 25 | Write-Warning $psitem.Exception.StackTrace 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /functions/private/Invoke-WinUtilSnapFlyout.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WinUtilSnapFlyout { 2 | <# 3 | .SYNOPSIS 4 | Disables/Enables Snap Assist Flyout on startup 5 | .PARAMETER Enabled 6 | Indicates whether to enable or disable Snap Assist Flyout on startup 7 | #> 8 | Param($Enabled) 9 | try { 10 | if ($Enabled -eq $false) { 11 | Write-Host "Enabling Snap Assist Flyout On startup" 12 | $value = 1 13 | } else { 14 | Write-Host "Disabling Snap Assist Flyout On startup" 15 | $value = 0 16 | } 17 | 18 | $Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" 19 | taskkill.exe /F /IM "explorer.exe" 20 | Set-ItemProperty -Path $Path -Name EnableSnapAssistFlyout -Value $value 21 | Start-Process "explorer.exe" 22 | } catch [System.Security.SecurityException] { 23 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 24 | } catch [System.Management.Automation.ItemNotFoundException] { 25 | Write-Warning $psitem.Exception.ErrorRecord 26 | } catch { 27 | Write-Warning "Unable to set $Name due to unhandled exception" 28 | Write-Warning $psitem.Exception.StackTrace 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /functions/private/Invoke-WinUtilSnapSuggestion.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WinUtilSnapSuggestion { 2 | <# 3 | .SYNOPSIS 4 | Disables/Enables Snap Assist Suggestions on startup 5 | .PARAMETER Enabled 6 | Indicates whether to enable or disable Snap Assist Suggestions on startup 7 | #> 8 | Param($Enabled) 9 | try { 10 | if ($Enabled -eq $false) { 11 | Write-Host "Enabling Snap Assist Suggestion On startup" 12 | $value = 1 13 | } else { 14 | Write-Host "Disabling Snap Assist Suggestion On startup" 15 | $value = 0 16 | } 17 | # taskkill.exe /F /IM "explorer.exe" 18 | $Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" 19 | taskkill.exe /F /IM "explorer.exe" 20 | Set-ItemProperty -Path $Path -Name SnapAssist -Value $value 21 | Start-Process "explorer.exe" 22 | } catch [System.Security.SecurityException] { 23 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 24 | } catch [System.Management.Automation.ItemNotFoundException] { 25 | Write-Warning $psitem.Exception.ErrorRecord 26 | } catch { 27 | Write-Warning "Unable to set $Name due to unhandled exception" 28 | Write-Warning $psitem.Exception.StackTrace 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /functions/private/Invoke-WinUtilSnapWindow.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WinUtilSnapWindow { 2 | <# 3 | .SYNOPSIS 4 | Disables/Enables Snapping Windows on startup 5 | .PARAMETER Enabled 6 | Indicates whether to enable or disable Snapping Windows on startup 7 | #> 8 | Param($Enabled) 9 | try { 10 | if ($Enabled -eq $false) { 11 | Write-Host "Enabling Snap Windows On startup | Relogin Required" 12 | $value = 1 13 | } else { 14 | Write-Host "Disabling Snap Windows On startup | Relogin Required" 15 | $value = 0 16 | } 17 | $Path = "HKCU:\Control Panel\Desktop" 18 | Set-ItemProperty -Path $Path -Name WindowArrangementActive -Value $value 19 | } catch [System.Security.SecurityException] { 20 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 21 | } catch [System.Management.Automation.ItemNotFoundException] { 22 | Write-Warning $psitem.Exception.ErrorRecord 23 | } catch { 24 | Write-Warning "Unable to set $Name due to unhandled exception" 25 | Write-Warning $psitem.Exception.StackTrace 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /functions/private/Invoke-WinUtilSponsors.ps1: -------------------------------------------------------------------------------- 1 | Function Invoke-WinUtilSponsors { 2 | <# 3 | .SYNOPSIS 4 | Lists Sponsors from ChrisTitusTech 5 | .DESCRIPTION 6 | Lists Sponsors from ChrisTitusTech 7 | .EXAMPLE 8 | Invoke-WinUtilSponsors 9 | .NOTES 10 | This function is used to list sponsors from ChrisTitusTech 11 | #> 12 | try { 13 | # Define the URL and headers 14 | $url = "https://github.com/sponsors/ChrisTitusTech" 15 | $headers = @{ 16 | "User-Agent" = "Chrome/58.0.3029.110" 17 | } 18 | 19 | # Fetch the webpage content 20 | try { 21 | $html = Invoke-RestMethod -Uri $url -Headers $headers 22 | } catch { 23 | Write-Output $_.Exception.Message 24 | exit 25 | } 26 | 27 | # Use regex to extract the content between "Current sponsors" and "Past sponsors" 28 | $currentSponsorsPattern = '(?s)(?<=Current sponsors).*?(?=Past sponsors)' 29 | $currentSponsorsHtml = [regex]::Match($html, $currentSponsorsPattern).Value 30 | 31 | # Use regex to extract the sponsor usernames from the alt attributes in the "Current Sponsors" section 32 | $sponsorPattern = '(?<=alt="@)[^"]+' 33 | $sponsors = [regex]::Matches($currentSponsorsHtml, $sponsorPattern) | ForEach-Object { $_.Value } 34 | 35 | # Exclude "ChrisTitusTech" from the sponsors 36 | $sponsors = $sponsors | Where-Object { $_ -ne "ChrisTitusTech" } 37 | 38 | # Return the sponsors 39 | return $sponsors 40 | } catch { 41 | Write-Error "An error occurred while fetching or processing the sponsors: $_" 42 | return $null 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /functions/private/Invoke-WinUtilStickyKeys.ps1: -------------------------------------------------------------------------------- 1 | Function Invoke-WinUtilStickyKeys { 2 | <# 3 | .SYNOPSIS 4 | Disables/Enables Sticky Keyss on startup 5 | .PARAMETER Enabled 6 | Indicates whether to enable or disable Sticky Keys on startup 7 | #> 8 | Param($Enabled) 9 | try { 10 | if ($Enabled -eq $false) { 11 | Write-Host "Enabling Sticky Keys On startup" 12 | $value = 510 13 | } else { 14 | Write-Host "Disabling Sticky Keys On startup" 15 | $value = 58 16 | } 17 | $Path = "HKCU:\Control Panel\Accessibility\StickyKeys" 18 | Set-ItemProperty -Path $Path -Name Flags -Value $value 19 | } catch [System.Security.SecurityException] { 20 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 21 | } catch [System.Management.Automation.ItemNotFoundException] { 22 | Write-Warning $psitem.Exception.ErrorRecord 23 | } catch { 24 | Write-Warning "Unable to set $Name due to unhandled exception" 25 | Write-Warning $psitem.Exception.StackTrace 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /functions/private/Invoke-WinUtilTaskView.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WinUtilTaskView { 2 | <# 3 | 4 | .SYNOPSIS 5 | Enable/Disable Task View 6 | 7 | .PARAMETER Enabled 8 | Indicates whether to enable or disable Task View 9 | 10 | #> 11 | Param($Enabled) 12 | try { 13 | if ($Enabled -eq $false) { 14 | Write-Host "Enabling Task View" 15 | $value = 1 16 | } else { 17 | Write-Host "Disabling Task View" 18 | $value = 0 19 | } 20 | $Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" 21 | Set-ItemProperty -Path $Path -Name ShowTaskViewButton -Value $value 22 | } catch [System.Security.SecurityException] { 23 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 24 | } catch [System.Management.Automation.ItemNotFoundException] { 25 | Write-Warning $psitem.Exception.ErrorRecord 26 | } catch { 27 | Write-Warning "Unable to set $Name due to unhandled exception" 28 | Write-Warning $psitem.Exception.StackTrace 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /functions/private/Invoke-WinUtilTaskbarAlignment.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WinUtilTaskbarAlignment { 2 | <# 3 | 4 | .SYNOPSIS 5 | Switches between Center & Left Taskbar Alignment 6 | 7 | .PARAMETER Enabled 8 | Indicates whether to make Taskbar Alignment Center or Left 9 | 10 | #> 11 | Param($Enabled) 12 | try { 13 | if ($Enabled -eq $false) { 14 | Write-Host "Making Taskbar Alignment to the Center" 15 | $value = 1 16 | } else { 17 | Write-Host "Making Taskbar Alignment to the Left" 18 | $value = 0 19 | } 20 | $Path = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" 21 | Set-ItemProperty -Path $Path -Name "TaskbarAl" -Value $value 22 | } catch [System.Security.SecurityException] { 23 | Write-Warning "Unable to set $Path\$Name to $value due to a Security Exception" 24 | } catch [System.Management.Automation.ItemNotFoundException] { 25 | Write-Warning $psitem.Exception.ErrorRecord 26 | } catch { 27 | Write-Warning "Unable to set $Name due to unhandled exception" 28 | Write-Warning $psitem.Exception.StackTrace 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /functions/private/Invoke-WinUtilTaskbarSearch.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WinUtilTaskbarSearch { 2 | <# 3 | 4 | .SYNOPSIS 5 | Enable/Disable Taskbar Search Button. 6 | 7 | .PARAMETER Enabled 8 | Indicates whether to enable or disable Taskbar Search Button. 9 | 10 | #> 11 | Param($Enabled) 12 | try { 13 | if ($Enabled -eq $false) { 14 | Write-Host "Enabling Search Button" 15 | $value = 1 16 | } else { 17 | Write-Host "Disabling Search Button" 18 | $value = 0 19 | } 20 | $Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Search\" 21 | Set-ItemProperty -Path $Path -Name SearchboxTaskbarMode -Value $value 22 | } catch [System.Security.SecurityException] { 23 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 24 | } catch [System.Management.Automation.ItemNotFoundException] { 25 | Write-Warning $psitem.Exception.ErrorRecord 26 | } catch { 27 | Write-Warning "Unable to set $Name due to unhandled exception" 28 | Write-Warning $psitem.Exception.StackTrace 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /functions/private/Invoke-WinUtilTaskbarWidgets.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WinUtilTaskbarWidgets { 2 | <# 3 | 4 | .SYNOPSIS 5 | Enable/Disable Taskbar Widgets 6 | 7 | .PARAMETER Enabled 8 | Indicates whether to enable or disable Taskbar Widgets 9 | 10 | #> 11 | Param($Enabled) 12 | try { 13 | if ($Enabled -eq $false) { 14 | Write-Host "Enabling Taskbar Widgets" 15 | $value = 1 16 | } else { 17 | Write-Host "Disabling Taskbar Widgets" 18 | $value = 0 19 | } 20 | $Path = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" 21 | Set-ItemProperty -Path $Path -Name TaskbarDa -Value $value 22 | } catch [System.Security.SecurityException] { 23 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 24 | } catch [System.Management.Automation.ItemNotFoundException] { 25 | Write-Warning $psitem.Exception.ErrorRecord 26 | } catch { 27 | Write-Warning "Unable to set $Name due to unhandled exception" 28 | Write-Warning $psitem.Exception.StackTrace 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /functions/private/Invoke-WinUtilVerboseLogon.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WinUtilVerboseLogon { 2 | <# 3 | .SYNOPSIS 4 | Disables/Enables VerboseLogon Messages 5 | .PARAMETER Enabled 6 | Indicates whether to enable or disable VerboseLogon messages 7 | #> 8 | Param($Enabled) 9 | try { 10 | if ($Enabled -eq $false) { 11 | Write-Host "Enabling Verbose Logon Messages" 12 | $value = 1 13 | } else { 14 | Write-Host "Disabling Verbose Logon Messages" 15 | $value = 0 16 | } 17 | $Path = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" 18 | Set-ItemProperty -Path $Path -Name VerboseStatus -Value $value 19 | } catch [System.Security.SecurityException] { 20 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 21 | } catch [System.Management.Automation.ItemNotFoundException] { 22 | Write-Warning $psitem.Exception.ErrorRecord 23 | } catch { 24 | Write-Warning "Unable to set $Name due to unhandled exception" 25 | Write-Warning $psitem.Exception.StackTrace 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /functions/private/Remove-WinUtilAPPX.ps1: -------------------------------------------------------------------------------- 1 | function Remove-WinUtilAPPX { 2 | <# 3 | 4 | .SYNOPSIS 5 | Removes all APPX packages that match the given name 6 | 7 | .PARAMETER Name 8 | The name of the APPX package to remove 9 | 10 | .EXAMPLE 11 | Remove-WinUtilAPPX -Name "Microsoft.Microsoft3DViewer" 12 | 13 | #> 14 | param ( 15 | $Name 16 | ) 17 | 18 | try { 19 | Write-Host "Removing $Name" 20 | Get-AppxPackage "*$Name*" | Remove-AppxPackage -ErrorAction SilentlyContinue 21 | Get-AppxProvisionedPackage -Online | Where-Object DisplayName -like "*$Name*" | Remove-AppxProvisionedPackage -Online -ErrorAction SilentlyContinue 22 | } catch [System.Exception] { 23 | if ($psitem.Exception.Message -like "*The requested operation requires elevation*") { 24 | Write-Warning "Unable to uninstall $name due to a Security Exception" 25 | } else { 26 | Write-Warning "Unable to uninstall $name due to unhandled exception" 27 | Write-Warning $psitem.Exception.StackTrace 28 | } 29 | } catch { 30 | Write-Warning "Unable to uninstall $name due to unhandled exception" 31 | Write-Warning $psitem.Exception.StackTrace 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /functions/private/Set-WinUtilDNS.ps1: -------------------------------------------------------------------------------- 1 | function Set-WinUtilDNS { 2 | <# 3 | 4 | .SYNOPSIS 5 | Sets the DNS of all interfaces that are in the "Up" state. It will lookup the values from the DNS.Json file 6 | 7 | .PARAMETER DNSProvider 8 | The DNS provider to set the DNS server to 9 | 10 | .EXAMPLE 11 | Set-WinUtilDNS -DNSProvider "google" 12 | 13 | #> 14 | param($DNSProvider) 15 | if($DNSProvider -eq "Default") {return} 16 | try { 17 | $Adapters = Get-NetAdapter | Where-Object {$_.Status -eq "Up"} 18 | Write-Host "Ensuring DNS is set to $DNSProvider on the following interfaces" 19 | Write-Host $($Adapters | Out-String) 20 | 21 | Foreach ($Adapter in $Adapters) { 22 | if($DNSProvider -eq "DHCP") { 23 | Set-DnsClientServerAddress -InterfaceIndex $Adapter.ifIndex -ResetServerAddresses 24 | } else { 25 | Set-DnsClientServerAddress -InterfaceIndex $Adapter.ifIndex -ServerAddresses ("$($sync.configs.dns.$DNSProvider.Primary)", "$($sync.configs.dns.$DNSProvider.Secondary)") 26 | Set-DnsClientServerAddress -InterfaceIndex $Adapter.ifIndex -ServerAddresses ("$($sync.configs.dns.$DNSProvider.Primary6)", "$($sync.configs.dns.$DNSProvider.Secondary6)") 27 | } 28 | } 29 | } catch { 30 | Write-Warning "Unable to set DNS Provider due to an unhandled exception" 31 | Write-Warning $psitem.Exception.StackTrace 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /functions/private/Set-WinUtilProgressbar.ps1: -------------------------------------------------------------------------------- 1 | function Set-WinUtilProgressbar{ 2 | <# 3 | .SYNOPSIS 4 | This function is used to Update the Progress Bar displayed in the winutil GUI. 5 | It will be automatically hidden if the user clicks something and no process is running 6 | .PARAMETER Label 7 | The Text to be overlayed onto the Progress Bar 8 | .PARAMETER PERCENT 9 | The percentage of the Progress Bar that should be filled (0-100) 10 | .PARAMETER Hide 11 | If provided, the Progress Bar and the label will be hidden 12 | #> 13 | param( 14 | [string]$Label, 15 | [ValidateRange(0,100)] 16 | [int]$Percent, 17 | $Hide 18 | ) 19 | if ($hide) { 20 | $sync.form.Dispatcher.Invoke([action]{$sync.ProgressBarLabel.Visibility = "Collapsed"}) 21 | $sync.form.Dispatcher.Invoke([action]{$sync.ProgressBar.Visibility = "Collapsed"}) 22 | } else { 23 | $sync.form.Dispatcher.Invoke([action]{$sync.ProgressBarLabel.Visibility = "Visible"}) 24 | $sync.form.Dispatcher.Invoke([action]{$sync.ProgressBar.Visibility = "Visible"}) 25 | } 26 | $sync.form.Dispatcher.Invoke([action]{$sync.ProgressBarLabel.Content.Text = $label}) 27 | $sync.form.Dispatcher.Invoke([action]{$sync.ProgressBarLabel.Content.ToolTip = $label}) 28 | $sync.form.Dispatcher.Invoke([action]{ $sync.ProgressBar.Value = $percent}) 29 | 30 | } 31 | -------------------------------------------------------------------------------- /functions/private/Set-WinUtilRegistry.ps1: -------------------------------------------------------------------------------- 1 | function Set-WinUtilRegistry { 2 | <# 3 | 4 | .SYNOPSIS 5 | Modifies the registry based on the given inputs 6 | 7 | .PARAMETER Name 8 | The name of the key to modify 9 | 10 | .PARAMETER Path 11 | The path to the key 12 | 13 | .PARAMETER Type 14 | The type of value to set the key to 15 | 16 | .PARAMETER Value 17 | The value to set the key to 18 | 19 | .EXAMPLE 20 | Set-WinUtilRegistry -Name "PublishUserActivities" -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\System" -Type "DWord" -Value "0" 21 | 22 | #> 23 | param ( 24 | $Name, 25 | $Path, 26 | $Type, 27 | $Value 28 | ) 29 | 30 | try { 31 | if(!(Test-Path 'HKU:\')) {New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS} 32 | 33 | If (!(Test-Path $Path)) { 34 | Write-Host "$Path was not found, Creating..." 35 | New-Item -Path $Path -Force -ErrorAction Stop | Out-Null 36 | } 37 | 38 | Write-Host "Set $Path\$Name to $Value" 39 | Set-ItemProperty -Path $Path -Name $Name -Type $Type -Value $Value -Force -ErrorAction Stop | Out-Null 40 | } catch [System.Security.SecurityException] { 41 | Write-Warning "Unable to set $Path\$Name to $Value due to a Security Exception" 42 | } catch [System.Management.Automation.ItemNotFoundException] { 43 | Write-Warning $psitem.Exception.ErrorRecord 44 | } catch { 45 | Write-Warning "Unable to set $Name due to unhandled exception" 46 | Write-Warning $psitem.Exception.StackTrace 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /functions/private/Set-WinUtilScheduledTask.ps1: -------------------------------------------------------------------------------- 1 | function Set-WinUtilScheduledTask { 2 | <# 3 | 4 | .SYNOPSIS 5 | Enables/Disables the provided Scheduled Task 6 | 7 | .PARAMETER Name 8 | The path to the Scheduled Task 9 | 10 | .PARAMETER State 11 | The State to set the Task to 12 | 13 | .EXAMPLE 14 | Set-WinUtilScheduledTask -Name "Microsoft\Windows\Application Experience\Microsoft Compatibility Appraiser" -State "Disabled" 15 | 16 | #> 17 | param ( 18 | $Name, 19 | $State 20 | ) 21 | 22 | try { 23 | if($State -eq "Disabled") { 24 | Write-Host "Disabling Scheduled Task $Name" 25 | Disable-ScheduledTask -TaskName $Name -ErrorAction Stop 26 | } 27 | if($State -eq "Enabled") { 28 | Write-Host "Enabling Scheduled Task $Name" 29 | Enable-ScheduledTask -TaskName $Name -ErrorAction Stop 30 | } 31 | } catch [System.Exception] { 32 | if($psitem.Exception.Message -like "*The system cannot find the file specified*") { 33 | Write-Warning "Scheduled Task $name was not Found" 34 | } else { 35 | Write-Warning "Unable to set $Name due to unhandled exception" 36 | Write-Warning $psitem.Exception.Message 37 | } 38 | } catch { 39 | Write-Warning "Unable to run script for $name due to unhandled exception" 40 | Write-Warning $psitem.Exception.StackTrace 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /functions/private/Set-WinUtilService.ps1: -------------------------------------------------------------------------------- 1 | Function Set-WinUtilService { 2 | <# 3 | 4 | .SYNOPSIS 5 | Changes the startup type of the given service 6 | 7 | .PARAMETER Name 8 | The name of the service to modify 9 | 10 | .PARAMETER StartupType 11 | The startup type to set the service to 12 | 13 | .EXAMPLE 14 | Set-WinUtilService -Name "HomeGroupListener" -StartupType "Manual" 15 | 16 | #> 17 | param ( 18 | $Name, 19 | $StartupType 20 | ) 21 | try { 22 | Write-Host "Setting Service $Name to $StartupType" 23 | 24 | # Check if the service exists 25 | $service = Get-Service -Name $Name -ErrorAction Stop 26 | 27 | # Service exists, proceed with changing properties 28 | $service | Set-Service -StartupType $StartupType -ErrorAction Stop 29 | } catch [System.ServiceProcess.ServiceNotFoundException] { 30 | Write-Warning "Service $Name was not found" 31 | } catch { 32 | Write-Warning "Unable to set $Name due to unhandled exception" 33 | Write-Warning $_.Exception.Message 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /functions/private/Update-WinUtilProgramWinget.ps1: -------------------------------------------------------------------------------- 1 | Function Update-WinUtilProgramWinget { 2 | 3 | <# 4 | 5 | .SYNOPSIS 6 | This will update all programs using Winget 7 | 8 | #> 9 | 10 | [ScriptBlock]$wingetinstall = { 11 | 12 | $host.ui.RawUI.WindowTitle = """Winget Install""" 13 | 14 | Start-Transcript "$logdir\winget-update_$dateTime.log" -Append 15 | winget upgrade --all --accept-source-agreements --accept-package-agreements --scope=machine --silent 16 | 17 | } 18 | 19 | $global:WinGetInstall = Start-Process -Verb runas powershell -ArgumentList "-command invoke-command -scriptblock {$wingetinstall} -argumentlist '$($ProgramsToInstall -join ",")'" -PassThru 20 | 21 | } 22 | -------------------------------------------------------------------------------- /functions/public/Invoke-ScratchDialog.ps1: -------------------------------------------------------------------------------- 1 | 2 | function Invoke-ScratchDialog { 3 | 4 | <# 5 | 6 | .SYNOPSIS 7 | Enable Editable Text box Alternate Scartch path 8 | 9 | .PARAMETER Button 10 | #> 11 | $sync.WPFMicrowinISOScratchDir.IsChecked 12 | 13 | 14 | [System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null 15 | $Dialog = New-Object System.Windows.Forms.FolderBrowserDialog 16 | $Dialog.SelectedPath = $sync.MicrowinScratchDirBox.Text 17 | $Dialog.ShowDialog() 18 | $filePath = $Dialog.SelectedPath 19 | Write-Host "No ISO is chosen+ $filePath" 20 | 21 | if ([string]::IsNullOrEmpty($filePath)) { 22 | Write-Host "No Folder had chosen" 23 | return 24 | } 25 | 26 | $sync.MicrowinScratchDirBox.Text = Join-Path $filePath "\" 27 | 28 | } 29 | -------------------------------------------------------------------------------- /functions/public/Invoke-WPFCloseButton.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WPFCloseButton { 2 | 3 | <# 4 | 5 | .SYNOPSIS 6 | Close application 7 | 8 | .PARAMETER Button 9 | #> 10 | $sync["Form"].Close() 11 | Write-Host "Bye bye!" 12 | } 13 | -------------------------------------------------------------------------------- /functions/public/Invoke-WPFControlPanel.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WPFControlPanel { 2 | <# 3 | 4 | .SYNOPSIS 5 | Opens the requested legacy panel 6 | 7 | .PARAMETER Panel 8 | The panel to open 9 | 10 | #> 11 | param($Panel) 12 | 13 | switch ($Panel) { 14 | "WPFPanelcontrol" {cmd /c control} 15 | "WPFPanelnetwork" {cmd /c ncpa.cpl} 16 | "WPFPanelpower" {cmd /c powercfg.cpl} 17 | "WPFPanelregion" {cmd /c intl.cpl} 18 | "WPFPanelsound" {cmd /c mmsys.cpl} 19 | "WPFPanelprinter" {Start-Process "shell:::{A8A91A66-3A7D-4424-8D24-04E180695C7A}"} 20 | "WPFPanelsystem" {cmd /c sysdm.cpl} 21 | "WPFPaneluser" {cmd /c "control userpasswords2"} 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /functions/public/Invoke-WPFFeatureInstall.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WPFFeatureInstall { 2 | <# 3 | 4 | .SYNOPSIS 5 | Installs selected Windows Features 6 | 7 | #> 8 | 9 | if($sync.ProcessRunning) { 10 | $msg = "[Invoke-WPFFeatureInstall] Install process is currently running." 11 | [System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning) 12 | return 13 | } 14 | 15 | $Features = (Get-WinUtilCheckBoxes)["WPFFeature"] 16 | 17 | Invoke-WPFRunspace -ArgumentList $Features -DebugPreference $DebugPreference -ScriptBlock { 18 | param($Features, $DebugPreference) 19 | $sync.ProcessRunning = $true 20 | if ($Features.count -eq 1) { 21 | $sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Indeterminate" -value 0.01 -overlay "logo" }) 22 | } else { 23 | $sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Normal" -value 0.01 -overlay "logo" }) 24 | } 25 | 26 | Invoke-WinUtilFeatureInstall $Features 27 | 28 | $sync.ProcessRunning = $false 29 | $sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "None" -overlay "checkmark" }) 30 | 31 | Write-Host "===================================" 32 | Write-Host "--- Features are Installed ---" 33 | Write-Host "--- A Reboot may be required ---" 34 | Write-Host "===================================" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /functions/public/Invoke-WPFFixesNetwork.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WPFFixesNetwork { 2 | <# 3 | 4 | .SYNOPSIS 5 | Resets various network configurations 6 | 7 | #> 8 | 9 | Write-Host "Resetting Network with netsh" 10 | 11 | # Reset WinSock catalog to a clean state 12 | Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "winsock", "reset" 13 | # Resets WinHTTP proxy setting to DIRECT 14 | Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "winhttp", "reset", "proxy" 15 | # Removes all user configured IP settings 16 | Start-Process -NoNewWindow -FilePath "netsh" -ArgumentList "int", "ip", "reset" 17 | 18 | Write-Host "Process complete. Please reboot your computer." 19 | 20 | $ButtonType = [System.Windows.MessageBoxButton]::OK 21 | $MessageboxTitle = "Network Reset " 22 | $Messageboxbody = ("Stock settings loaded.`n Please reboot your computer") 23 | $MessageIcon = [System.Windows.MessageBoxImage]::Information 24 | 25 | [System.Windows.MessageBox]::Show($Messageboxbody, $MessageboxTitle, $ButtonType, $MessageIcon) 26 | Write-Host "==========================================" 27 | Write-Host "-- Network Configuration has been Reset --" 28 | Write-Host "==========================================" 29 | } 30 | -------------------------------------------------------------------------------- /functions/public/Invoke-WPFFixesWinget.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WPFFixesWinget { 2 | 3 | <# 4 | 5 | .SYNOPSIS 6 | Fixes Winget by running choco install winget 7 | .DESCRIPTION 8 | BravoNorris for the fantastic idea of a button to reinstall winget 9 | #> 10 | # Install Choco if not already present 11 | Install-WinUtilChoco 12 | Start-Process -FilePath "choco" -ArgumentList "install winget -y --force" -NoNewWindow -Wait 13 | 14 | } 15 | -------------------------------------------------------------------------------- /functions/public/Invoke-WPFFormVariables.ps1: -------------------------------------------------------------------------------- 1 | Function Invoke-WPFFormVariables { 2 | <# 3 | 4 | .SYNOPSIS 5 | Prints the logo 6 | 7 | #> 8 | #If ($global:ReadmeDisplay -ne $true) { Write-Host "If you need to reference this display again, run Get-FormVariables" -ForegroundColor Yellow; $global:ReadmeDisplay = $true } 9 | 10 | 11 | Write-Host "" 12 | Write-Host " CCCCCCCCCCCCCTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT " 13 | Write-Host " CCC::::::::::::CT:::::::::::::::::::::TT:::::::::::::::::::::T " 14 | Write-Host "CC:::::::::::::::CT:::::::::::::::::::::TT:::::::::::::::::::::T " 15 | Write-Host "C:::::CCCCCCCC::::CT:::::TT:::::::TT:::::TT:::::TT:::::::TT:::::T " 16 | Write-Host "C:::::C CCCCCCTTTTTT T:::::T TTTTTTTTTTTT T:::::T TTTTTT" 17 | Write-Host "C:::::C T:::::T T:::::T " 18 | Write-Host "C:::::C T:::::T T:::::T " 19 | Write-Host "C:::::C T:::::T T:::::T " 20 | Write-Host "C:::::C T:::::T T:::::T " 21 | Write-Host "C:::::C T:::::T T:::::T " 22 | Write-Host "C:::::C T:::::T T:::::T " 23 | Write-Host "C:::::C CCCCCC T:::::T T:::::T " 24 | Write-Host "C:::::CCCCCCCC::::C TT:::::::TT TT:::::::TT " 25 | Write-Host "CC:::::::::::::::C T:::::::::T T:::::::::T " 26 | Write-Host "CCC::::::::::::C T:::::::::T T:::::::::T " 27 | Write-Host " CCCCCCCCCCCCC TTTTTTTTTTT TTTTTTTTTTT " 28 | Write-Host "" 29 | Write-Host "====Chris Titus Tech=====" 30 | Write-Host "=====Windows Toolbox=====" 31 | 32 | #====DEBUG GUI Elements==== 33 | 34 | #Write-Host "Found the following interactable elements from our form" -ForegroundColor Cyan 35 | #get-variable WPF* 36 | } 37 | -------------------------------------------------------------------------------- /functions/public/Invoke-WPFGetInstalled.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WPFGetInstalled { 2 | <# 3 | TODO: Add the Option to use Chocolatey as Engine 4 | .SYNOPSIS 5 | Invokes the function that gets the checkboxes to check in a new runspace 6 | 7 | .PARAMETER checkbox 8 | Indicates whether to check for installed 'winget' programs or applied 'tweaks' 9 | 10 | #> 11 | param($checkbox) 12 | 13 | if($sync.ProcessRunning) { 14 | $msg = "[Invoke-WPFGetInstalled] Install process is currently running." 15 | [System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning) 16 | return 17 | } 18 | 19 | if(($sync.WPFpreferChocolatey.IsChecked -eq $false) -and ((Test-WinUtilPackageManager -winget) -eq "not-installed") -and $checkbox -eq "winget") { 20 | return 21 | } 22 | $preferChoco = $sync.WPFpreferChocolatey.IsChecked 23 | Invoke-WPFRunspace -ArgumentList $checkbox, $preferChoco -DebugPreference $DebugPreference -ScriptBlock { 24 | param($checkbox, $preferChoco, $DebugPreference) 25 | 26 | $sync.ProcessRunning = $true 27 | $sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Indeterminate" }) 28 | 29 | if($checkbox -eq "winget") { 30 | Write-Host "Getting Installed Programs..." 31 | } 32 | if($checkbox -eq "tweaks") { 33 | Write-Host "Getting Installed Tweaks..." 34 | } 35 | if ($preferChoco -and $checkbox -eq "winget") { 36 | $Checkboxes = Invoke-WinUtilCurrentSystem -CheckBox "choco" 37 | } 38 | else{ 39 | $Checkboxes = Invoke-WinUtilCurrentSystem -CheckBox $checkbox 40 | } 41 | 42 | $sync.form.Dispatcher.invoke({ 43 | foreach($checkbox in $Checkboxes) { 44 | $sync.$checkbox.ischecked = $True 45 | } 46 | }) 47 | 48 | Write-Host "Done..." 49 | $sync.ProcessRunning = $false 50 | $sync.form.Dispatcher.Invoke([action] { Set-WinUtilTaskbaritem -state "None" }) 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /functions/public/Invoke-WPFImpex.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WPFImpex { 2 | <# 3 | 4 | .SYNOPSIS 5 | Handles importing and exporting of the checkboxes checked for the tweaks section 6 | 7 | .PARAMETER type 8 | Indicates whether to 'import' or 'export' 9 | 10 | .PARAMETER checkbox 11 | The checkbox to export to a file or apply the imported file to 12 | 13 | .EXAMPLE 14 | Invoke-WPFImpex -type "export" 15 | 16 | #> 17 | param( 18 | $type, 19 | $Config = $null 20 | ) 21 | 22 | if ($type -eq "export") { 23 | $FileBrowser = New-Object System.Windows.Forms.SaveFileDialog 24 | } 25 | if ($type -eq "import") { 26 | $FileBrowser = New-Object System.Windows.Forms.OpenFileDialog 27 | } 28 | 29 | if (-not $Config) { 30 | $FileBrowser.InitialDirectory = [Environment]::GetFolderPath('Desktop') 31 | $FileBrowser.Filter = "JSON Files (*.json)|*.json" 32 | $FileBrowser.ShowDialog() | Out-Null 33 | 34 | if($FileBrowser.FileName -eq "") { 35 | return 36 | } else { 37 | $Config = $FileBrowser.FileName 38 | } 39 | } 40 | 41 | if ($type -eq "export") { 42 | $jsonFile = Get-WinUtilCheckBoxes -unCheck $false 43 | $jsonFile | ConvertTo-Json | Out-File $FileBrowser.FileName -Force 44 | $runscript = "iex ""& { `$(irm christitus.com/win) } -Config '$($FileBrowser.FileName)'""" 45 | $runscript | Set-Clipboard 46 | } 47 | if ($type -eq "import") { 48 | $jsonFile = Get-Content $Config | ConvertFrom-Json 49 | 50 | $flattenedJson = @() 51 | $jsonFile.PSObject.Properties | ForEach-Object { 52 | $category = $_.Name 53 | foreach ($checkboxName in $_.Value) { 54 | if ($category -ne "Install") { 55 | $flattenedJson += $checkboxName 56 | } 57 | } 58 | } 59 | 60 | $flattenedJson = [string]$flattenedJson 61 | Invoke-WPFPresets -preset $flattenedJson -imported $true 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /functions/public/Invoke-WPFInstallUpgrade.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WPFInstallUpgrade { 2 | <# 3 | 4 | .SYNOPSIS 5 | Invokes the function that upgrades all installed programs 6 | 7 | #> 8 | if ($sync.WPFpreferChocolatey.IsChecked) { 9 | Install-WinUtilChoco 10 | $chocoUpgradeStatus = (Start-Process "choco" -ArgumentList "upgrade all -y" -Wait -PassThru -NoNewWindow).ExitCode 11 | if ($chocoUpgradeStatus -eq 0) { 12 | Write-Host "Upgrade Successful" 13 | } 14 | else{ 15 | Write-Host "Error Occured. Return Code: $chocoUpgradeStatus" 16 | } 17 | } 18 | else{ 19 | if((Test-WinUtilPackageManager -winget) -eq "not-installed") { 20 | return 21 | } 22 | 23 | if(Get-WinUtilInstallerProcess -Process $global:WinGetInstall) { 24 | $msg = "[Invoke-WPFInstallUpgrade] Install process is currently running. Please check for a powershell window labeled 'Winget Install'" 25 | [System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning) 26 | return 27 | } 28 | 29 | Update-WinUtilProgramWinget 30 | 31 | Write-Host "===========================================" 32 | Write-Host "-- Updates started ---" 33 | Write-Host "-- You can close this window if desired ---" 34 | Write-Host "===========================================" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /functions/public/Invoke-WPFOOSU.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WPFOOSU { 2 | <# 3 | .SYNOPSIS 4 | Downloads and runs OO Shutup 10 5 | #> 6 | try { 7 | $OOSU_filepath = "$ENV:temp\OOSU10.exe" 8 | $Initial_ProgressPreference = $ProgressPreference 9 | $ProgressPreference = "SilentlyContinue" # Disables the Progress Bar to drasticly speed up Invoke-WebRequest 10 | Invoke-WebRequest -Uri "https://dl5.oo-software.com/files/ooshutup10/OOSU10.exe" -OutFile $OOSU_filepath 11 | Write-Host "Starting OO Shutup 10 ..." 12 | Start-Process $OOSU_filepath 13 | } catch { 14 | Write-Host "Error Downloading and Running OO Shutup 10" -ForegroundColor Red 15 | } 16 | finally { 17 | $ProgressPreference = $Initial_ProgressPreference 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /functions/public/Invoke-WPFPanelAutologin.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WPFPanelAutologin { 2 | <# 3 | 4 | .SYNOPSIS 5 | Enables autologin using Sysinternals Autologon.exe 6 | 7 | #> 8 | 9 | # Official Microsoft recommendation: https://learn.microsoft.com/en-us/sysinternals/downloads/autologon 10 | Invoke-WebRequest -Uri "https://live.sysinternals.com/Autologon.exe" -OutFile "$env:temp\autologin.exe" 11 | cmd /c "$env:temp\autologin.exe" /accepteula 12 | } 13 | -------------------------------------------------------------------------------- /functions/public/Invoke-WPFPanelDISM.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WPFPanelDISM { 2 | <# 3 | 4 | .SYNOPSIS 5 | Checks for system corruption using Chkdsk, SFC, and DISM 6 | 7 | .DESCRIPTION 8 | 1. Chkdsk - Fixes disk and filesystem corruption 9 | 2. SFC Run 1 - Fixes system file corruption, and fixes DISM if it was corrupted 10 | 3. DISM - Fixes system image corruption, and fixes SFC's system image if it was corrupted 11 | 4. SFC Run 2 - Fixes system file corruption, this time with an almost guaranteed uncorrupted system image 12 | 13 | .NOTES 14 | Command Arguments: 15 | 1. Chkdsk 16 | /Scan - Runs an online scan on the system drive, attempts to fix any corruption, and queues other corruption for fixing on reboot 17 | 2. SFC 18 | /ScanNow - Performs a scan of the system files and fixes any corruption 19 | 3. DISM - Fixes system image corruption, and fixes SFC's system image if it was corrupted 20 | /Online - Fixes the currently running system image 21 | /Cleanup-Image - Performs cleanup operations on the image, could remove some unneeded temporary files 22 | /Restorehealth - Performs a scan of the image and fixes any corruption 23 | 24 | #> 25 | Start-Process PowerShell -ArgumentList "Write-Host '(1/4) Chkdsk' -ForegroundColor Green; Chkdsk /scan; 26 | Write-Host '`n(2/4) SFC - 1st scan' -ForegroundColor Green; sfc /scannow; 27 | Write-Host '`n(3/4) DISM' -ForegroundColor Green; DISM /Online /Cleanup-Image /Restorehealth; 28 | Write-Host '`n(4/4) SFC - 2nd scan' -ForegroundColor Green; sfc /scannow; 29 | Read-Host '`nPress Enter to Continue'" -verb runas 30 | } 31 | -------------------------------------------------------------------------------- /functions/public/Invoke-WPFPresets.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WPFPresets { 2 | <# 3 | 4 | .SYNOPSIS 5 | Sets the options in the tweaks panel to the given preset 6 | 7 | .PARAMETER preset 8 | The preset to set the options to 9 | 10 | .PARAMETER imported 11 | If the preset is imported from a file, defaults to false 12 | 13 | .PARAMETER checkboxfilterpattern 14 | The Pattern to use when filtering through CheckBoxes, defaults to "**" 15 | 16 | #> 17 | 18 | param ( 19 | [Parameter(position=0)] 20 | [string]$preset = "", 21 | 22 | [Parameter(position=1)] 23 | [bool]$imported = $false, 24 | 25 | [Parameter(position=2)] 26 | [string]$checkboxfilterpattern = "**" 27 | ) 28 | 29 | if ($imported -eq $true) { 30 | $CheckBoxesToCheck = $preset 31 | } else { 32 | $CheckBoxesToCheck = $sync.configs.preset.$preset 33 | } 34 | 35 | $CheckBoxes = ($sync.GetEnumerator()).where{ $_.Value -is [System.Windows.Controls.CheckBox] -and $_.Name -notlike "WPFToggle*" -and $_.Name -like "$checkboxfilterpattern"} 36 | Write-Debug "Getting checkboxes to set, number of checkboxes: $($CheckBoxes.Count)" 37 | 38 | if ($CheckBoxesToCheck -ne "") { 39 | $debugMsg = "CheckBoxes to Check are: " 40 | $CheckBoxesToCheck | ForEach-Object { $debugMsg += "$_, " } 41 | $debugMsg = $debugMsg -replace (',\s*$', '') 42 | Write-Debug "$debugMsg" 43 | } 44 | 45 | foreach ($CheckBox in $CheckBoxes) { 46 | $checkboxName = $CheckBox.Key 47 | 48 | if (-not $CheckBoxesToCheck) { 49 | $sync.$checkboxName.IsChecked = $false 50 | continue 51 | } 52 | 53 | # Check if the checkbox name exists in the flattened JSON hashtable 54 | if ($CheckBoxesToCheck.Contains($checkboxName)) { 55 | # If it exists, set IsChecked to true 56 | $sync.$checkboxName.IsChecked = $true 57 | Write-Debug "$checkboxName is checked" 58 | } else { 59 | # If it doesn't exist, set IsChecked to false 60 | $sync.$checkboxName.IsChecked = $false 61 | Write-Debug "$checkboxName is not checked" 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /functions/public/Invoke-WPFRunAdobeCCCleanerTool.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WPFRunAdobeCCCleanerTool { 2 | <# 3 | .SYNOPSIS 4 | It removes or fixes problem files and resolves permission issues in registry keys. 5 | .DESCRIPTION 6 | The Creative Cloud Cleaner tool is a utility for experienced users to clean up corrupted installations. 7 | #> 8 | 9 | [string]$url="https://swupmf.adobe.com/webfeed/CleanerTool/win/AdobeCreativeCloudCleanerTool.exe" 10 | 11 | Write-Host "The Adobe Creative Cloud Cleaner tool is hosted at" 12 | Write-Host "$url" 13 | 14 | try { 15 | # Don't show the progress because it will slow down the download speed 16 | $ProgressPreference='SilentlyContinue' 17 | 18 | Invoke-WebRequest -Uri $url -OutFile "$env:TEMP\AdobeCreativeCloudCleanerTool.exe" -UseBasicParsing -ErrorAction SilentlyContinue -Verbose 19 | 20 | # Revert back the ProgressPreference variable to the default value since we got the file desired 21 | $ProgressPreference='Continue' 22 | 23 | Start-Process -FilePath "$env:TEMP\AdobeCreativeCloudCleanerTool.exe" -Wait -ErrorAction SilentlyContinue -Verbose 24 | } catch { 25 | Write-Error $_.Exception.Message 26 | } finally { 27 | if (Test-Path -Path "$env:TEMP\AdobeCreativeCloudCleanerTool.exe") { 28 | Write-Host "Cleaning up..." 29 | Remove-Item -Path "$env:TEMP\AdobeCreativeCloudCleanerTool.exe" -Verbose 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /functions/public/Invoke-WPFRunspace.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WPFRunspace { 2 | 3 | <# 4 | 5 | .SYNOPSIS 6 | Creates and invokes a runspace using the given scriptblock and argumentlist 7 | 8 | .PARAMETER ScriptBlock 9 | The scriptblock to invoke in the runspace 10 | 11 | .PARAMETER ArgumentList 12 | A list of arguments to pass to the runspace 13 | 14 | .PARAMETER ParameterList 15 | A list of named parameters that should be provided. 16 | .EXAMPLE 17 | Invoke-WPFRunspace ` 18 | -ScriptBlock $sync.ScriptsInstallPrograms ` 19 | -ArgumentList "Installadvancedip,Installbitwarden" ` 20 | 21 | Invoke-WPFRunspace` 22 | -ScriptBlock $sync.ScriptsInstallPrograms ` 23 | -ParameterList @(("PackagesToInstall", @("Installadvancedip,Installbitwarden")),("ChocoPreference", $true)) 24 | #> 25 | 26 | [CmdletBinding()] 27 | Param ( 28 | $ScriptBlock, 29 | $ArgumentList, 30 | $ParameterList, 31 | $DebugPreference 32 | ) 33 | 34 | # Create a PowerShell instance 35 | $script:powershell = [powershell]::Create() 36 | 37 | # Add Scriptblock and Arguments to runspace 38 | $script:powershell.AddScript($ScriptBlock) 39 | $script:powershell.AddArgument($ArgumentList) 40 | 41 | foreach ($parameter in $ParameterList) { 42 | $script:powershell.AddParameter($parameter[0], $parameter[1]) 43 | } 44 | $script:powershell.AddArgument($DebugPreference) # Pass DebugPreference to the script block 45 | $script:powershell.RunspacePool = $sync.runspace 46 | 47 | # Execute the RunspacePool 48 | $script:handle = $script:powershell.BeginInvoke() 49 | 50 | # Clean up the RunspacePool threads when they are complete, and invoke the garbage collector to clean up the memory 51 | if ($script:handle.IsCompleted) { 52 | $script:powershell.EndInvoke($script:handle) 53 | $script:powershell.Dispose() 54 | $sync.runspace.Dispose() 55 | $sync.runspace.Close() 56 | [System.GC]::Collect() 57 | } 58 | # Return the handle 59 | return $handle 60 | } 61 | -------------------------------------------------------------------------------- /functions/public/Invoke-WPFTab.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WPFTab { 2 | 3 | <# 4 | 5 | .SYNOPSIS 6 | Sets the selected tab to the tab that was clicked 7 | 8 | .PARAMETER ClickedTab 9 | The name of the tab that was clicked 10 | 11 | #> 12 | 13 | Param ($ClickedTab) 14 | 15 | $tabNav = Get-WinUtilVariables | Where-Object {$psitem -like "WPFTabNav"} 16 | $tabNumber = [int]($ClickedTab -replace "WPFTab","" -replace "BT","") - 1 17 | 18 | $filter = Get-WinUtilVariables -Type ToggleButton | Where-Object {$psitem -like "WPFTab?BT"} 19 | $sync.GetEnumerator() | Where-Object {$psitem.Key -in $filter} | ForEach-Object { 20 | if ($ClickedTab -ne $PSItem.name) { 21 | $sync[$PSItem.Name].IsChecked = $false 22 | # $tabNumber = [int]($PSItem.Name -replace "WPFTab","" -replace "BT","") - 1 23 | # $sync.$tabNav.Items[$tabNumber].IsSelected = $false 24 | } else { 25 | $sync["$ClickedTab"].IsChecked = $true 26 | $tabNumber = [int]($ClickedTab-replace "WPFTab","" -replace "BT","") - 1 27 | $sync.$tabNav.Items[$tabNumber].IsSelected = $true 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /functions/public/Invoke-WPFToggle.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WPFToggle { 2 | 3 | <# 4 | 5 | .SYNOPSIS 6 | Invokes the scriptblock for the given toggle 7 | 8 | .PARAMETER Button 9 | The name of the toggle to invoke 10 | 11 | #> 12 | 13 | Param ([string]$Button) 14 | 15 | # Use this to get the name of the button 16 | #[System.Windows.MessageBox]::Show("$Button","Chris Titus Tech's Windows Utility","OK","Info") 17 | 18 | $ToggleStatus = (Get-WinUtilToggleStatus $Button) 19 | 20 | Switch -Wildcard ($Button) { 21 | 22 | "WPFToggleDarkMode" {Invoke-WinUtilDarkMode $ToggleStatus} 23 | "WPFToggleBingSearch" {Invoke-WinUtilBingSearch $ToggleStatus} 24 | "WPFToggleNumLock" {Invoke-WinUtilNumLock $ToggleStatus} 25 | "WPFToggleVerboseLogon" {Invoke-WinUtilVerboseLogon $ToggleStatus} 26 | "WPFToggleShowExt" {Invoke-WinUtilShowExt $ToggleStatus} 27 | "WPFToggleSnapWindow" {Invoke-WinUtilSnapWindow $ToggleStatus} 28 | "WPFToggleSnapFlyout" {Invoke-WinUtilSnapFlyout $ToggleStatus} 29 | "WPFToggleSnapSuggestion" {Invoke-WinUtilSnapSuggestion $ToggleStatus} 30 | "WPFToggleMouseAcceleration" {Invoke-WinUtilMouseAcceleration $ToggleStatus} 31 | "WPFToggleStickyKeys" {Invoke-WinUtilStickyKeys $ToggleStatus} 32 | "WPFToggleTaskbarWidgets" {Invoke-WinUtilTaskbarWidgets $ToggleStatus} 33 | "WPFToggleTaskbarSearch" {Invoke-WinUtilTaskbarSearch $ToggleStatus} 34 | "WPFToggleTaskView" {Invoke-WinUtilTaskView $ToggleStatus} 35 | "WPFToggleHiddenFiles" {Invoke-WinUtilHiddenFiles $ToggleStatus} 36 | "WPFToggleTaskbarAlignment" {Invoke-WinUtilTaskbarAlignment $ToggleStatus} 37 | "WPFToggleDetailedBSoD" {Invoke-WinUtilDetailedBSoD $ToggleStatus} 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /functions/public/Invoke-WPFUpdatesdisable.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WPFUpdatesdisable { 2 | <# 3 | 4 | .SYNOPSIS 5 | Disables Windows Update 6 | 7 | .NOTES 8 | Disabling Windows Update is not recommended. This is only for advanced users who know what they are doing. 9 | 10 | #> 11 | If (!(Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU")) { 12 | New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Force | Out-Null 13 | } 14 | Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "NoAutoUpdate" -Type DWord -Value 1 15 | Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" -Name "AUOptions" -Type DWord -Value 1 16 | If (!(Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config")) { 17 | New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config" -Force | Out-Null 18 | } 19 | Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config" -Name "DODownloadMode" -Type DWord -Value 0 20 | 21 | $services = @( 22 | "BITS" 23 | "wuauserv" 24 | ) 25 | 26 | foreach ($service in $services) { 27 | # -ErrorAction SilentlyContinue is so it doesn't write an error to stdout if a service doesn't exist 28 | 29 | Write-Host "Setting $service StartupType to Disabled" 30 | Get-Service -Name $service -ErrorAction SilentlyContinue | Set-Service -StartupType Disabled 31 | } 32 | Write-Host "=================================" 33 | Write-Host "--- Updates ARE DISABLED ---" 34 | Write-Host "=================================" 35 | } 36 | -------------------------------------------------------------------------------- /functions/public/Invoke-WPFundoall.ps1: -------------------------------------------------------------------------------- 1 | function Invoke-WPFundoall { 2 | <# 3 | 4 | .SYNOPSIS 5 | Undoes every selected tweak 6 | 7 | #> 8 | 9 | if($sync.ProcessRunning) { 10 | $msg = "[Invoke-WPFundoall] Install process is currently running." 11 | [System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning) 12 | return 13 | } 14 | 15 | $tweaks = (Get-WinUtilCheckBoxes)["WPFtweaks"] 16 | 17 | if ($tweaks.count -eq 0) { 18 | $msg = "Please check the tweaks you wish to undo." 19 | [System.Windows.MessageBox]::Show($msg, "Winutil", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Warning) 20 | return 21 | } 22 | 23 | Invoke-WPFRunspace -ArgumentList $tweaks -DebugPreference $DebugPreference -ScriptBlock { 24 | param($tweaks, $DebugPreference) 25 | 26 | $sync.ProcessRunning = $true 27 | if ($tweaks.count -eq 1) { 28 | $sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Indeterminate" -value 0.01 -overlay "logo" }) 29 | } else { 30 | $sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "Normal" -value 0.01 -overlay "logo" }) 31 | } 32 | 33 | 34 | for ($i = 0; $i -lt $tweaks.Count; $i++) { 35 | Set-WinUtilProgressBar -Label "Undoing $($tweaks[$i])" -Percent ($i / $tweaks.Count * 100) 36 | Invoke-WinUtiltweaks $tweaks[$i] -undo $true 37 | $sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -value ($i/$tweaks.Count) }) 38 | } 39 | 40 | Set-WinUtilProgressBar -Label "Undo Tweaks Finished" -Percent 100 41 | $sync.ProcessRunning = $false 42 | $sync.form.Dispatcher.Invoke([action]{ Set-WinUtilTaskbaritem -state "None" -overlay "checkmark" }) 43 | Write-Host "==================================" 44 | Write-Host "--- Undo Tweaks are Finished ---" 45 | Write-Host "==================================" 46 | 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /lint/PSScriptAnalyser.ps1: -------------------------------------------------------------------------------- 1 | @{ 2 | # Only diagnostic records of the specified severity will be generated. 3 | # Uncomment the following line if you only want Errors and Warnings but 4 | # not Information diagnostic records. 5 | # Severity = @('Error','Warning') 6 | 7 | # Analyze **only** the following rules. Use IncludeRules when you want 8 | # to invoke only a small subset of the default rules. 9 | <# 10 | IncludeRules = @('PSAvoidDefaultValueSwitchParameter', 11 | 'PSMisleadingBacktick', 12 | 'PSMissingModuleManifestField', 13 | 'PSReservedCmdletChar', 14 | 'PSReservedParams', 15 | 'PSShouldProcess', 16 | 'PSUseApprovedVerbs', 17 | 'PSUseDeclaredVarsMoreThanAssignments') 18 | #> 19 | # Do not analyze the following rules. Use ExcludeRules when you have 20 | # commented out the IncludeRules settings above and want to include all 21 | # the default rules except for those you exclude below. 22 | # Note: if a rule is in both IncludeRules and ExcludeRules, the rule 23 | # will be excluded. 24 | ExcludeRules = @('PSAvoidUsingWriteHost') 25 | } 26 | -------------------------------------------------------------------------------- /overrides/main.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block header %} 4 | {{ super() }} 5 |
6 | Announcement: We are currently not adding any applications to WinUtil and any apps that will be added through a PR will be declined by the maintainer. 7 |
8 | {% endblock %} 9 | 10 | {% block footer %} 11 | {# Empty block to override the footer #} 12 | {% endblock %} 13 | -------------------------------------------------------------------------------- /releases/oscdimg.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CodingWonders/winutil/81aead7a687feae2c4ffb9841196559692789eba/releases/oscdimg.exe --------------------------------------------------------------------------------