The response has been limited to 50k tokens of the smallest files in the repo. You can remove this limitation by removing the max tokens filter.
├── .gitignore
├── LICENSE
├── README.md
├── languages
    ├── de
    │   ├── Bloatynosy Nue.resources.dll
    │   └── Bloatynosy.resources.dll
    ├── it
    │   └── Bloatynosy Nue.resources.dll
    └── ko
    │   ├── Bloatynosy Nue.resources.dll
    │   └── Bloatynosy.resources.dll
├── plugins
    ├── AppInstaller.json
    ├── AppMatrix.json
    ├── Block New Outlook.json
    ├── ChrisTitusApp.ps1
    ├── Clear Icon Cache.json
    ├── Create Restore Point.ps1
    ├── File Extensions Visibility.json
    ├── Force Windows Update to Windows 11 24H2.json
    ├── Inplace Upgrade to 24H2 via Registry.json
    ├── Newtonsoft.Json.dll
    ├── Remove Windows AI.ps1
    ├── Remove default apps.ps1
    ├── Restart Explorer.ps1
    ├── Restore all built-in apps.ps1
    ├── Snap Assist Flyout.json
    ├── Uninstall OneDrive.ps1
    ├── Use light theme.json
    ├── User Account Control.json
    ├── Windows 11 24H2 Inplace Upgrade (Server Setup).ps1
    ├── Windows Old Remover.json
    ├── Windows Rollback Timer.json
    └── plugins_manifest.json
└── src
    ├── Bloatynosy
        ├── App.config
        ├── AppIcon.ico
        ├── AppIconPNG.png
        ├── BloatynosyNue.csproj
        ├── Experience
        │   ├── AI
        │   │   ├── CopilotTaskbar.cs
        │   │   ├── RecallMachine.cs
        │   │   └── RecallUser.cs
        │   ├── Ads
        │   │   ├── FileExplorerAds.cs
        │   │   ├── FinishSetupAds.cs
        │   │   ├── LockScreenAds.cs
        │   │   ├── PersonalizedAds.cs
        │   │   ├── SettingsAds.cs
        │   │   ├── StartmenuAds.cs
        │   │   ├── TailoredExperiences.cs
        │   │   ├── TipsAndSuggestions.cs
        │   │   └── WelcomeExperienceAds.cs
        │   ├── FeatureBase.cs
        │   ├── FeatureNode.cs
        │   ├── FeaturePanel.cs
        │   ├── Gaming
        │   │   ├── GameDVR.cs
        │   │   ├── PowerThrotteling.cs
        │   │   └── VisualFX.cs
        │   ├── Privacy
        │   │   ├── ActivityHistory.cs
        │   │   ├── LocationTracking.cs
        │   │   ├── PrivacyExperience.cs
        │   │   └── Telemetry.cs
        │   └── UI
        │   │   ├── FullContextMenus.cs
        │   │   ├── LockScreen.cs
        │   │   ├── SearchboxTaskbarMode.cs
        │   │   ├── ShowOrHideMostUsedApps.cs
        │   │   ├── ShowTaskViewButton.cs
        │   │   ├── StartLayout.cs
        │   │   └── TaskbarAlignment.cs
        ├── Helper
        │   ├── Helper.cs
        │   ├── Logger.cs
        │   ├── Utils.cs
        │   └── Views.cs
        ├── JsonPluginHandler.cs
        ├── Locales
        │   ├── Strings.Designer.cs
        │   ├── Strings.de.Designer.cs
        │   ├── Strings.de.resx
        │   ├── Strings.it.Designer.cs
        │   ├── Strings.it.resx
        │   ├── Strings.ko.resx
        │   └── Strings.resx
        ├── MainForm.Designer.cs
        ├── MainForm.cs
        ├── MainForm.resx
        ├── PSPluginHandler.cs
        ├── Program.cs
        ├── Properties
        │   ├── AssemblyInfo.cs
        │   ├── Resources.Designer.cs
        │   ├── Resources.resx
        │   ├── Settings.Designer.cs
        │   └── Settings.settings
        ├── Resources
        │   ├── AppIcon.png
        │   ├── assetHeader.png
        │   ├── assetUAC.png
        │   └── assetWaving.png
        ├── Views
        │   ├── AppIcon.png
        │   ├── AppsView.Designer.cs
        │   ├── AppsView.cs
        │   ├── AppsView.resx
        │   ├── ExperienceView.Designer.cs
        │   ├── ExperienceView.cs
        │   ├── ExperienceView.resx
        │   ├── LoggerView.Designer.cs
        │   ├── LoggerView.cs
        │   ├── LoggerView.resx
        │   ├── PluginsReview.Designer.cs
        │   ├── PluginsReview.cs
        │   ├── PluginsReview.resx
        │   ├── PluginsView.Designer.cs
        │   ├── PluginsView.cs
        │   ├── PluginsView.resx
        │   ├── SettingsView.Designer.cs
        │   ├── SettingsView.cs
        │   ├── SettingsView.resx
        │   ├── StoreView.Designer.cs
        │   ├── StoreView.cs
        │   └── StoreView.resx
        ├── app.manifest
        └── packages.config
    ├── BloatynosyNue.sln
    ├── Winpilot.sln
    └── Winpilot
        ├── App.config
        ├── AppIcon.ico
        ├── AppIconPNG.png
        ├── Helpers
            ├── Logger.cs
            ├── Utils.cs
            └── Views.cs
        ├── Interop
            ├── AIFeaturesHandler.cs
            ├── AppPackages.cs
            ├── AppxPackages.cs
            ├── ClippyConversationHandler.cs
            ├── ClippyDataHandler.cs
            ├── ClippyLogicHandler.cs
            ├── CommandsHandler.cs
            ├── DownloadHandler.cs
            ├── StorageSettings.cs
            ├── ThemeSettings.cs
            ├── UpdateSettings.cs
            └── WallpaperSettings.cs
        ├── InteropBase.cs
        ├── MainForm.Designer.cs
        ├── MainForm.cs
        ├── MainForm.resx
        ├── Program.cs
        ├── Properties
            ├── AssemblyInfo.cs
            ├── Resources.Designer.cs
            ├── Resources.resx
            ├── Settings.Designer.cs
            └── Settings.settings
        ├── Views
            ├── SettingsPageView.Designer.cs
            ├── SettingsPageView.cs
            └── SettingsPageView.resx
        ├── Walks
            ├── AI
            │   ├── CopilotMSEdge.cs
            │   └── CopilotTaskbar.cs
            ├── Ads
            │   ├── FileExplorerAds.cs
            │   ├── FinishSetupAds.cs
            │   ├── LockScreenAds.cs
            │   ├── PersonalizedAds.cs
            │   ├── SettingsAds.cs
            │   ├── StartmenuAds.cs
            │   ├── TailoredExperiences.cs
            │   ├── TipsAndSuggestions.cs
            │   └── WelcomeExperienceAds.cs
            ├── Bloatware
            │   └── CAppxPackages.cs
            ├── Gaming
            │   ├── GameDVR.cs
            │   ├── PowerThrottling.cs
            │   └── VisualFX.cs
            ├── Privacy
            │   ├── BackgroundApps.cs
            │   ├── DiagnosticData.cs
            │   ├── FindMyDevice.cs
            │   ├── PrivacyExperience.cs
            │   └── Telemetry.cs
            ├── System
            │   ├── FaxPrinter.cs
            │   ├── FullContextMenus.cs
            │   ├── LockScreen.cs
            │   ├── VerboseMessages.cs
            │   └── XPSWriter.cs
            └── Taskbar
            │   ├── BingSearch.cs
            │   ├── MostUsedApps.cs
            │   ├── StartmenuLayout.cs
            │   ├── TaskView.cs
            │   └── TaskbarChat.cs
        ├── WalksBase.cs
        ├── Winpilot.csproj
        ├── app-backend
            ├── UI.css
            ├── UI_dark.css
            ├── appxData.json
            ├── backend.js
            ├── chatbotClippy.png
            ├── chatbotPaperclip.png
            ├── clippySayings.json
            ├── frontend.html
            └── staticAIData.json
        ├── app.manifest
        └── packages.config


/LICENSE:
--------------------------------------------------------------------------------
 1 | MIT License
 2 | 
 3 | Copyright (c) 2024 A Belim app creation (Builtbybel)
 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 | 


--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
 1 | # The Bloaty and the Nosy - No Bloat, No Problem!
 2 | 
 3 | You probably remember my classic BloatynosyApp, which had to go through some renaming and eventually got discontinued. Everything that came after, like the web-based "Winpilot," didn't last long either. Honestly, I thought I was done with Bloatynosy-well, at least with the name. But then, during a recent visit to a well-known company, I saw an employee Googling the app and trying to download it, and I had to stifle a laugh. Apparently, the legend lives on. The employee and I had a good laugh about it, and he even called it the epitome of debloating.
 4 | 
 5 | Sometimes, I think a little too long about things, and then a useful project just pops out. Bloatynosy was one of those projects. Sure, the name wasn't for everyone, but it was the go-to tool for cleaning up and debloating Windows. Recently, I added an OOBE assistant called "Fresh11" to the FlybyScript—basically, an all-in-one solution and I figured, why not use the same foundation to bring Bloatynosy back to life?
 6 | 
 7 | I had a hard time committing to it, but in the end, I went for it. Now I can proudly say that after Bloatynosy, there won’t be anything newer or better. This time, it'll be even leaner, more efficient, smaller, and faster. A simple .exe that anyone can understand, doing exactly what bugs us after installing Windows 11. The reborn Bloatynosy carries the "Nue" extension, not "New" ;) The last solid, classic version was 0.85, and that's where Im picking up (with a fresh new interface). The build carries a small 11.x version number.
 8 | 
 9 | Its primarily designed for Windows 11, but it can also be used on Windows 10, though not all settings are applicable there.
10 | 
11 | ## Download
12 | Latest release: [Goto releases page ](https://github.com/builtbybel/Bloatynosy/releases)
13 | 
14 | ### Features
15 | 
16 | - Native stuff (no web app crap)
17 | - Back to basics: efficient and user-friendly
18 | - No AI/Copilot integration
19 | - Focused on the essentials
20 | 
21 | ### What's next
22 | - Localizations coming soon for a global reach
23 |   
24 | And much more to come, stay tuned. Feel free to vote for or suggest new features, including those that were part of the classic Bloatynosy but are still missing
25 | 


--------------------------------------------------------------------------------
/languages/de/Bloatynosy Nue.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/builtbybel/Bloatynosy/48d27896be3557e1878094b86362514b8ab6cbca/languages/de/Bloatynosy Nue.resources.dll


--------------------------------------------------------------------------------
/languages/de/Bloatynosy.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/builtbybel/Bloatynosy/48d27896be3557e1878094b86362514b8ab6cbca/languages/de/Bloatynosy.resources.dll


--------------------------------------------------------------------------------
/languages/it/Bloatynosy Nue.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/builtbybel/Bloatynosy/48d27896be3557e1878094b86362514b8ab6cbca/languages/it/Bloatynosy Nue.resources.dll


--------------------------------------------------------------------------------
/languages/ko/Bloatynosy Nue.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/builtbybel/Bloatynosy/48d27896be3557e1878094b86362514b8ab6cbca/languages/ko/Bloatynosy Nue.resources.dll


--------------------------------------------------------------------------------
/languages/ko/Bloatynosy.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/builtbybel/Bloatynosy/48d27896be3557e1878094b86362514b8ab6cbca/languages/ko/Bloatynosy.resources.dll


--------------------------------------------------------------------------------
/plugins/AppInstaller.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "PlugID": "Install Winget Apps (Chrome, Firefox, 7zip, VLC)",
 3 |   "PlugInfo": "This feature installs essential applications (here Chrome, Firefox, 7zip, VLC) using the Windows Package Manager (winget).",
 4 |   "PlugCheck": [],
 5 |   "PlugCategory": "Software Installation",
 6 |   "PlugDefaultState": false,
 7 |   "PlugDo": [
 8 |     "winget install -e --id Google.Chrome",
 9 |     "winget install -e --id Mozilla.Firefox",
10 |     "winget install -e --id 7zip.7zip",
11 |     "winget install -e --id VLC.VLC"
12 |   ],
13 |   "PlugUndo": [
14 |     "winget uninstall -e --id Google.Chrome",
15 |     "winget uninstall -e --id Mozilla.Firefox",
16 |     "winget uninstall -e --id 7zip.7zip",
17 |     "winget uninstall -e --id VLC.VLC"
18 |   ]
19 | }
20 | 


--------------------------------------------------------------------------------
/plugins/AppMatrix.json:
--------------------------------------------------------------------------------
  1 | {
  2 |   "filters": [
  3 |     {
  4 |       "name": "Most Annoying Bloatware",
  5 |       "criteria": [
  6 | 		"Copilot",
  7 |         "Candy",
  8 |         "Instagram",
  9 |         "Twitter",
 10 |         "TikTok",
 11 |         "Xbox",
 12 |         "Spotify",
 13 |         "YourPhone",
 14 |         "BubbleWitch",
 15 |         "Solitaire",
 16 |         "Minecraft",
 17 |         "FeedbackHub",
 18 |         "Skype",
 19 |         "News",
 20 |         "OneNote",
 21 |         "Tips",
 22 |         "3DViewer",
 23 |         "Paint3D",
 24 |         "MixedReality",
 25 |         "Maps",
 26 |         "Weather",
 27 |         "Groove",
 28 |         "Movies",
 29 |         "Cortana",
 30 |         "Teams",
 31 |         "People",
 32 |         "Xbox Live",
 33 |         "GetHelp",
 34 |         "Mail",
 35 |         "Calendar",
 36 |         "ContactSupport",
 37 |         "GamePass",
 38 |         "ToDo",
 39 |         "Hulu",
 40 |         "Picsart",
 41 |         "Adobe",
 42 |         "Clipchamp",
 43 |         "DevHome",
 44 |         "XboxGameBar",
 45 |         "MicrosoftStore",
 46 |         "Microsoft Solitaire Collection",
 47 |         "Microsoft News",
 48 |         "OneDrive",
 49 |         "SkypePreview",
 50 |         "PhoneLink",
 51 |         "GetOffice",
 52 |         "PowerBI",
 53 |         "OneDrive",
 54 |         "BingWeather",
 55 |         "BingNews",
 56 |         "MixedRealityPortal",
 57 |         "Zune",
 58 |         "BingMaps",
 59 |         "Cortana",
 60 | 	"StickyNotes"
 61 |       ]
 62 |     },
 63 |     {
 64 |       "name": "Microsoft Apps",
 65 |       "criteria": [
 66 |         "Microsoft",
 67 |         "OneDrive"
 68 |       ]
 69 |     },
 70 |     {
 71 |       "name": "Social Media Apps",
 72 |       "criteria": [
 73 |         "Facebook",
 74 |         "Instagram",
 75 |         "Twitter",
 76 |         "Snapchat",
 77 |         "TikTok",
 78 |         "LinkedIn"
 79 |       ]
 80 |     },
 81 |     {
 82 |       "name": "Games",
 83 |       "criteria": [
 84 |         "Solitaire",
 85 |         "Minecraft",
 86 |         "Roblox",
 87 |         "Forza",
 88 |         "SeaOfThieves"
 89 |       ]
 90 |     },
 91 |     {
 92 |       "name": "Video Streaming Apps",
 93 |       "criteria": [
 94 |         "Netflix",
 95 |         "Hulu",
 96 |         "PrimeVideo",
 97 |         "Disney",
 98 |         "YouTube",
 99 |         "AppleTV"
100 |       ]
101 |     },
102 |     {
103 |       "name": "Productivity Tools",
104 |       "criteria": [
105 |         "Office",
106 |         "Teams",
107 |         "Evernote",
108 |         "Trello",
109 |         "OneNote",
110 |         "Notion"
111 |       ]
112 |     },
113 |     {
114 |       "name": "News and Media Apps",
115 |       "criteria": [
116 |         "News",
117 |         "CNN",
118 |         "BBC",
119 |         "Fox",
120 |         "NYTimes",
121 |         "Reddit"
122 |       ]
123 |     },
124 |     {
125 |       "name": "Shopping Apps",
126 |       "criteria": [
127 |         "Amazon",
128 |         "eBay",
129 |         "Walmart",
130 |         "AliExpress",
131 |         "Wish",
132 |         "Etsy"
133 |       ]
134 |     }
135 |   ]
136 | }
137 | 


--------------------------------------------------------------------------------
/plugins/Block New Outlook.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "PlugID": "Block New Outlook Preinstall on Windows 11",
 3 |   "PlugInfo": "This plugin removes the pre-installed Outlook app on Windows 11 builds after 23H2 and blocks future installations.",
 4 |   "PlugCheck": [],
 5 |   "PlugCategory": "Tweaks (Plugins)",
 6 |   "PlugDo": [
 7 |     "Get-AppxPackage -Name Microsoft.OutlookForWindows | Remove-AppxPackage",
 8 |     "reg delete \"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\WindowsUpdate\\Orchestrator\\UScheduler_Oobe\\OutlookUpdate\" /f"
 9 |   ],
10 |   "PlugUndo": [
11 |     "PowerShell -Command \"Write-Output 'There is no undo operation for removing pre-installed Outlook.'\""
12 |   ]
13 | }
14 | 


--------------------------------------------------------------------------------
/plugins/ChrisTitusApp.ps1:
--------------------------------------------------------------------------------
1 | irm christitus.com/win | iex


--------------------------------------------------------------------------------
/plugins/Clear Icon Cache.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "PlugID": "Clear Icon Cache",
 3 |   "PlugInfo": "This feature clears the icon cache in Windows to resolve issues with icons displaying incorrectly.",
 4 |   "PlugCheck": [],
 5 |   "PlugCategory": "Tweaks (Plugins)",
 6 |   "PlugDo": [
 7 |     "ie4uinit.exe -show",
 8 |     "taskkill /IM explorer.exe /F",
 9 |     "DEL /A /Q \"%localappdata%\\IconCache.db\"",
10 |     "DEL /A /F /Q \"%localappdata%\\Microsoft\\Windows\\Explorer\\iconcache*\"",
11 |     "Start explorer.exe"
12 |   ],
13 |    "PlugUndo": [
14 | 	 "powershell -Command \"Write-Output 'There is no undo operation for clearing the icon cache.'\""
15 | 	]
16 | }
17 | 


--------------------------------------------------------------------------------
/plugins/Create Restore Point.ps1:
--------------------------------------------------------------------------------
 1 | # Run as Admin
 2 | if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
 3 | {
 4 |     Write-Warning "You need to run this script as an Administrator!"
 5 |     exit
 6 | }
 7 | 
 8 | # Load Windows Forms assembly for MessageBox
 9 | Add-Type -AssemblyName System.Windows.Forms
10 | 
11 | # Define the restore point description and type
12 | $description = "Bloatynosy NueEx Restore Point"
13 | $restorePointType = 12  # MODIFY_SETTINGS = 12
14 | 
15 | # Function to create restore point with progress reporting
16 | function Create-RestorePoint {
17 |     Write-Host "Starting to create restore point..." -ForegroundColor Yellow
18 |     
19 |     # Simulate progress
20 |     for ($i = 0; $i -le 100; $i += 10) {
21 |         Write-Progress -Activity "Creating Restore Point" -Status "$i% Complete" -PercentComplete $i
22 |         Start-Sleep -Milliseconds 300  # Simulate some work being done
23 |     }
24 | 
25 |     # WMI query to create the restore point
26 |     $restorePoint = Get-WmiObject -List Win32_SystemRestore | ForEach-Object {
27 |         $_.CreateRestorePoint($description, $restorePointType, 100)
28 |     }
29 | 
30 |     Write-Host "Restore point created successfully." -ForegroundColor Green
31 |     
32 |     # Show completion message
33 |     [System.Windows.Forms.MessageBox]::Show("Restore point has been created successfully!", "Completion", [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Information)
34 | }
35 | 
36 | # Execute the restore point creation
37 | Create-RestorePoint
38 | 


--------------------------------------------------------------------------------
/plugins/File Extensions Visibility.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "PlugID": "Hide Hidden File Extensions",
 3 |   "PlugInfo": "This feature shows or hides hidden file extensions in Windows Explorer.",
 4 |   "PlugCategory": "Tweaks (Plugins)",
 5 |   "PlugCheck": [
 6 |     "reg query HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced /v HideFileExt"
 7 |   ],
 8 |   "PlugDo": [
 9 |     "reg add HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced /v HideFileExt /t REG_DWORD /d 1 /f",
10 |     "reg add HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced /v ShowSuperHidden /t REG_DWORD /d 0 /f",
11 |     "taskkill /f /im explorer.exe",
12 |     "start explorer.exe"
13 |   ],
14 |   "PlugUndo": [
15 |     "reg add HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced /v HideFileExt /t REG_DWORD /d 0 /f",
16 |     "reg add HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced /v ShowSuperHidden /t REG_DWORD /d 1 /f",
17 |     "taskkill /f /im explorer.exe",
18 |     "start explorer.exe"
19 |   ]
20 | }
21 | 


--------------------------------------------------------------------------------
/plugins/Force Windows Update to Windows 11 24H2.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "PlugID": "Force Windows Update to Windows 11 24H2 (HW-Ready Systems Only)",
 3 |   "PlugInfo": "1. This script unlocks the direct path to Windows 11 24H2 via Windows Update—no Installation Assistant or Media Creation Tool needed!\n2. Tailored for systems meeting official hardware requirements.\n3. After running, a restart will be required. Then, simply head to Windows Update and let the magic happen.",
 4 |   "PlugCategory": "Scripts (optional)",
 5 |   "PlugCheck": [
 6 |     "reg query \"HKLM\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\" /v ProductVersion"
 7 |   ],
 8 |   "PlugDo": [
 9 |     "reg add \"HKLM\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\" /f",
10 |     "reg add \"HKLM\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\" /v ProductVersion /t REG_SZ /d \"Windows 11\" /f",
11 |     "reg add \"HKLM\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\" /v TargetReleaseVersionInfo /t REG_SZ /d \"24H2\" /f",
12 |     "reg add \"HKLM\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\" /v TargetReleaseVersion /t REG_DWORD /d 1 /f",
13 |     "powershell -command \"Add-Type -AssemblyName PresentationFramework; [System.Windows.MessageBox]::Show('Registry updated for Windows 11 24H2! Restart your PC, then head to Windows Update to grab your upgrade.', 'Restart Needed', 'OK', 'Information')\"",
14 |     "shutdown /r /t 10"
15 |   ],
16 |   "PlugUndo": [
17 |     "reg delete \"HKLM\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\" /v ProductVersion /f",
18 |     "reg delete \"HKLM\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\" /v TargetReleaseVersionInfo /f",
19 |     "reg delete \"HKLM\\SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\" /v TargetReleaseVersion /f"
20 |   ]
21 | }
22 | 


--------------------------------------------------------------------------------
/plugins/Inplace Upgrade to 24H2 via Registry.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "PlugID": "Inplace Upgrade to 24H2 via Registry",
 3 |   "PlugInfo": "1. Apply script\n2. Download Windows 11 version 24H2 ISO (via Microsoft site or Fido script) and mount the image.\n3. Click setup.exe and follow the on-screen instructions. \n\nSource: https://github.com/pbatard/rufus/issues/2568#issuecomment-2387934171\nOfficial Documentation: https://support.microsoft.com/en-us/windows/ways-to-install-windows-11-e0edbbfb-cfc5-4011-868b-2ce77ac7c70e",
 4 |   "PlugCategory": "Scripts (optional)",
 5 |   "PlugCheck": [
 6 |     "reg query \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\HwReqChk\" /v HwReqChkVars"
 7 |   ],
 8 |   "PlugDo": [
 9 |     "reg add \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\HwReqChk\" /f",
10 |     "reg add \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\HwReqChk\" /v HwReqChkVars /t REG_MULTI_SZ /d \"SQ_SecureBootCapable=TRUE\\0SQ_SecureBootEnabled=TRUE\\0SQ_TpmVersion=2\\0SQ_RamMB=8192\" /f",
11 |     "reg delete \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\CompatMarkers\" /f",
12 |     "reg delete \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Shared\" /f",
13 |     "reg delete \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\TargetVersionUpgradeExperienceIndicators\" /f",
14 |     "reg add \"HKLM\\SYSTEM\\Setup\\MoSetup\" /f /v AllowUpgradesWithUnsupportedTPMOrCPU /t REG_DWORD /d 1"
15 |   ],
16 |   "PlugUndo": [
17 |     "reg delete \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\HwReqChk\" /f",
18 |     "reg delete \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\CompatMarkers\" /f",
19 |     "reg delete \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Shared\" /f",
20 |     "reg delete \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\TargetVersionUpgradeExperienceIndicators\" /f",
21 |     "reg delete \"HKLM\\SYSTEM\\Setup\\MoSetup\" /f /v AllowUpgradesWithUnsupportedTPMOrCPU"
22 |   ]
23 | }
24 | 


--------------------------------------------------------------------------------
/plugins/Newtonsoft.Json.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/builtbybel/Bloatynosy/48d27896be3557e1878094b86362514b8ab6cbca/plugins/Newtonsoft.Json.dll


--------------------------------------------------------------------------------
/plugins/Remove Windows AI.ps1:
--------------------------------------------------------------------------------
1 | iwr https://raw.githubusercontent.com/zoicware/RemoveWindowsAI/main/RemoveAi.ps1 | iex


--------------------------------------------------------------------------------
/plugins/Restart Explorer.ps1:
--------------------------------------------------------------------------------
 1 | # Function to show a message box
 2 | function Show-MessageBox {
 3 |     param (
 4 |         [string]$message,
 5 |         [string]$title = "Information"
 6 |     )
 7 |     Add-Type -AssemblyName PresentationFramework
 8 |     [System.Windows.MessageBox]::Show($message, $title)
 9 | }
10 | 
11 | # Stop Windows Explorer
12 | Stop-Process -Name explorer -Force
13 | 
14 | # Start Windows Explorer
15 | Start-Process explorer
16 | 
17 | # Show message box
18 | Show-MessageBox -message "Windows Explorer has been restarted successfully." -title "Bloatynosy NueEx"
19 | 


--------------------------------------------------------------------------------
/plugins/Restore all built-in apps.ps1:
--------------------------------------------------------------------------------
 1 | # Get all installed Windows apps for all users
 2 | $allApps = Get-AppxPackage -AllUsers
 3 | 
 4 | # Counter for tracking progress
 5 | $totalApps = $allApps.Count
 6 | $currentAppIndex = 1
 7 | $reinstalledCount = 0
 8 | 
 9 | # Loop through each app and reinstall
10 | foreach ($app in $allApps) {
11 |     # Display current status
12 |     Write-Host "[$currentAppIndex / $totalApps] Reinstalling $($app.Name)..." -ForegroundColor Yellow
13 | 
14 |     # Try to reinstall the app
15 |     try {
16 |         Add-AppxPackage -Register "$($app.InstallLocation)\appxmanifest.xml" -DisableDevelopmentMode -ErrorAction Stop
17 |         Write-Host "[$currentAppIndex / $totalApps] $($app.Name) reinstalled successfully." -ForegroundColor Green
18 |         $reinstalledCount++
19 |     } catch {
20 |         Write-Host "[$currentAppIndex / $totalApps] Error occurred while reinstalling $($app.Name): $_" -ForegroundColor Red
21 |     }
22 | 
23 |     # Increment the counter
24 |     $currentAppIndex++
25 | }
26 | 
27 | # Display final status
28 | if ($reinstalledCount -eq $totalApps) {
29 |     Write-Host "All apps reinstalled successfully." -ForegroundColor Green
30 |     Write-Host "Flyby11 has reinstalled everything possible." -ForegroundColor Cyan
31 | }
32 | 


--------------------------------------------------------------------------------
/plugins/Snap Assist Flyout.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "PlugID": "Enable Snap Assist Flyout",
 3 |   "PlugInfo": "This will enable Snap Asssist Flyout in Windows 11",
 4 |   "PlugCategory": "Tweaks (Plugins)",
 5 |   "PlugCheck": [
 6 |     "reg query HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced /v EnableSnapAssistFlyout"
 7 |   ],
 8 |   "PlugDo": [
 9 |     "reg add HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced /v EnableSnapAssistFlyout /t REG_DWORD /d 1 /f"
10 |   ],
11 |   "PlugUndo": [
12 |     "reg add HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced /v EnableSnapAssistFlyout /t REG_DWORD /d 0 /f"
13 |   ]
14 | }


--------------------------------------------------------------------------------
/plugins/Uninstall OneDrive.ps1:
--------------------------------------------------------------------------------
 1 | Import-Module -DisableNameChecking $PSScriptRoot\..\lib\force-mkdir.psm1
 2 | Import-Module -DisableNameChecking $PSScriptRoot\..\lib\take-own.psm1
 3 | 
 4 | Write-Output "Kill OneDrive process"
 5 | taskkill.exe /F /IM "OneDrive.exe"
 6 | taskkill.exe /F /IM "explorer.exe"
 7 | 
 8 | Write-Output "Remove OneDrive"
 9 | if (Test-Path "$env:systemroot\System32\OneDriveSetup.exe") {
10 |     & "$env:systemroot\System32\OneDriveSetup.exe" /uninstall
11 | }
12 | if (Test-Path "$env:systemroot\SysWOW64\OneDriveSetup.exe") {
13 |     & "$env:systemroot\SysWOW64\OneDriveSetup.exe" /uninstall
14 | }
15 | 
16 | Write-Output "Removing OneDrive leftovers"
17 | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "$env:localappdata\Microsoft\OneDrive"
18 | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "$env:programdata\Microsoft OneDrive"
19 | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "$env:systemdrive\OneDriveTemp"
20 | # check if directory is empty before removing:
21 | If ((Get-ChildItem "$env:userprofile\OneDrive" -Recurse | Measure-Object).Count -eq 0) {
22 |     Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "$env:userprofile\OneDrive"
23 | }
24 | 
25 | Write-Output "Disable OneDrive via Group Policies"
26 | force-mkdir "HKLM:\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows\OneDrive"
27 | Set-ItemProperty "HKLM:\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows\OneDrive" "DisableFileSyncNGSC" 1
28 | 
29 | Write-Output "Remove Onedrive from explorer sidebar"
30 | New-PSDrive -PSProvider "Registry" -Root "HKEY_CLASSES_ROOT" -Name "HKCR"
31 | mkdir -Force "HKCR:\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}"
32 | Set-ItemProperty "HKCR:\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}" "System.IsPinnedToNameSpaceTree" 0
33 | mkdir -Force "HKCR:\Wow6432Node\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}"
34 | Set-ItemProperty "HKCR:\Wow6432Node\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}" "System.IsPinnedToNameSpaceTree" 0
35 | Remove-PSDrive "HKCR"
36 | 
37 | # Thank you Matthew Israelsson
38 | Write-Output "Removing run hook for new users"
39 | reg load "hku\Default" "C:\Users\Default\NTUSER.DAT"
40 | reg delete "HKEY_USERS\Default\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "OneDriveSetup" /f
41 | reg unload "hku\Default"
42 | 
43 | Write-Output "Removing startmenu entry"
44 | Remove-Item -Force -ErrorAction SilentlyContinue "$env:userprofile\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\OneDrive.lnk"
45 | 
46 | Write-Output "Removing scheduled task"
47 | Get-ScheduledTask -TaskPath '\' -TaskName 'OneDrive*' -ea SilentlyContinue | Unregister-ScheduledTask -Confirm:$false
48 | 
49 | Write-Output "Restarting explorer"
50 | Start-Process "explorer.exe"
51 | 
52 | Write-Output "Waiting for explorer to complete loading"
53 | Start-Sleep 10
54 | 
55 | Write-Output "Removing additional OneDrive leftovers"
56 | foreach ($item in (Get-ChildItem "$env:WinDir\WinSxS\*onedrive*")) {
57 |     Takeown-Folder $item.FullName
58 |     Remove-Item -Recurse -Force $item.FullName
59 | }
60 | Write-Output "Bloatynosy NueEx can confirm the uninstallation of the OneDrive app."
61 | 


--------------------------------------------------------------------------------
/plugins/Use light theme.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "PlugID": "Use light theme",
 3 |   "PlugInfo": "Check for light mode, uncheck for dark mode",
 4 |   "PlugCategory": "Tweaks (Plugins)",
 5 |   "PlugCheck": [
 6 |     "reg query HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize /v AppsUseLightTheme",
 7 | 	 "reg query HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize /v SystemUsesLightTheme"
 8 |   ],
 9 |   "PlugDo": [
10 |     "reg add HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize /v AppsUseLightTheme /t REG_DWORD /d 1 /f",
11 | 	"reg add HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize /v SystemUsesLightTheme /t REG_DWORD /d 1 /f"
12 |   ],
13 |   "PlugUndo": [
14 |     "reg add HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize /v AppsUseLightTheme /t REG_DWORD /d 0 /f",
15 | 	"reg add HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize /v SystemUsesLightTheme /t REG_DWORD /d 0 /f"
16 |   ]
17 | }


--------------------------------------------------------------------------------
/plugins/User Account Control.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "PlugID": "Enable User Account Control (UAC)",
 3 |   "PlugInfo": "Check to enable User Account Control (UAC), uncheck to disable UAC. Please only disable this setting if you are absolutely sure you have complete control over your system!! Otherwise, it could open a major security hole in your system.",
 4 |   "PlugCategory": "Security (Plugins)",
 5 |   "PlugCheck": [
 6 |     "reg query HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System /v EnableLUA"
 7 |   ],
 8 |   "PlugDo": [
 9 |     "powershell -Command \"Add-Type -AssemblyName PresentationCore,PresentationFramework; $result = [System.Windows.MessageBox]::Show('Your system will restart in 30 seconds to apply changes. Do you want to proceed?', 'Warning', 'YesNo', 'Warning'); if ($result -eq 'Yes') { Start-Sleep -Seconds 30; reg add HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System /v EnableLUA /t REG_DWORD /d 1 /f; shutdown /r /t 0 }\""
10 |   ],
11 |   "PlugUndo": [
12 |     "powershell -Command \"Add-Type -AssemblyName PresentationCore,PresentationFramework; $result = [System.Windows.MessageBox]::Show('Your system will restart in 30 seconds to apply changes. Do you want to proceed?', 'Warning', 'YesNo', 'Warning'); if ($result -eq 'Yes') { Start-Sleep -Seconds 30; reg add HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System /v EnableLUA /t REG_DWORD /d 0 /f; shutdown /r /t 0 }\""
13 |   ]
14 | }
15 | 


--------------------------------------------------------------------------------
/plugins/Windows 11 24H2 Inplace Upgrade (Server Setup).ps1:
--------------------------------------------------------------------------------
 1 | # Inplace Upgrade via Server Setup. (Current release: Windows 11 2024 Update l Version 24H2)
 2 | # This method leverages the Windows Server variant of the Windows setup, which skips most hardware compatibility checks. It allows Windows 11 to be installed on unsupported PCs, bypassing the usual system requirements. Importantly, while the setup runs in server mode, it installs the standard Windows 11 (not the server version).
 3 | 
 4 | 
 5 | # Function to open a file selection dialog and return the selected file path
 6 | function Select-ISOFile {
 7 |     Add-Type -AssemblyName System.Windows.Forms
 8 |     $fileDialog = New-Object System.Windows.Forms.OpenFileDialog
 9 |     $fileDialog.Filter = "ISO Files (*.iso)|*.iso"
10 |     $fileDialog.Title = "Select an ISO File"
11 |     $fileDialog.InitialDirectory = [Environment]::GetFolderPath("Desktop")  # Start at Desktop
12 | 
13 |     if ($fileDialog.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK) {
14 |         return $fileDialog.FileName
15 |     } else {
16 |         return $null
17 |     }
18 | }
19 | 
20 | # Prompt user to select an ISO file
21 | $isoFilePath = Select-ISOFile
22 | 
23 | if (-not $isoFilePath -or -not (Test-Path $isoFilePath)) {
24 |     Write-Host "No valid ISO file selected. Exiting." -ForegroundColor Red
25 |     exit
26 | }
27 | 
28 | Write-Host "Selected ISO file: $isoFilePath" -ForegroundColor Green
29 | Write-Host "Mounting the ISO..." -ForegroundColor Blue
30 | 
31 | # Mount the ISO file
32 | try {
33 |     Mount-DiskImage -ImagePath $isoFilePath
34 |     Write-Host "ISO mounted successfully." -ForegroundColor Green
35 | } catch {
36 |     Write-Host "Failed to mount the ISO. Error: $_" -ForegroundColor Red
37 |     exit
38 | }
39 | 
40 | # Retrieve the drive letter of the mounted ISO
41 | $mountedVolume = Get-Volume | Where-Object { $_.DriveType -eq 'CD-ROM' -and $_.FileSystemLabel -ne $null } | Select-Object -First 1
42 | 
43 | if (-not $mountedVolume) {
44 |     Write-Host "Failed to find mounted drive. Exiting." -ForegroundColor Red
45 |     exit
46 | }
47 | 
48 | $driveLetter = $mountedVolume.DriveLetter + ":"
49 | Write-Host "Mounted drive letter: $driveLetter" -ForegroundColor Green
50 | 
51 | # Check for the Sources folder
52 | $sourcesFolderPath = Join-Path -Path $driveLetter -ChildPath "sources"
53 | if (-not (Test-Path $sourcesFolderPath)) {
54 |     Write-Host "Sources folder not found at $sourcesFolderPath. Exiting." -ForegroundColor Red
55 |     exit
56 | }
57 | 
58 | Write-Host "Sources folder found at $sourcesFolderPath" -ForegroundColor Green
59 | 
60 | # Create the path to the setup file
61 | $setupFile = Join-Path -Path $sourcesFolderPath -ChildPath "setupprep.exe"
62 | 
63 | # Ensure $setupFile is a valid string
64 | if (-not (Test-Path $setupFile)) {
65 |     Write-Host "setupprep.exe not found in Sources folder. Exiting." -ForegroundColor Red
66 |     exit
67 | }
68 | 
69 | Write-Host "Launching Windows setup. Path: $setupFile" -ForegroundColor Blue
70 | 
71 | # Launch the setup process
72 | try {
73 |     Start-Process -FilePath $setupFile -ArgumentList "/product server" -NoNewWindow
74 |     Write-Host "Windows setup launched successfully. Follow the instructions on the screen." -ForegroundColor Green
75 | } catch {
76 |     Write-Host "Error launching Windows setup: $_" -ForegroundColor Red
77 | }
78 | 


--------------------------------------------------------------------------------
/plugins/Windows Old Remover.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "PlugID": "Windows Old Remover",
 3 |   "PlugInfo": "The Windows Old Remover plugin allows users to easily remove the 'Windows.old' folder, which contains files from a previous Windows installation. After upgrading to a new version of Windows, the 'Windows.old' folder may occupy significant disk space. This plugin utilizes the DISM command to safely delete this folder, freeing up valuable storage on your system. Please note that once this folder is deleted, you will no longer be able to revert to the previous Windows version through the Recovery options.\n\n**Error Handling**: If you encounter 'Error 1168' during the removal process, it means the 'Windows.old' folder has already been deleted or is not available for rollback. Ensure you have backups before proceeding!",
 4 |   "PlugCheck": [],
 5 |   "PlugCategory": "System (Plugins)",
 6 |   "PlugDo": [
 7 |     "cmd.exe /c DISM /Online /Remove-OSUninstall"
 8 |   ],
 9 |   "PlugUndo": [
10 |     "powershell -Command \"Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.MessageBox]::Show('No undo is available for this deletion. To restore files, use a backup solution.', 'Info', [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Warning)\""
11 |   ]
12 | }
13 | 


--------------------------------------------------------------------------------
/plugins/Windows Rollback Timer.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "PlugID": "Windows Rollback Timer",
 3 |   "PlugInfo": "This plugin checks and sets the uninstall window for reverting to a previous Windows version after an upgrade. The time frame can be configured up to 60 days. After a Windows upgrade (e.g., via Windows Update to version 1803), a copy of the previous Windows version is stored in the 'Windows.old' folder. This allows users to return to the prior version through the 'Recovery' option under 'Update & Security' in Windows Settings. By default, this rollback option is available for only 10 days, provided the 'Windows.old' folder hasn’t been deleted. However, this time frame can be extended up to 60 days using this plugin. \n\n**Error Handling**: If 'Error 1168' appears when attempting to set the rollback period, this indicates that the 'Windows.old' folder has been deleted, making a rollback impossible.",
 4 |   "PlugCheck": [],
 5 |   "PlugCategory": "System (Plugins)",
 6 |   "PlugDo": [
 7 |    "cmd.exe /c DISM /Online /Get-OSUninstallWindow",
 8 |    "cmd.exe /c DISM /Online /Set-OSUninstallWindow /Value:60"
 9 |   ],
10 |   "PlugUndo": [
11 |    "powershell -Command \"Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.MessageBox]::Show('No undo is available for this rollback time setting. To change it, please use DISM with a new value.', 'Info', [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Information)\""
12 |   ]
13 | }
14 | 


--------------------------------------------------------------------------------
/plugins/plugins_manifest.json:
--------------------------------------------------------------------------------
 1 | {
 2 |     "ChrisTitusApp.ps1": "Chris Titus Tech's Windows Utility - Install Programs, Tweaks, Fixes, and Updates. Dev: https://github.com/ChrisTitusTech/winutil",
 3 |     "Clear Icon Cache.json": "Clears the Windows icon cache to fix display issues or refresh icons.",
 4 |     "Create Restore Point.ps1": "Creates a system restore point to safeguard your current system state.",
 5 |     "File Extensions Visibility.json": "Toggles the visibility of file extensions in Windows Explorer.",
 6 |     "Remove default apps.ps1": "Uninstalls default Windows applications to declutter your system.",
 7 |     "Remove Windows AI.ps1": "Removes Windows AI features, such as Copilot, to optimize performance. Dev: https://raw.githubusercontent.com/zoicware/RemoveWindowsAI/main/RemoveAi.ps1 ",
 8 |     "Restart Explorer.ps1": "Restarts the Windows Explorer process to refresh the desktop and taskbar.",
 9 |     "Restore all built-in apps.ps1": "Reinstalls all default Windows apps that have been removed.",
10 |     "Snap Assist Flyout.json": "Enables or disables the Snap Assist flyout feature for window management.",
11 |     "Uninstall OneDrive.ps1": "Completely uninstalls OneDrive from your system.",
12 |     "Use light theme.json": "Switches the Windows interface to the light theme.",
13 |     "User Account Control.json": "Adjusts User Account Control (UAC) settings for security and convenience.",
14 |     "Windows Rollback Timer.json": "This plugin adjusts the time window available to revert to a previous version of Windows after an upgrade.",
15 |     "Windows Old Remover.json": "This plugin will remove the ability to roll back a PC to a previous installation of Windows.",
16 |     "Force Windows Update to Windows 11 24H2.json": "Forces Windows Update to initiate the upgrade to Windows 11 version 24H2.",
17 |     "Inplace Upgrade to 24H2 via Registry.json": "Sets registry keys to enable an in-place upgrade to Windows 11 version 24H2.",
18 |     "Windows 11 24H2 Inplace Upgrade (Server Setup).ps1": "Upgrades to Windows 11 version 24H2 while bypassing hardware compatibility checks. This method leverages the Windows Server variant of the Windows setup, which skips most hardware compatibility checks. It allows Windows 11 to be installed on unsupported PCs, bypassing the usual system requirements. Importantly, while the setup runs in server mode, it installs the standard Windows 11 (not the server version).",
19 |     "AppMatrix.json": "Intelligent Bloatware Filters, curated with the power of AI. Compatible starting with Bloatynosy version 1.0.6.",
20 |     "AppInstaller.json": "Install Chrome, Firefox, 7zip, VLC with winget",
21 |     "Block New Outlook.json": "This plugin removes the pre-installed Outlook app on Windows 11 builds after 23H2 and blocks future installations."
22 | }
23 | 


--------------------------------------------------------------------------------
/src/Bloatynosy/App.config:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <configuration>
 3 |     <startup> 
 4 |         <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/>
 5 |     </startup>
 6 |   <runtime>
 7 |     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
 8 |       <dependentAssembly>
 9 |         <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
10 |         <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>
11 |       </dependentAssembly>
12 |     </assemblyBinding>
13 |   </runtime>
14 | </configuration>
15 | 


--------------------------------------------------------------------------------
/src/Bloatynosy/AppIcon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/builtbybel/Bloatynosy/48d27896be3557e1878094b86362514b8ab6cbca/src/Bloatynosy/AppIcon.ico


--------------------------------------------------------------------------------
/src/Bloatynosy/AppIconPNG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/builtbybel/Bloatynosy/48d27896be3557e1878094b86362514b8ab6cbca/src/Bloatynosy/AppIconPNG.png


--------------------------------------------------------------------------------
/src/Bloatynosy/Experience/AI/CopilotTaskbar.cs:
--------------------------------------------------------------------------------
 1 | using BloatynosyNue;
 2 | using Microsoft.Win32;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Settings.AI
 7 | {
 8 |     internal class CopilotTaskbar : FeatureBase
 9 |     {
10 |         public CopilotTaskbar(Logger logger) : base(logger)
11 |         {
12 |         }
13 | 
14 | 
15 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\WindowsCopilot";
16 |         private const string valueName = "TurnOffWindowsCopilot";
17 |         private const int desiredValue = 1;
18 | 
19 |         public override string GetRegistryKey()
20 |         {
21 |             return 
quot;{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
22 |         }
23 | 
24 |         public override string ID()
25 |         {
26 |             return  BloatynosyNue.Locales.Strings._aiCopilotTaskbar; 
27 |         }
28 | 
29 |         public override string Info()
30 |         {
31 |             return BloatynosyNue.Locales.Strings._aiCopilotTaskbar_desc;
32 |         }
33 | 
34 |         public override bool CheckFeature()
35 |         {
36 |             return Utils.IntEquals(keyName, valueName, 1);
37 |         }
38 | 
39 |         public override bool DoFeature()
40 |         {
41 |             try
42 |             {
43 |                 Registry.SetValue(keyName, valueName, desiredValue, RegistryValueKind.DWord);
44 |                 return true;
45 |             }
46 |             catch (Exception ex)
47 |             {
48 |                 logger.Log("Code red in " + ex.Message, Color.Red);
49 |             }
50 | 
51 |             return false;
52 |         }
53 | 
54 |         public override bool UndoFeature()
55 |         {
56 |             try
57 |             {
58 |                 Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord);
59 |                 return true;
60 |             }
61 |             catch (Exception ex)
62 |             {
63 |                 logger.Log("Code red in " + ex.Message, Color.Red);
64 |             }
65 | 
66 |             return false;
67 |         }
68 |     }
69 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Experience/AI/RecallMachine.cs:
--------------------------------------------------------------------------------
 1 | using BloatynosyNue;
 2 | using Microsoft.Win32;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Settings.AI
 7 | {
 8 |     internal class RecallMachine : FeatureBase
 9 |     {
10 |         public RecallMachine(Logger logger) : base(logger)
11 |         {
12 |         }
13 | 
14 | 
15 |         private const string keyName = @"HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsAI";
16 |         private const string valueName = "DisableAIDataAnalysis";
17 |         private const int desiredValue = 0;
18 | 
19 |         public override string GetRegistryKey()
20 |         {
21 |             return 
quot;{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
22 |         }
23 | 
24 |         public override string ID()
25 |         {
26 |             return BloatynosyNue.Locales.Strings._aiRecallMachine;
27 |         }
28 | 
29 |         public override string Info()
30 |         {
31 |             return BloatynosyNue.Locales.Strings._aiRecallMachine_desc;
32 |         }
33 | 
34 |         public override bool CheckFeature()
35 |         {
36 |             // Check if reg key exists
37 |             object value = Registry.GetValue(keyName, valueName, null);
38 |             if (value == null)
39 |             {
40 |                 // Key does not exist, turn off feature
41 |                 return false;
42 |             }
43 | 
44 |             // Key exists, check if value is desired value
45 |             return (int)value != desiredValue;
46 |         }
47 | 
48 |         public override bool DoFeature()
49 |         {
50 |             try
51 |             {
52 |                 Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord);
53 |                 logger.Log("You've even disabled system-wide Snapshots for all users now.", Color.Green);
54 |                 return true;
55 |             }
56 |             catch (Exception ex)
57 |             {
58 |                 logger.Log("Code red in " + ex.Message, Color.Red);
59 |             }
60 | 
61 |             return false;
62 |         }
63 | 
64 |         public override bool UndoFeature()
65 |         {
66 |             try
67 |             {
68 |                 Registry.SetValue(keyName, valueName, desiredValue, Microsoft.Win32.RegistryValueKind.DWord);
69 |                 return true;
70 |             }
71 |             catch (Exception ex)
72 |             {
73 |                 logger.Log("Code red in " + ex.Message, Color.Red);
74 |             }
75 | 
76 |             return false;
77 |         }
78 |     }
79 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Experience/AI/RecallUser.cs:
--------------------------------------------------------------------------------
 1 | using BloatynosyNue;
 2 | using Microsoft.Win32;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Settings.AI
 7 | {
 8 |     internal class RecallUser : FeatureBase
 9 |     {
10 |         public RecallUser(Logger logger) : base(logger)
11 |         {
12 |         }
13 | 
14 | 
15 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\WindowsAI";
16 |         private const string valueName = "DisableAIDataAnalysis";
17 |         private const int desiredValue = 0;
18 | 
19 |         public override string GetRegistryKey()
20 |         {
21 |             return 
quot;{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
22 |         }
23 | 
24 |         public override string ID()
25 |         {
26 |             return BloatynosyNue.Locales.Strings._aiRecallUser;
27 |         }
28 | 
29 |         public override string Info()
30 |         {
31 |             return BloatynosyNue.Locales.Strings._aiRecallUser_desc;
32 |         }
33 | 
34 |         public override bool CheckFeature()
35 |         {
36 |             // Check if reg key exists
37 |             object value = Registry.GetValue(keyName, valueName, null);
38 |             if (value == null)
39 |             {
40 |                 // Key does not exist, turn off feature
41 |                 return false;
42 |             }
43 | 
44 |             // Key exists, check if value is desired value
45 |             return (int)value != desiredValue;
46 |         }
47 | 
48 |         public override bool DoFeature()
49 |         {
50 |             try
51 |             {
52 |                 Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord);
53 |                 logger.Log("You've got snapshots disabled.", Color.Green);
54 |                 return true;
55 |             }
56 |             catch (Exception ex)
57 |             {
58 |                 logger.Log("Code red in " + ex.Message, Color.Red);
59 |             }
60 | 
61 |             return false;
62 |         }
63 | 
64 |         public override bool UndoFeature()
65 |         {
66 |             try
67 |             {
68 |                 Registry.SetValue(keyName, valueName, desiredValue, Microsoft.Win32.RegistryValueKind.DWord);
69 |                 return true;
70 |             }
71 |             catch (Exception ex)
72 |             {
73 |                 logger.Log("Code red in " + ex.Message, Color.Red);
74 |             }
75 | 
76 |             return false;
77 |         }
78 |     }
79 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Experience/Ads/FileExplorerAds.cs:
--------------------------------------------------------------------------------
 1 | using BloatynosyNue;
 2 | using Microsoft.Win32;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Settings.Ads
 7 | {
 8 |     internal class FileExplorerAds : FeatureBase
 9 |     {
10 |         public FileExplorerAds(Logger logger) : base(logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced";
15 |         private const string valueName = "ShowSyncProviderNotifications";
16 |         private const int desiredValue = 0;
17 | 
18 |         public override string GetRegistryKey()
19 |         {
20 |             return 
quot;{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
21 |         }
22 | 
23 |         public override string ID()
24 |         {
25 |             return BloatynosyNue.Locales.Strings._adsFileExplorerAds;
26 |         }
27 | 
28 |         public override string Info()
29 |         {
30 |             return BloatynosyNue.Locales.Strings._adsFileExplorerAds_desc;
31 |         }
32 | 
33 |         public override bool CheckFeature()
34 |         {
35 |             return (Utils.IntEquals(keyName, valueName, desiredValue));
36 |         }
37 | 
38 |         public override bool DoFeature()
39 |         {
40 |             try
41 |             {
42 |                 Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord);
43 |                 return true;
44 |             }
45 |             catch (Exception ex)
46 |             {
47 |                 logger.Log("Code red in " + ex.Message, Color.Red);
48 |             }
49 | 
50 |             return false;
51 |         }
52 | 
53 |         public override bool UndoFeature()
54 |         {
55 |             try
56 |             {
57 |                 Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord);
58 |                 return true;
59 |             }
60 |             catch (Exception ex)
61 |             {
62 |                 logger.Log("Code red in " + ex.Message, Color.Red);
63 |             }
64 | 
65 |             return false;
66 |         }
67 |     }
68 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Experience/Ads/FinishSetupAds.cs:
--------------------------------------------------------------------------------
 1 | using BloatynosyNue;
 2 | using Microsoft.Win32;
 3 | using System;
 4 | using System.Drawing;
 5 | using System.Runtime.Remoting.Messaging;
 6 | 
 7 | namespace Settings.Ads
 8 | {
 9 |     public class FinishSetupAds : FeatureBase
10 |     {
11 |         public FinishSetupAds(Logger logger) : base(logger)
12 |         {
13 |         }
14 | 
15 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\UserProfileEngagement";
16 |         private const string valueName = "ScoobeSystemSettingEnabled";
17 |         private const int desiredValue = 0;
18 | 
19 |         public override string ID()
20 |         { return BloatynosyNue.Locales.Strings._adsFinishSetupAds; }
21 | 
22 |         public override string Info()
23 |         { return BloatynosyNue.Locales.Strings._adsFinishSetupAds_desc; }
24 | 
25 |         public override string GetRegistryKey()
26 |         {
27 |             return 
quot;{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
28 |         }
29 | 
30 |         public override bool CheckFeature()
31 |         {
32 |             return Utils.IntEquals(keyName, valueName, 0);
33 |         }
34 | 
35 |         public override bool DoFeature()
36 |         {
37 |             try
38 |             {
39 |                 Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord);
40 | 
41 |                 return true;
42 |             }
43 |             catch (Exception ex)
44 |             {
45 |                 logger.Log("Code red in " + ex.Message, Color.Red);
46 |             }
47 | 
48 |             return false;
49 |         }
50 | 
51 |         public override bool UndoFeature()
52 |         {
53 |             try
54 |             {
55 |                 Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord);
56 | 
57 |                 return true;
58 |             }
59 |             catch (Exception ex)
60 |             {
61 |                 logger.Log("Code red in " + ex.Message, Color.Red);
62 |             }
63 | 
64 |             return false;
65 |         }
66 |     }
67 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Experience/Ads/LockScreenAds.cs:
--------------------------------------------------------------------------------
 1 | using BloatynosyNue;
 2 | using Microsoft.Win32;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Settings.Ads
 7 | {
 8 |     internal class LockScreenAds : FeatureBase
 9 |     {
10 |         public LockScreenAds(Logger logger) : base(logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager";
15 |         private const string valueName = "RotatingLockScreenOverlayEnabled";
16 |         private const string valueName2 = "SubscribedContent-338387Enabled";
17 |         private const int desiredValue = 0;
18 | 
19 |         public override string ID() { return BloatynosyNue.Locales.Strings._adsLockScreenAds; }
20 | 
21 |         public override string Info() {  return BloatynosyNue.Locales.Strings._adsLockScreenAds_desc; }
22 | 
23 |         public override string GetRegistryKey()
24 |         {
25 |             return 
quot;{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
26 |         }
27 | 
28 |         public override bool CheckFeature()
29 |         {
30 |             return (Utils.IntEquals(keyName, valueName, desiredValue) &&
31 |                    Utils.IntEquals(keyName, valueName2, desiredValue)
32 |             );
33 |         }
34 | 
35 |         public override bool DoFeature()
36 |         {
37 |             try
38 |             {
39 |                 Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord);
40 |                 Registry.SetValue(keyName, valueName2, 0, Microsoft.Win32.RegistryValueKind.DWord);
41 | 
42 |                 return true;
43 |             }
44 |             catch (Exception ex)
45 |             {
46 |                 logger.Log("Code red in " + ex.Message, Color.Red);
47 |             }
48 | 
49 |             return false;
50 |         }
51 | 
52 |         public override bool UndoFeature()
53 |         {
54 |             try
55 |             {
56 |                 Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord);
57 |                 Registry.SetValue(keyName, valueName2, 1, Microsoft.Win32.RegistryValueKind.DWord);
58 | 
59 |                 return true;
60 |             }
61 |             catch (Exception ex)
62 |             {
63 |                 logger.Log("Code red in " + ex.Message, Color.Red);
64 |             }
65 | 
66 |             return false;
67 |         }
68 |     }
69 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Experience/Ads/PersonalizedAds.cs:
--------------------------------------------------------------------------------
 1 | using BloatynosyNue;
 2 | using Microsoft.Win32;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Settings.Ads
 7 | {
 8 |     public class PersonalizedAds : FeatureBase
 9 |     {
10 |         public PersonalizedAds(Logger logger) : base(logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\AdvertisingInfo";
15 |         private const string valueName = "Enabled";
16 |         private const int desiredValue = 0;
17 | 
18 |         public override string ID() { return BloatynosyNue.Locales.Strings._adsPersonalizedAds; }
19 | 
20 |         public override string Info() { return BloatynosyNue.Locales.Strings._adsPersonalizedAds_desc; }
21 | 
22 |         public override string GetRegistryKey()
23 |         {
24 |             return 
quot;{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
25 |         }
26 | 
27 |         public override bool CheckFeature()
28 |         {
29 |             return Utils.IntEquals(keyName, valueName, 0);
30 |         }
31 | 
32 |         public override bool DoFeature()
33 |         {
34 |             try
35 |             {
36 |                 Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord);
37 | 
38 |                 return true;
39 |             }
40 |             catch (Exception ex)
41 |             {
42 |                 logger.Log("Code red in " + ex.Message, Color.Red);
43 |             }
44 | 
45 |             return false;
46 |         }
47 | 
48 |         public override bool UndoFeature()
49 |         {
50 |             try
51 |             {
52 |                 Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord);
53 | 
54 |                 return true;
55 |             }
56 |             catch (Exception ex)
57 |             {
58 |                 logger.Log("Code red in " + ex.Message, Color.Red);
59 |             }
60 | 
61 |             return false;
62 |         }
63 |     }
64 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Experience/Ads/SettingsAds.cs:
--------------------------------------------------------------------------------
 1 | using BloatynosyNue;
 2 | using Microsoft.Win32;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Settings.Ads
 7 | {
 8 |     internal class SettingsAds : FeatureBase
 9 |     {
10 |         public SettingsAds(Logger logger) : base(logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager";
15 |         private const string valueName = "SubscribedContent-338393Enabled";
16 |         private const string valueName2 = "SubscribedContent-353694Enabled";
17 |         private const string valueName3 = "SubscribedContent-353696Enabled";
18 | 
19 |         private const int desiredValue = 0;
20 | 
21 |         public override string ID()  { return BloatynosyNue.Locales.Strings._adsSettingsAds; }
22 | 
23 |         public override string Info() { return BloatynosyNue.Locales.Strings._adsSettingsAds_desc; }
24 | 
25 |         public override string GetRegistryKey()
26 |         {
27 |             return 
quot;{keyName} | Value: {valueName} + {valueName2} + {valueName3} | Desired Value: {desiredValue}";
28 |         }
29 | 
30 |         public override bool CheckFeature()
31 |         {
32 |             return (Utils.IntEquals(keyName, valueName, desiredValue) &&
33 |                    Utils.IntEquals(keyName, valueName2, desiredValue) &&
34 |                    Utils.IntEquals(keyName, valueName3, desiredValue)
35 |             );
36 |         }
37 | 
38 |         public override bool DoFeature()
39 |         {
40 |             try
41 |             {
42 |                 Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord);
43 |                 Registry.SetValue(keyName, valueName2, 0, Microsoft.Win32.RegistryValueKind.DWord);
44 |                 Registry.SetValue(keyName, valueName3, 0, Microsoft.Win32.RegistryValueKind.DWord);
45 | 
46 |                 return true;
47 |             }
48 |             catch (Exception ex)
49 |             {
50 |                 logger.Log("Code red in " + ex.Message, Color.Red);
51 |             }
52 | 
53 |             return false;
54 |         }
55 | 
56 |         public override bool UndoFeature()
57 |         {
58 |             try
59 |             {
60 |                 Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord);
61 |                 Registry.SetValue(keyName, valueName2, 1, Microsoft.Win32.RegistryValueKind.DWord);
62 |                 Registry.SetValue(keyName, valueName3, 1, Microsoft.Win32.RegistryValueKind.DWord);
63 | 
64 |                 return true;
65 |             }
66 |             catch (Exception ex)
67 |             {
68 |                 logger.Log("Code red in " + ex.Message, Color.Red);
69 |             }
70 | 
71 |             return false;
72 |         }
73 |     }
74 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Experience/Ads/StartmenuAds.cs:
--------------------------------------------------------------------------------
 1 | using BloatynosyNue;
 2 | using Microsoft.Win32;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Settings.Ads
 7 | {
 8 |     internal class StartmenuAds : FeatureBase
 9 |     {
10 |         public StartmenuAds(Logger logger) : base(logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced";
15 |         private const string valueName = "Start_IrisRecommendations";
16 |         private const int desiredValue = 0;
17 | 
18 |         public override string GetRegistryKey()
19 |         {
20 |             return 
quot;{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
21 |         }
22 | 
23 |         public override string ID()
24 |         {
25 |             return BloatynosyNue.Locales.Strings._adsStartmenuAds;
26 |         }
27 | 
28 |         public override string Info()
29 |         {
30 |             return BloatynosyNue.Locales.Strings._adsStartmenuAds_desc;
31 |         }
32 | 
33 |         public override bool CheckFeature()
34 |         {
35 |             return (
36 |                    Utils.IntEquals(keyName, valueName, desiredValue)
37 |              );
38 |         }
39 | 
40 |         public override bool DoFeature()
41 |         {
42 |             try
43 |             {
44 |                 Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord);
45 |                 return true;
46 |             }
47 |             catch (Exception ex)
48 |             {
49 |                 logger.Log("Code red in " + ex.Message, Color.Red);
50 |             }
51 | 
52 |             return false;
53 |         }
54 | 
55 |         public override bool UndoFeature()
56 |         {
57 |             try
58 |             {
59 |                 Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord);
60 |                 return true;
61 |             }
62 |             catch (Exception ex)
63 |             {
64 |                 logger.Log("Code red in " + ex.Message, Color.Red);
65 |             }
66 | 
67 |             return false;
68 |         }
69 |     }
70 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Experience/Ads/TailoredExperiences.cs:
--------------------------------------------------------------------------------
 1 | using BloatynosyNue;
 2 | using Microsoft.Win32;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Settings.Ads
 7 | {
 8 |     internal class TailoredExperiences : FeatureBase
 9 |     {
10 |         public TailoredExperiences(Logger logger) : base(logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Privacy";
15 |         private const string valueName = "TailoredExperiencesWithDiagnosticDataEnabled";
16 |         private const int desiredValue = 0;
17 | 
18 |         public override string GetRegistryKey()
19 |         {
20 |             return 
quot;{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
21 |         }
22 | 
23 |         public override string ID()
24 |         {
25 |             return BloatynosyNue.Locales.Strings._adsTailoredExperiences;
26 |         }
27 | 
28 |         public override string Info()
29 |         {
30 |             return BloatynosyNue.Locales.Strings._adsTailoredExperiences_desc;
31 |         }
32 | 
33 |         public override bool CheckFeature()
34 |         {
35 |             return (
36 |                    Utils.IntEquals(keyName, valueName, desiredValue)
37 |              );
38 |         }
39 | 
40 |         public override bool DoFeature()
41 |         {
42 |             try
43 |             {
44 |                 Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord);
45 |                 return true;
46 |             }
47 |             catch (Exception ex)
48 |             {
49 |                 logger.Log("Code red in " + ex.Message, Color.Red);
50 |             }
51 | 
52 |             return false;
53 |         }
54 | 
55 |         public override bool UndoFeature()
56 |         {
57 |             try
58 |             {
59 |                 Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord);
60 |                 return true;
61 |             }
62 |             catch (Exception ex)
63 |             {
64 |                 logger.Log("Code red in " + ex.Message, Color.Red);
65 |             }
66 | 
67 |             return false;
68 |         }
69 |     }
70 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Experience/Ads/TipsAndSuggestions.cs:
--------------------------------------------------------------------------------
 1 | using BloatynosyNue;
 2 | using Microsoft.Win32;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Settings.Ads
 7 | {
 8 |     internal class TipsAndSuggestions : FeatureBase
 9 |     {
10 |         public TipsAndSuggestions(Logger logger) : base(logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager";
15 |         private const string valueName = "SubscribedContent-338389Enabled";
16 |         private const int desiredValue = 0;
17 | 
18 |         public override string ID()
19 |         { return BloatynosyNue.Locales.Strings._adsTipsAndSuggestions; }
20 | 
21 |         public override string Info()
22 |         { return BloatynosyNue.Locales.Strings._adsTipsAndSuggestions_desc; }
23 | 
24 |         public override string GetRegistryKey()
25 |         {
26 |             return 
quot;{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
27 |         }
28 | 
29 |         public override bool CheckFeature()
30 |         {
31 |             return (Utils.IntEquals(keyName, valueName, desiredValue)
32 |                  );
33 |         }
34 | 
35 |         public override bool DoFeature()
36 |         {
37 |             try
38 |             {
39 |                 Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord);
40 | 
41 |                 return true;
42 |             }
43 |             catch (Exception ex)
44 |             {
45 |                 logger.Log("Code red in " + ex.Message, Color.Red);
46 |             }
47 | 
48 |             return false;
49 |         }
50 | 
51 |         public override bool UndoFeature()
52 |         {
53 |             try
54 |             {
55 |                 Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord);
56 | 
57 |                 return true;
58 |             }
59 |             catch (Exception ex)
60 |             {
61 |                 logger.Log("Code red in " + ex.Message, Color.Red);
62 |             }
63 | 
64 |             return false;
65 |         }
66 |     }
67 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Experience/Ads/WelcomeExperienceAds.cs:
--------------------------------------------------------------------------------
 1 | using BloatynosyNue;
 2 | using Microsoft.Win32;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Settings.Ads
 7 | {
 8 |     public class WelcomeExperienceAds : FeatureBase
 9 |     {
10 |         public WelcomeExperienceAds(Logger logger) : base(logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager";
15 |         private const string valueName = "SubscribedContent-310093Enabled";
16 |         private const int desiredValue = 0;
17 | 
18 |         public override string ID()
19 |         { return BloatynosyNue.Locales.Strings._adsWelcomeExperienceAds; }
20 | 
21 |         public override string Info()
22 |         { return BloatynosyNue.Locales.Strings._adsWelcomeExperienceAds_desc; }
23 | 
24 |         public override string GetRegistryKey()
25 |         {
26 |             return 
quot;{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
27 |         }
28 | 
29 |         public override bool CheckFeature()
30 |         {
31 |             return Utils.IntEquals(keyName, valueName, 0);
32 |         }
33 | 
34 |         public override bool DoFeature()
35 |         {
36 |             try
37 |             {
38 |                 Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord);
39 | 
40 |                 return true;
41 |             }
42 |             catch (Exception ex)
43 |             {
44 |                 logger.Log("Code red in " + ex.Message, Color.Red);
45 |             }
46 | 
47 |             return false;
48 |         }
49 | 
50 |         public override bool UndoFeature()
51 |         {
52 |             try
53 |             {
54 |                 Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord);
55 | 
56 |                 return true;
57 |             }
58 |             catch (Exception ex)
59 |             {
60 |                 logger.Log("Code red in " + ex.Message, Color.Red);
61 |             }
62 | 
63 |             return false;
64 |         }
65 |     }
66 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Experience/FeatureBase.cs:
--------------------------------------------------------------------------------
 1 | using System.Linq;
 2 | 
 3 | namespace BloatynosyNue
 4 | {
 5 |     public abstract class FeatureBase
 6 |     {
 7 |         protected readonly Logger logger;
 8 | 
 9 |         public Logger Logger => logger;
10 | 
11 |         protected FeatureBase(Logger logger)
12 |         {
13 |             this.logger = logger;
14 |         }
15 | 
16 |         public abstract string ID();
17 | 
18 |         public abstract string Info();
19 | 
20 |         public abstract bool CheckFeature();
21 | 
22 |         public abstract bool DoFeature();
23 | 
24 |         public abstract bool UndoFeature();
25 | 
26 |         public abstract string GetRegistryKey();
27 | 
28 |         public string GetCategory()
29 |         {
30 |             // Extracts the category from the namespace (e.g., "Ads" from "Settings.Ads")
31 |             return GetType().Namespace?.Split('.').Last() ?? "Unknown";
32 |         }
33 |     }
34 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Experience/FeatureNode.cs:
--------------------------------------------------------------------------------
 1 | using System.Windows.Forms;
 2 | 
 3 | namespace BloatynosyNue
 4 | {
 5 |     internal class FeatureNode : TreeNode
 6 |     {
 7 |         public FeatureBase Feature { get; private set; }
 8 | 
 9 |         public FeatureNode(FeatureBase feature)
10 |         {
11 |             Feature = feature;
12 |             Text = Feature.ID();
13 |         }
14 |     }
15 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Experience/Gaming/GameDVR.cs:
--------------------------------------------------------------------------------
 1 | using BloatynosyNue;
 2 | using Microsoft.Win32;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Settings.Gaming
 7 | {
 8 |     internal class GameDVR : FeatureBase
 9 |     {
10 |         public GameDVR(Logger logger) : base(logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\System\GameConfigStore";
15 | 
16 |         // 0 = Enabled, 2 = Disabled
17 |         private const string keyName2 = @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\default\ApplicationManagement\AllowGameDVR";
18 | 
19 |         private const string valueName = "GameDVR_Enabled";
20 |         private const string valueName2 = "GameDVR_FSEBehaviorMode";
21 |         private const string valueName3 = "value";
22 | 
23 |         public override string GetRegistryKey()
24 |         {
25 |             return 
quot;{keyName} |Value: {valueName} | {valueName2} | {keyName2} | {valueName3} ";
26 |         }
27 | 
28 |         public override string ID()
29 |         {
30 |             return BloatynosyNue.Locales.Strings._gamingGameDVR;
31 |         }
32 | 
33 |         public override string Info()
34 |         {
35 |             return BloatynosyNue.Locales.Strings._gamingGameDVR_desc;
36 |         }
37 | 
38 |         public override bool CheckFeature()
39 |         {
40 |             return Utils.IntEquals(keyName, valueName, 0) &&
41 |                        Utils.IntEquals(keyName, valueName2, 2) &&
42 |                        Utils.IntEquals(keyName2, valueName3, 0);
43 |         }
44 | 
45 |         public override bool DoFeature()
46 |         {
47 |             try
48 |             {
49 |                 Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord);
50 |                 Registry.SetValue(keyName, valueName2, 2, RegistryValueKind.DWord);
51 |                 Registry.SetValue(keyName2, valueName3, 0, RegistryValueKind.DWord);
52 | 
53 |                 return true;
54 |             }
55 |             catch (Exception ex)
56 |             {
57 |                 logger.Log("Code red in " + ex.Message, Color.Red);
58 |             }
59 | 
60 |             return false;
61 |         }
62 | 
63 |         public override bool UndoFeature()
64 |         {
65 |             try
66 |             {
67 |                 Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord);
68 |                 Registry.SetValue(keyName, valueName2, 0, RegistryValueKind.DWord);
69 |                 Registry.SetValue(keyName2, valueName3, 1, RegistryValueKind.DWord);
70 | 
71 |                 return true;
72 |             }
73 |             catch (Exception ex)
74 |             {
75 |                 logger.Log("Code red in " + ex.Message, Color.Red);
76 |             }
77 | 
78 |             return false;
79 |         }
80 |     }
81 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Experience/Gaming/PowerThrotteling.cs:
--------------------------------------------------------------------------------
 1 | using BloatynosyNue;
 2 | using Microsoft.Win32;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Settings.Gaming
 7 | {
 8 |     internal class PowerThrottling : FeatureBase
 9 |     {
10 |         public PowerThrottling(Logger logger) : base(logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerThrottling";
15 |         private const string valueName = "PowerThrottlingOff";
16 |         private const int desiredValue = 1;
17 | 
18 |         public override string GetRegistryKey()
19 |         {
20 |             return 
quot;{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
21 |         }
22 | 
23 |         public override string ID()
24 |         {
25 |             return BloatynosyNue.Locales.Strings._gamingPowerThrottling;
26 |         }
27 | 
28 |         public override string Info()
29 |         {
30 |             return BloatynosyNue.Locales.Strings._gamingPowerThrottling_desc;
31 |         }
32 | 
33 |         public override bool CheckFeature()
34 |         {
35 |             return Utils.IntEquals(keyName, valueName, desiredValue);
36 |         }
37 | 
38 |         public override bool DoFeature()
39 |         {
40 |             try
41 |             {
42 |                 Registry.SetValue(keyName, valueName, desiredValue, Microsoft.Win32.RegistryValueKind.DWord);
43 | 
44 |                 return true;
45 |             }
46 |             catch (Exception ex)
47 |             {
48 |                 logger.Log("Code red in " + ex.Message, Color.Red);
49 |             }
50 | 
51 |             return false;
52 |         }
53 | 
54 |         public override bool UndoFeature()
55 |         {
56 |             try
57 |             {
58 |                 Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord);
59 | 
60 |                 return true;
61 |             }
62 |             catch (Exception ex)
63 |             {
64 |                 logger.Log("Code red in " + ex.Message, Color.Red);
65 |             }
66 | 
67 |             return false;
68 |         }
69 |     }
70 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Experience/Gaming/VisualFX.cs:
--------------------------------------------------------------------------------
 1 | using BloatynosyNue;
 2 | using Microsoft.Win32;
 3 | using System;
 4 | using System.Drawing;
 5 | using System.Windows.Forms;
 6 | 
 7 | namespace Settings.Gaming
 8 | {
 9 |     internal class VisualFX: FeatureBase
10 |     {
11 |         public VisualFX(Logger logger) : base(logger)
12 |         {
13 |         }
14 | 
15 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects";
16 |         private const string valueName = "VisualFXSetting";
17 |         private const int desiredValue = 2;
18 | 
19 |         public override string GetRegistryKey()
20 |         {
21 |             return 
quot;{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
22 |         }
23 | 
24 |         public override string ID()
25 |         {
26 |             return BloatynosyNue.Locales.Strings._gamingVisualFX;
27 |         }
28 | 
29 |         public override string Info()
30 |         {
31 |             return BloatynosyNue.Locales.Strings._gamingVisualFX_desc;
32 |         }
33 | 
34 |         public override bool CheckFeature()
35 |         {
36 |             return Utils.IntEquals(keyName, valueName, 0);
37 |         }
38 | 
39 |         public override bool DoFeature()
40 |         {
41 |             try
42 |             {
43 |                 Registry.SetValue(keyName, valueName,0, Microsoft.Win32.RegistryValueKind.DWord);
44 | 
45 |                 return true;
46 |             }
47 |             catch (Exception ex)
48 |             {
49 |                 logger.Log("Code red in " + ex.Message, Color.Red);
50 |             }
51 | 
52 |             return false;
53 |         }
54 | 
55 |         public override bool UndoFeature()
56 |         {
57 |             try
58 |             {
59 |                 Registry.SetValue(keyName, valueName, 2, Microsoft.Win32.RegistryValueKind.DWord);
60 | 
61 |                 return true;
62 |             }
63 |             catch (Exception ex)
64 |             {
65 |                 logger.Log("Code red in " + ex.Message, Color.Red);
66 |             }
67 | 
68 |             return false;
69 |         }
70 |     }
71 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Experience/Privacy/ActivityHistory.cs:
--------------------------------------------------------------------------------
 1 | using BloatynosyNue;
 2 | using Microsoft.Win32;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Settings.Privacy
 7 | {
 8 |     internal class ActivityHistory : FeatureBase
 9 |     {
10 |         public ActivityHistory(Logger logger) : base(logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Privacy";
15 |         private const string valueName = "ActivityHistoryEnabled";
16 |         private const int desiredValue = 0;
17 | 
18 |         public override string GetRegistryKey()
19 |         {
20 |             return 
quot;{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
21 |         }
22 | 
23 |         public override string ID()
24 |         {
25 |             return BloatynosyNue.Locales.Strings._privacyActivityHistory;
26 |         }
27 | 
28 |         public override string Info()
29 |         {
30 |             return BloatynosyNue.Locales.Strings._privacyActivityHistory_desc;
31 |         }
32 | 
33 |         public override bool CheckFeature()
34 |         {
35 |             return (
36 |                Utils.IntEquals(keyName, valueName, desiredValue)
37 |          );
38 |         }
39 | 
40 |         public override bool DoFeature()
41 |         {
42 |             try
43 |             {
44 |                 Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord);
45 |                 return true;
46 |             }
47 |             catch (Exception ex)
48 |             {
49 |                 logger.Log("Code red in " + ex.Message, Color.Red);
50 |             }
51 | 
52 |             return false;
53 |         }
54 | 
55 |         public override bool UndoFeature()
56 |         {
57 |             try
58 |             {
59 |                 Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord);
60 | 
61 |                 return true;
62 |             }
63 |             catch (Exception ex)
64 |             {
65 |                 logger.Log("Code red in " + ex.Message, Color.Red);
66 |             }
67 | 
68 |             return false;
69 |         }
70 |     }
71 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Experience/Privacy/LocationTracking.cs:
--------------------------------------------------------------------------------
 1 | using BloatynosyNue;
 2 | using Microsoft.Win32;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Settings.Privacy
 7 | {
 8 |     internal class LocationTracking : FeatureBase
 9 |     {
10 |         public LocationTracking(Logger logger) : base(logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\LocationAndSensors";
15 |         private const string valueName = "LocationEnabled";
16 |         private const int desiredValue = 0;
17 | 
18 |         public override string GetRegistryKey()
19 |         {
20 |             return 
quot;{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
21 |         }
22 | 
23 |         public override string ID()
24 |         {
25 |             return BloatynosyNue.Locales.Strings._privacyLocationTracking;
26 |         }
27 | 
28 |         public override string Info()
29 |         {
30 |             return BloatynosyNue.Locales.Strings._privacyLocationTracking_desc;
31 |         }
32 | 
33 |         public override bool CheckFeature()
34 |         {
35 |             return Utils.IntEquals(keyName, valueName,desiredValue);
36 |         }
37 | 
38 |         public override bool DoFeature()
39 |         {
40 |             try
41 |             {
42 |                 Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord);
43 |                 return true;
44 |             }
45 |             catch (Exception ex)
46 |             {
47 |                 logger.Log("Code red in " + ex.Message, Color.Red);
48 |             }
49 | 
50 |             return false;
51 |         }
52 | 
53 |         public override bool UndoFeature()
54 |         {
55 |             try
56 |             {
57 |                 Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord);
58 | 
59 |                 return true;
60 |             }
61 |             catch (Exception ex)
62 |             {
63 |                 logger.Log("Code red in " + ex.Message, Color.Red);
64 |             }
65 | 
66 |             return false;
67 |         }
68 |     }
69 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Experience/Privacy/PrivacyExperience.cs:
--------------------------------------------------------------------------------
 1 | using BloatynosyNue;
 2 | using Microsoft.Win32;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Settings.Privacy
 7 | {
 8 |     public class PrivacyExperience : FeatureBase
 9 |     {
10 |         public PrivacyExperience(Logger logger) : base(logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\OOBE";
15 |         private const string valueName = "DisablePrivacyExperience";
16 |         private const int desiredValue = 0;
17 | 
18 |         public override string ID() { return BloatynosyNue.Locales.Strings._privacyPrivacyExperience; }
19 | 
20 |         public override string Info() { return BloatynosyNue.Locales.Strings._privacyPrivacyExperience_desc; }
21 | 
22 |         public override string GetRegistryKey()
23 |         {
24 |             return 
quot;{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
25 |         }
26 | 
27 |         public override bool CheckFeature()
28 |         {
29 |             return !Utils.IntEquals(keyName, valueName, desiredValue);
30 |         }
31 | 
32 |         public override bool DoFeature()
33 |         {
34 |             try
35 |             {
36 |                 Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord);
37 | 
38 |                 return true;
39 |             }
40 |             catch (Exception ex)
41 |             {
42 |                 logger.Log("Code red in " + ex.Message, Color.Red);
43 |             }
44 | 
45 |             return false;
46 |         }
47 | 
48 |         public override bool UndoFeature()
49 |         {
50 |             try
51 |             {
52 |                 Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord);
53 | 
54 |                 return true;
55 |             }
56 |             catch (Exception ex)
57 |             {
58 |                 logger.Log("Code red in " + ex.Message, Color.Red);
59 |             }
60 | 
61 |             return false;
62 |         }
63 |     }
64 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Experience/Privacy/Telemetry.cs:
--------------------------------------------------------------------------------
 1 | using BloatynosyNue;
 2 | using Microsoft.Win32;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Settings.Privacy
 7 | {
 8 |     public class Telemetry : FeatureBase
 9 |     {
10 |         public Telemetry(Logger logger) : base(logger)
11 |         {
12 |         }
13 | 
14 |         private const string dataCollection = @"HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\DataCollection";
15 |         private const string diagTrack = @"HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\DiagTrack";
16 | 
17 |         public override string ID() { return BloatynosyNue.Locales.Strings._privacyTelemetry; }
18 | 
19 |         public override string Info() { return BloatynosyNue.Locales.Strings._privacyTelemetry_desc; }
20 | 
21 |         public override string GetRegistryKey()
22 |         {
23 |             return 
quot;{dataCollection} | {diagTrack}";
24 |         }
25 | 
26 |         public override bool CheckFeature()
27 |         {
28 |             return (
29 |                Utils.IntEquals(dataCollection, "AllowTelemetry", 0) &&
30 |                 Utils.IntEquals(diagTrack, "Start", 2)
31 | 
32 |            );
33 |         }
34 | 
35 |         public override bool DoFeature()
36 |         {
37 |             try
38 |             {
39 |                 Registry.SetValue(dataCollection, "AllowTelemetry", 0, RegistryValueKind.DWord);
40 |                 Registry.SetValue(diagTrack, "Start", 2, RegistryValueKind.DWord);
41 | 
42 |                 return true;
43 |             }
44 |             catch (Exception ex)
45 |             {
46 |                 logger.Log("Code red in " + ex.Message, Color.Red);
47 |             }
48 | 
49 |             return false;
50 |         }
51 | 
52 |         public override bool UndoFeature()
53 |         {
54 |             try
55 |             {
56 |                 Registry.SetValue(dataCollection, "AllowTelemetry", 1, RegistryValueKind.DWord);
57 |                 Registry.SetValue(diagTrack, "Start", 4, RegistryValueKind.DWord);
58 | 
59 |                 return true;
60 |             }
61 |             catch (Exception ex)
62 |             {
63 |                 logger.Log("Code red in " + ex.Message, Color.Red);
64 |             }
65 | 
66 |             return false;
67 |         }
68 |     }
69 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Experience/UI/FullContextMenus.cs:
--------------------------------------------------------------------------------
 1 | using BloatynosyNue;
 2 | using Microsoft.Win32;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Settings.Personalization
 7 | {
 8 |     internal class FullContextMenus : FeatureBase
 9 |     {
10 |         public FullContextMenus(Logger logger) : base(logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\SOFTWARE\CLASSES\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32";
15 | 
16 |         public override string GetRegistryKey()
17 |         {
18 |             return 
quot;{keyName}";
19 |         }
20 | 
21 |         public override string ID()
22 |         {
23 |             return BloatynosyNue.Locales.Strings._uiFullContextMenus;
24 |         }
25 | 
26 |         public override string Info()
27 |         {
28 |             return BloatynosyNue.Locales.Strings._uiFullContextMenus_desc;
29 |         }
30 | 
31 |         public override bool CheckFeature()
32 |         {
33 |             try
34 |             {
35 |                 object value = Registry.GetValue(keyName, "", null);
36 |                 return value != null; // Return true if value is not null
37 |             }
38 |             catch (Exception ex)
39 |             {
40 |                 logger.Log("Error occurred while checking: " + ex.Message, Color.Red);
41 |                 return false;
42 |             }
43 |         }
44 | 
45 |         public override bool DoFeature()
46 |         {
47 |             try
48 |             {
49 |                 Registry.SetValue(keyName, "", "", RegistryValueKind.String);
50 |                 return true;
51 |             }
52 |             catch (Exception ex)
53 |             {
54 |                 logger.Log("Error occurred while enabling: " + ex.Message, Color.Red);
55 |                 return false;
56 |             }
57 |         }
58 | 
59 |         public override bool UndoFeature()
60 |         {
61 |             try
62 |             {
63 |                 Registry.CurrentUser.DeleteSubKeyTree(@"Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}", false);
64 |                 return true;
65 |             }
66 |             catch (Exception ex)
67 |             {
68 |                 logger.Log("Error occurred while disabling: " + ex.Message, Color.Red);
69 |                 return false;
70 |             }
71 |         }
72 |     }
73 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Experience/UI/LockScreen.cs:
--------------------------------------------------------------------------------
 1 | using BloatynosyNue;
 2 | using Microsoft.Win32;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Settings.Personalization
 7 | {
 8 |     internal class LockScreen : FeatureBase
 9 |     {
10 |         public LockScreen(Logger logger) : base(logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Personalization";
15 |         private const string valueName = "NoLockScreen";
16 |         private const int desiredValue = 0;
17 | 
18 |         public override string GetRegistryKey()
19 |         {
20 |             return 
quot;{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
21 |         }
22 | 
23 |         public override string ID()
24 |         {
25 |             return BloatynosyNue.Locales.Strings._uiLockScreen;
26 |         }
27 | 
28 |         public override string Info()
29 |         {
30 |             return "This feature will disable the personalized lock screen.";
31 |         }
32 | 
33 |         public override bool CheckFeature()
34 |         {
35 |             return !(
36 |                    Utils.IntEquals(keyName, valueName, desiredValue)
37 |              );
38 |         }
39 | 
40 | 
41 |         public override bool DoFeature()
42 |         {
43 |             try
44 |             {
45 |                 Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord);
46 |                 return true;
47 |             }
48 |             catch (Exception ex)
49 |             {
50 |                 logger.Log("Code red in " + ex.Message, Color.Red);
51 |             }
52 | 
53 |             return false;
54 |         }
55 | 
56 |         public override bool UndoFeature()
57 |         {
58 |             try
59 |             {
60 |                 Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord);
61 |                 return true;
62 |             }
63 |             catch (Exception ex)
64 |             {
65 |                 logger.Log("Code red in " + ex.Message, Color.Red);
66 |             }
67 | 
68 |             return false;
69 |         }
70 |     }
71 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Experience/UI/SearchboxTaskbarMode.cs:
--------------------------------------------------------------------------------
 1 | using BloatynosyNue;
 2 | using Microsoft.Win32;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Settings.Personalization
 7 | {
 8 |     internal class SearchboxTaskbarMode : FeatureBase
 9 |     {
10 |         public SearchboxTaskbarMode(Logger logger) : base(logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Search";
15 |         private const string valueName = "SearchboxTaskbarMode";
16 |         private const int desiredValue = 0;
17 | 
18 |         public override string GetRegistryKey()
19 |         {
20 |             return 
quot;{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
21 |         }
22 | 
23 |         public override string ID()
24 |         {
25 |             return BloatynosyNue.Locales.Strings._uiSearchboxTaskbarMode;
26 |         }
27 | 
28 |         public override string Info()
29 |         {
30 |             return BloatynosyNue.Locales.Strings._uiSearchboxTaskbarMode_desc;
31 |         }
32 | 
33 |         public override bool CheckFeature()
34 |         {
35 |             return (
36 |                    Utils.IntEquals(keyName, valueName, desiredValue)
37 |              );
38 |         }
39 | 
40 |         public override bool DoFeature()
41 |         {
42 |             try
43 |             {
44 |                 Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord);
45 |                 return true;
46 |             }
47 |             catch (Exception ex)
48 |             {
49 |                 logger.Log("Code red in " + ex.Message, Color.Red);
50 |             }
51 | 
52 |             return false;
53 |         }
54 | 
55 |         public override bool UndoFeature()
56 |         {
57 |             try
58 |             {
59 |                 Registry.SetValue(keyName, valueName, 2, RegistryValueKind.DWord);
60 |                 return true;
61 |             }
62 |             catch (Exception ex)
63 |             {
64 |                 logger.Log("Code red in " + ex.Message, Color.Red);
65 |             }
66 | 
67 |             return false;
68 |         }
69 |     }
70 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Experience/UI/ShowOrHideMostUsedApps.cs:
--------------------------------------------------------------------------------
 1 | using BloatynosyNue;
 2 | using Microsoft.Win32;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Settings.Personalization
 7 | {
 8 |     internal class ShowOrHideMostUsedApps : FeatureBase
 9 |     {
10 |         public ShowOrHideMostUsedApps(Logger logger) : base(logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Explorer";
15 |         private const string valueName = "ShowOrHideMostUsedApps";
16 |         private const int desiredValue = 0;
17 | 
18 |         public override string GetRegistryKey()
19 |         {
20 |             return 
quot;{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
21 |         }
22 | 
23 |         public override string ID()
24 |         {
25 |             return BloatynosyNue.Locales.Strings._uiShowOrHideMostUsedApps;
26 |         }
27 | 
28 |         public override string Info()
29 |         {
30 |             return BloatynosyNue.Locales.Strings._uiShowOrHideMostUsedApps_desc;
31 |         }
32 | 
33 |         public override bool CheckFeature()
34 |         {
35 |             return (
36 |                    Utils.IntEquals(keyName, valueName, desiredValue)
37 |              );
38 |         }
39 | 
40 |         public override bool DoFeature()
41 |         {
42 |             try
43 |             {
44 |                 Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord);
45 |                 return true;
46 |             }
47 |             catch (Exception ex)
48 |             {
49 |                 logger.Log("Code red in " + ex.Message, Color.Red);
50 |             }
51 | 
52 |             return false;
53 |         }
54 | 
55 |         public override bool UndoFeature()
56 |         {
57 |             try
58 |             {
59 |                 Registry.SetValue(keyName, valueName, 2, RegistryValueKind.DWord);
60 |                 return true;
61 |             }
62 |             catch (Exception ex)
63 |             {
64 |                 logger.Log("Code red in " + ex.Message, Color.Red);
65 |             }
66 | 
67 |             return false;
68 |         }
69 |     }
70 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Experience/UI/ShowTaskViewButton.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using BloatynosyNue;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Settings.Personalization
 7 | {
 8 |     internal class ShowTaskViewButton : FeatureBase
 9 |     {
10 |         public ShowTaskViewButton(Logger logger) : base(logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced";
15 |         private const string valueName = "ShowTaskViewButton";
16 |         private const int desiredValue = 0;
17 | 
18 |         public override string GetRegistryKey()
19 |         {
20 |             return 
quot;{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
21 |         }
22 | 
23 |         public override string ID()
24 |         {
25 |             return BloatynosyNue.Locales.Strings._uiShowTaskViewButton;
26 |         }
27 | 
28 |         public override string Info()
29 |         {
30 |             return BloatynosyNue.Locales.Strings._uiShowTaskViewButton_desc;
31 |         }
32 | 
33 |         public override bool CheckFeature()
34 |         {
35 |             return (
36 |                    Utils.IntEquals(keyName, valueName, desiredValue)
37 |              );
38 |         }
39 | 
40 |         public override bool DoFeature()
41 |         {
42 |             try
43 |             {
44 |                 Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord);
45 |                 return true;
46 |             }
47 |             catch (Exception ex)
48 |             {
49 |                 logger.Log("Code red in " + ex.Message, Color.Red);
50 |             }
51 | 
52 |             return false;
53 |         }
54 | 
55 |         public override bool UndoFeature()
56 |         {
57 |             try
58 |             {
59 |                 Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord);
60 |                 return true;
61 |             }
62 |             catch (Exception ex)
63 |             {
64 |                 logger.Log("Code red in " + ex.Message, Color.Red);
65 |             }
66 | 
67 |             return false;
68 |         }
69 |     }
70 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Experience/UI/StartLayout.cs:
--------------------------------------------------------------------------------
 1 | using BloatynosyNue;
 2 | using Microsoft.Win32;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Settings.Personalization
 7 | {
 8 |     internal class StartLayout : FeatureBase
 9 |     {
10 |         public StartLayout(Logger logger) : base(logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced";
15 |         private const string valueName = "Start_Layout";
16 |         private const int desiredValue = 1;
17 | 
18 |         public override string GetRegistryKey()
19 |         {
20 |             return 
quot;{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
21 |         }
22 | 
23 |         public override string ID()
24 |         {
25 |             return BloatynosyNue.Locales.Strings._uiStartLayout;
26 |         }
27 | 
28 |         public override string Info()
29 |         {
30 |             return  BloatynosyNue.Locales.Strings._uiStartLayout_desc;
31 |         }
32 | 
33 |         public override bool CheckFeature()
34 |         {
35 |             return (
36 |                    Utils.IntEquals(keyName, valueName, desiredValue)
37 |              );
38 |         }
39 | 
40 |         public override bool DoFeature()
41 |         {
42 |             try
43 |             {
44 |                 Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord);
45 |                 return true;
46 |             }
47 |             catch (Exception ex)
48 |             {
49 |                 logger.Log("Code red in " + ex.Message, Color.Red);
50 |             }
51 | 
52 |             return false;
53 |         }
54 | 
55 |         public override bool UndoFeature()
56 |         {
57 |             try
58 |             {
59 |                 Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord);
60 |                 return true;
61 |             }
62 |             catch (Exception ex)
63 |             {
64 |                 logger.Log("Code red in " + ex.Message, Color.Red);
65 |             }
66 | 
67 |             return false;
68 |         }
69 |     }
70 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Experience/UI/TaskbarAlignment.cs:
--------------------------------------------------------------------------------
 1 | using BloatynosyNue;
 2 | using Microsoft.Win32;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Settings.Personalization
 7 | {
 8 |     internal class TaskbarAlignment : FeatureBase
 9 |     {
10 |         public TaskbarAlignment(Logger logger) : base(logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced";
15 |         private const string valueName = "TaskbarAl";
16 |         private const int desiredValue = 0;
17 | 
18 |         public override string GetRegistryKey()
19 |         {
20 |             return 
quot;{keyName} | Value: {valueName} | Desired Value: {desiredValue}";
21 |         }
22 | 
23 |         public override string ID()
24 |         {
25 |             return BloatynosyNue.Locales.Strings._uiTaskbarAlignment;
26 |         }
27 | 
28 |         public override string Info()
29 |         {
30 |             return BloatynosyNue.Locales.Strings._uiTaskbarAlignment_desc;
31 |         }
32 | 
33 |         public override bool CheckFeature()
34 |         {
35 |             return (
36 |                    Utils.IntEquals(keyName, valueName, desiredValue)
37 |              );
38 |         }
39 | 
40 |         public override bool DoFeature()
41 |         {
42 |             try
43 |             {
44 |                 Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord);
45 |                 return true;
46 |             }
47 |             catch (Exception ex)
48 |             {
49 |                 logger.Log("Code red in " + ex.Message, Color.Red);
50 |             }
51 | 
52 |             return false;
53 |         }
54 | 
55 |         public override bool UndoFeature()
56 |         {
57 |             try
58 |             {
59 |                 Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord);
60 |                 return true;
61 |             }
62 |             catch (Exception ex)
63 |             {
64 |                 logger.Log("Code red in " + ex.Message, Color.Red);
65 |             }
66 | 
67 |             return false;
68 |         }
69 |     }
70 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Helper/Helper.cs:
--------------------------------------------------------------------------------
 1 | using System;
 2 | using System.IO;
 3 | using System.Net.Http;
 4 | using System.Threading.Tasks;
 5 | using System.Windows.Forms;
 6 | 
 7 | namespace BloatynosyNue.Helpers
 8 | {
 9 |     public static class PluginHelper
10 |     {
11 |         // Check if the plugin environment is ready
12 |         public static bool IsPluginEnvironmentReady()
13 |         {
14 |             return Directory.Exists(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "plugins")) &&
15 |                    File.Exists(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Newtonsoft.Json.dll"));
16 |         }
17 | 
18 |         // Download required plugin files
19 |         public static async Task DownloadPlugins()
20 |         {
21 |             string pluginFolderPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "plugins");
22 |             string downloadUrl = "https://github.com/builtbybel/Bloatynosy/raw/main/plugins/Newtonsoft.Json.dll";
23 |             string dllPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Newtonsoft.Json.dll");
24 | 
25 |             try
26 |             {
27 |                 // Create Plugin directory if it doesn't exist
28 |                 if (!Directory.Exists(pluginFolderPath))
29 |                 {
30 |                     Directory.CreateDirectory(pluginFolderPath);
31 |                 }
32 | 
33 |                 using (HttpClient client = new HttpClient())
34 |                 {
35 |                     var response = await client.GetAsync(downloadUrl);
36 |                     response.EnsureSuccessStatusCode();
37 | 
38 |                     using (var fileStream = new FileStream(dllPath, FileMode.Create, FileAccess.Write, FileShare.None))
39 |                     {
40 |                         await response.Content.CopyToAsync(fileStream);
41 |                     }
42 |                 }
43 | 
44 |                 MessageBox.Show(Locales.Strings.formPlugins_status_Ready.Replace(@"\n", Environment.NewLine), "Plugin Setup", MessageBoxButtons.OK, MessageBoxIcon.Information);
45 |             }
46 |             catch (Exception ex)
47 |             {
48 |                 MessageBox.Show(
quot;Error: {ex.Message}\nPlease try again later.", "Download Failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
49 |             }
50 |         }
51 |     }
52 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Helper/Logger.cs:
--------------------------------------------------------------------------------
 1 | using BloatynosyNue.Views;
 2 | using System.Collections.Generic;
 3 | using System.Drawing;
 4 | using System;
 5 | 
 6 | public class Logger
 7 | {
 8 |     private static LoggerView loggerViewInstance;
 9 |     private static readonly List<(string Message, Color Color)> logBuffer = new List<(string, Color)>();
10 | 
11 |     // Set the LoggerView instance dynamically
12 |     public static void SetLoggerView(LoggerView loggerView)
13 |     {
14 |         if (loggerView == null)
15 |         {
16 |             throw new ArgumentNullException(nameof(loggerView), "LoggerView cannot be null.");
17 |         }
18 | 
19 |         loggerViewInstance = loggerView;
20 | 
21 |         // If there were logs buffered before the view was set, flush them now
22 |         foreach (var log in logBuffer)
23 |         {
24 |             loggerViewInstance.AddLog(log.Message, log.Color);
25 |         }
26 | 
27 |         // Clear the buffer after flushing
28 |         logBuffer.Clear();
29 |     }
30 | 
31 |     // Log a message with color and timestamp
32 |     public void Log(string message, Color color)
33 |     {
34 |         string timestampedMessage = 
quot;{DateTime.Now:HH:mm:ss} - {message}";
35 | 
36 |         // Log to the LoggerView if it's open
37 |         if (loggerViewInstance != null)
38 |         {
39 |             loggerViewInstance.AddLog(timestampedMessage, color);
40 |         }
41 |         else
42 |         {
43 |             // If LoggerView isn't open, buffer the log for future display
44 |             logBuffer.Add((timestampedMessage, color));
45 |         }
46 |     }
47 | }
48 | 


--------------------------------------------------------------------------------
/src/Bloatynosy/Helper/Utils.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using System;
 3 | using System.Diagnostics;
 4 | using System.Windows.Forms;
 5 | 
 6 | namespace BloatynosyNue
 7 | {
 8 |     internal class Utils
 9 |     {
10 |         // Check registry int equal
11 |         public static bool IntEquals(string keyName, string valueName, int expectedValue)
12 |         {
13 |             try
14 |             {
15 |                 var value = Registry.GetValue(keyName, valueName, null);
16 |                 return (value != null && (int)value == expectedValue);
17 |             }
18 |             catch (Exception ex)
19 | 
20 |             {
21 |                 MessageBox.Show(keyName, ex.Message, MessageBoxButtons.OK);
22 |                 return false;
23 |             }
24 |         }
25 | 
26 |         // Check registry strings equal
27 |         public static bool StringEquals(string keyName, string valueName, string expectedValue)
28 |         {
29 |             try
30 |             {
31 |                 var value = Registry.GetValue(keyName, valueName, null);
32 | 
33 |                 return (value != null && (string)value == expectedValue);
34 |             }
35 |             catch (Exception ex)
36 |             {
37 |                 MessageBox.Show(keyName, ex.Message, MessageBoxButtons.OK);
38 |                 return false;
39 |             }
40 |         }
41 | 
42 |         public static bool KeyExists(string keyPath)
43 |         {
44 |             return Registry.GetValue(keyPath, null, null) != null;
45 |         }
46 | 
47 |         public static bool IsProcessRunning(string processName)
48 |         {
49 |             Process[] processes = Process.GetProcessesByName(processName);
50 |             return processes.Length > 0;
51 |         }
52 | 
53 |         // Launch Urls in richText control
54 |         public static void LaunchUri(string url)
55 |         {
56 |             if (IsHttpURL(url)) Process.Start(url);
57 |         }
58 | 
59 |         // Check Urls in in richText control
60 |         public static bool IsHttpURL(string url)
61 |         {
62 |             return
63 |                 ((!string.IsNullOrWhiteSpace(url)) &&
64 |                 (url.ToLower().StartsWith("http")));
65 |         }
66 |     }
67 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Helper/Views.cs:
--------------------------------------------------------------------------------
 1 | using System.Windows.Forms;
 2 | 
 3 | namespace Views
 4 | {
 5 |     public static class SwitchView
 6 |     {
 7 |         public static Control PreviousView { get; private set; }
 8 |         public static Control DefaultView { get; set; } // Store the default view (panelMain)
 9 | 
10 |         // Switch to a new view
11 |         public static void SetView(Control newView, Panel targetPanel)
12 |         {
13 |             if (targetPanel.Controls.Count > 0)
14 |             {
15 |                 if (PreviousView == null)
16 |                 {
17 |                     PreviousView = targetPanel.Controls[0]; // Save the current view as PreviousView
18 |                 }
19 |             }
20 | 
21 |             newView.Dock = DockStyle.Fill;
22 |             targetPanel.Controls.Clear();
23 |             targetPanel.Controls.Add(newView);
24 |         }
25 |     }
26 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Locales/Strings.de.Designer.cs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/builtbybel/Bloatynosy/48d27896be3557e1878094b86362514b8ab6cbca/src/Bloatynosy/Locales/Strings.de.Designer.cs


--------------------------------------------------------------------------------
/src/Bloatynosy/Locales/Strings.it.Designer.cs:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/builtbybel/Bloatynosy/48d27896be3557e1878094b86362514b8ab6cbca/src/Bloatynosy/Locales/Strings.it.Designer.cs


--------------------------------------------------------------------------------
/src/Bloatynosy/PSPluginHandler.cs:
--------------------------------------------------------------------------------
 1 | using BloatynosyNue;
 2 | using System;
 3 | using System.Diagnostics;
 4 | using System.IO;
 5 | using System.Text;
 6 | using System.Threading.Tasks;
 7 | using System.Windows.Forms;
 8 | 
 9 | public class PSPluginHandler
10 | {
11 |     public void LoadPowerShellPlugins(TreeView treeView)
12 |     {
13 |         var scriptDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "plugins");
14 | 
15 |         if (!Directory.Exists(scriptDirectory))
16 |         {
17 |             MessageBox.Show("plugins directory does not exist.");
18 |             return;
19 |         }
20 | 
21 |         // Create a Dependencies category in the TreeView
22 |         TreeNode dependencyCategory = new TreeNode("Plugins");
23 |         treeView.Nodes.Add(dependencyCategory);
24 | 
25 |         var scriptFiles = Directory.GetFiles(scriptDirectory, "*.ps1");
26 | 
27 |         foreach (var file in scriptFiles)
28 |         {
29 |             var scriptName = Path.GetFileNameWithoutExtension(file);
30 | 
31 |             // Create a TreeNode for each ps script
32 |             var scriptNode = new TreeNode
33 |             {
34 |                 ToolTipText = file,
35 |                 Text = 
quot;{scriptName} [PS]",
36 |                 Tag = file // Store the file path as the Tag
37 |             };
38 | 
39 |             // Add the script node to the Dependecy category
40 |             dependencyCategory.Nodes.Add(scriptNode);
41 |         }
42 |     }
43 | 
44 |     // Execute the selected PowerShell script
45 |     public async Task ExecutePlugin(string pluginPath, Logger logger)
46 |     {
47 |         try
48 |         {
49 |             using (var process = new Process())
50 |             {
51 |                 process.StartInfo.FileName = "powershell.exe";
52 |                 process.StartInfo.Arguments = 
quot;-NoProfile -ExecutionPolicy Bypass -File \"{pluginPath}\"";
53 |                 process.StartInfo.RedirectStandardOutput = true;
54 |                 process.StartInfo.RedirectStandardError = true;
55 |                 process.StartInfo.UseShellExecute = false;
56 |                 process.StartInfo.CreateNoWindow = true;
57 | 
58 |                 var outputBuilder = new StringBuilder();
59 |                 var errorBuilder = new StringBuilder();
60 | 
61 |                 // Handle output from PowerShell script
62 |                 process.OutputDataReceived += (sender, e) =>
63 |                 {
64 |                     if (!string.IsNullOrEmpty(e.Data))
65 |                     {
66 |                         outputBuilder.AppendLine(e.Data);
67 |                         logger.Log(
quot;PowerShell script output: {e.Data}", System.Drawing.Color.Black);
68 |                     }
69 |                 };
70 | 
71 |                 // Handle error from PowerShell script
72 |                 process.ErrorDataReceived += (sender, e) =>
73 |                 {
74 |                     if (!string.IsNullOrEmpty(e.Data))
75 |                     {
76 |                         errorBuilder.AppendLine(e.Data);
77 |                         logger.Log(
quot;PowerShell script error: {e.Data}", System.Drawing.Color.Crimson);
78 |                     }
79 |                 };
80 | 
81 |                 process.Start();
82 |                 process.BeginOutputReadLine();
83 |                 process.BeginErrorReadLine();
84 | 
85 |                 await Task.Run(() =>
86 |                 {
87 |                     process.WaitForExit();
88 |                 });
89 | 
90 |                 logger.Log(
quot;PowerShell script executed successfully: {pluginPath}", System.Drawing.Color.Green);
91 |             }
92 |         }
93 |         catch (Exception ex)
94 |         {
95 |             logger.Log(
quot;Error executing PowerShell script: {pluginPath}. Exception: {ex.Message}", System.Drawing.Color.Crimson);
96 |         }
97 |     }
98 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Program.cs:
--------------------------------------------------------------------------------
 1 | using System;
 2 | using System.Collections.Generic;
 3 | using System.Linq;
 4 | using System.Reflection;
 5 | using System.Threading.Tasks;
 6 | using System.Windows.Forms;
 7 | 
 8 | namespace BloatynosyNue
 9 | {
10 |     internal static class Program
11 |     {
12 | 
13 |         /// <summary>
14 |         /// Der Haupteinstiegspunkt für die Anwendung.
15 |         /// </summary>
16 |         [STAThread]
17 |         private static void Main()
18 |         {
19 |             Application.EnableVisualStyles();
20 |             Application.SetCompatibleTextRenderingDefault(false);
21 |             Application.Run(new MainForm());
22 |         }
23 | 
24 | 
25 |         /// <summary>
26 |         /// Retrieves the version of Bloatynosy
27 |         /// </summary>
28 |         /// <returns>The application version in the format "major.minor.build"</returns>
29 |         public static string GetAppVersion()
30 |         {
31 |             // Get the version of the current executing assembly
32 |             Version version = Assembly.GetExecutingAssembly().GetName().Version;
33 | 
34 |             // Return the version in the format "major.minor.build"
35 |             return 
quot;{version.Major}.{version.Minor}.{version.Build}.{version.Revision}";
36 |         }
37 | 
38 |     }
39 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
 1 | using System.Reflection;
 2 | using System.Runtime.CompilerServices;
 3 | using System.Runtime.InteropServices;
 4 | 
 5 | // Allgemeine Informationen über eine Assembly werden über die folgenden
 6 | // Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
 7 | // die einer Assembly zugeordnet sind.
 8 | [assembly: AssemblyTitle("BloatynosyNue")]
 9 | [assembly: AssemblyDescription("Bloatynosy Nue")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("Builtbybel")]
12 | [assembly: AssemblyProduct("BloatynosyNue")]
13 | [assembly: AssemblyCopyright("Copyright ©  2024")]
14 | [assembly: AssemblyTrademark("A Belim app creation")]
15 | [assembly: AssemblyCulture("")]
16 | 
17 | // Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly
18 | // für COM-Komponenten unsichtbar.  Wenn Sie auf einen Typ in dieser Assembly von
19 | // COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen.
20 | [assembly: ComVisible(false)]
21 | 
22 | // Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
23 | [assembly: Guid("73427bec-fd4f-41fb-a985-66f0f36338c2")]
24 | 
25 | // Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
26 | //
27 | //      Hauptversion
28 | //      Nebenversion
29 | //      Buildnummer
30 | //      Revision
31 | //
32 | [assembly: AssemblyVersion("1.0.20.522")]
33 | [assembly: AssemblyFileVersion("1.0.20.522")]
34 | 


--------------------------------------------------------------------------------
/src/Bloatynosy/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
 1 | //------------------------------------------------------------------------------
 2 | // <auto-generated>
 3 | //     Dieser Code wurde von einem Tool generiert.
 4 | //     Laufzeitversion:4.0.30319.42000
 5 | //
 6 | //     Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
 7 | //     der Code erneut generiert wird.
 8 | // </auto-generated>
 9 | //------------------------------------------------------------------------------
10 | 
11 | namespace BloatynosyNue.Properties {
12 |     
13 |     
14 |     [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 |     [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.12.0.0")]
16 |     internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |         
18 |         private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |         
20 |         public static Settings Default {
21 |             get {
22 |                 return defaultInstance;
23 |             }
24 |         }
25 |     }
26 | }
27 | 


--------------------------------------------------------------------------------
/src/Bloatynosy/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 | <?xml version='1.0' encoding='utf-8'?>
2 | <SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
3 |   <Profiles>
4 |     <Profile Name="(Default)" />
5 |   </Profiles>
6 |   <Settings />
7 | </SettingsFile>
8 | 


--------------------------------------------------------------------------------
/src/Bloatynosy/Resources/AppIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/builtbybel/Bloatynosy/48d27896be3557e1878094b86362514b8ab6cbca/src/Bloatynosy/Resources/AppIcon.png


--------------------------------------------------------------------------------
/src/Bloatynosy/Resources/assetHeader.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/builtbybel/Bloatynosy/48d27896be3557e1878094b86362514b8ab6cbca/src/Bloatynosy/Resources/assetHeader.png


--------------------------------------------------------------------------------
/src/Bloatynosy/Resources/assetUAC.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/builtbybel/Bloatynosy/48d27896be3557e1878094b86362514b8ab6cbca/src/Bloatynosy/Resources/assetUAC.png


--------------------------------------------------------------------------------
/src/Bloatynosy/Resources/assetWaving.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/builtbybel/Bloatynosy/48d27896be3557e1878094b86362514b8ab6cbca/src/Bloatynosy/Resources/assetWaving.png


--------------------------------------------------------------------------------
/src/Bloatynosy/Views/AppIcon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/builtbybel/Bloatynosy/48d27896be3557e1878094b86362514b8ab6cbca/src/Bloatynosy/Views/AppIcon.png


--------------------------------------------------------------------------------
/src/Bloatynosy/Views/LoggerView.cs:
--------------------------------------------------------------------------------
  1 | using System;
  2 | using System.Diagnostics;
  3 | using System.Drawing;
  4 | using System.Windows.Forms;
  5 | 
  6 | namespace BloatynosyNue.Views
  7 | {
  8 |     public partial class LoggerView : UserControl
  9 |     {
 10 |         public LoggerView()
 11 |         {
 12 |             InitializeComponent();
 13 |             InitializeLocalizedStrings();
 14 |         }
 15 | 
 16 |         private void InitializeLocalizedStrings()
 17 |         {
 18 |             // Set localized strings for UI elements
 19 |             this.Text  =
 20 |             lblHeader.Text = BloatynosyNue.Locales.Strings.tt_btnLogger;
 21 |         }
 22 | 
 23 | 
 24 |         // Log to the RichTextBox
 25 |         public void AddLog(string message, Color color)
 26 |         {
 27 |             if (rtbLog.InvokeRequired)
 28 |             {
 29 |                 // Invoke on the UI thread
 30 |                 rtbLog.Invoke(new Action(() => AddLog(message, color)));
 31 |             }
 32 |             else
 33 |             {
 34 |                 // Perform changes directly on the UI thread
 35 |                 rtbLog.SelectionColor = color;
 36 |                 rtbLog.AppendText(message + Environment.NewLine);
 37 |                 rtbLog.ScrollToCaret();
 38 |             }
 39 |         }
 40 | 
 41 | 
 42 |         private void HighlightSearchResults(string searchText)
 43 |         {
 44 |             rtbLog.SelectAll();
 45 |             rtbLog.SelectionBackColor = Color.White; // Reset highlighting
 46 | 
 47 |             string logText = rtbLog.Text;
 48 |             int startIndex = 0;
 49 | 
 50 |             while ((startIndex = logText.IndexOf(searchText, startIndex, StringComparison.OrdinalIgnoreCase)) != -1)
 51 |             {
 52 |                 rtbLog.Select(startIndex, searchText.Length);
 53 |                 rtbLog.SelectionBackColor = Color.Black; // Highlighting
 54 |                 rtbLog.SelectionColor = Color.Yellow;
 55 |                 startIndex += searchText.Length;
 56 |             }
 57 | 
 58 |             rtbLog.DeselectAll();
 59 |         }
 60 | 
 61 |         private void textBoxSearch_TextChanged(object sender, EventArgs e)
 62 |         {
 63 |             string searchText = textBoxSearch.Text;
 64 | 
 65 |             if (string.IsNullOrWhiteSpace(searchText))
 66 |             {
 67 |                 // MessageBox.Show("Enter search term", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Information);
 68 |                 return;
 69 |             }
 70 | 
 71 |             HighlightSearchResults(searchText);
 72 |         }
 73 | 
 74 |         private void textBoxSearch_Click(object sender, EventArgs e)
 75 |         {
 76 |             textBoxSearch.Text = "";
 77 | 
 78 |             // Reset highlighting
 79 |             rtbLog.SelectAll();
 80 |             rtbLog.SelectionBackColor = Color.FromArgb(243, 243, 243);
 81 |             rtbLog.SelectionColor = Color.Black;
 82 |             rtbLog.DeselectAll();
 83 |         }
 84 | 
 85 |         // Event handler to open clicked links in the default browser
 86 |         private void rtbLog_LinkClicked(object sender, LinkClickedEventArgs e)
 87 |         {
 88 |             try
 89 |             {
 90 |                 Process.Start(new ProcessStartInfo
 91 |                 {
 92 |                     FileName = e.LinkText,
 93 |                     UseShellExecute = true
 94 |                 });
 95 |             }
 96 |             catch (Exception ex)
 97 |             {
 98 |                 MessageBox.Show(
quot;Failed to open link: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
 99 |             }
100 |         }
101 | 
102 |         private void btnAppDev_Click(object sender, EventArgs e)
103 |         {
104 |             Process.Start("https://github.com/builtbybel/Bloatynosy");
105 |         }
106 |     }
107 | }


--------------------------------------------------------------------------------
/src/Bloatynosy/app.manifest:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
 3 |   <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
 4 |   <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
 5 |     <security>
 6 |       <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
 7 |         <!-- UAC-Manifestoptionen
 8 |              Wenn Sie die Ebene der Benutzerkontensteuerung für Windows ändern möchten, ersetzen Sie den 
 9 |              Knoten "requestedExecutionLevel" wie folgt.
10 | 
11 |         <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
12 |         <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
13 |         <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />
14 | 
15 |             Durch Angabe des Elements "requestedExecutionLevel" wird die Datei- und Registrierungsvirtualisierung deaktiviert. 
16 |             Entfernen Sie dieses Element, wenn diese Virtualisierung aus Gründen der Abwärtskompatibilität
17 |             für die Anwendung erforderlich ist.
18 |         -->
19 |         <requestedExecutionLevel level="asInvoker" uiAccess="false" />
20 |       </requestedPrivileges>
21 |     </security>
22 |   </trustInfo>
23 | 
24 |   <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
25 |     <application>
26 |       <!-- Eine Liste der Windows-Versionen, unter denen diese Anwendung getestet
27 |            und für die sie entwickelt wurde. Wenn Sie die Auskommentierung der entsprechenden Elemente aufheben,
28 |            wird von Windows automatisch die kompatibelste Umgebung ausgewählt. -->
29 | 
30 |       <!-- Windows Vista -->
31 |       <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
32 | 
33 |       <!-- Windows 7 -->
34 |       <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
35 | 
36 |       <!-- Windows 8 -->
37 |       <!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
38 | 
39 |       <!-- Windows 8.1 -->
40 |       <!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
41 | 
42 |       <!-- Windows 10 -->
43 |       <!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
44 | 
45 |     </application>
46 |   </compatibility>
47 | 
48 |   <!-- Gibt an, dass die Anwendung mit DPI-Werten kompatibel ist und von Windows nicht automatisch auf höhere
49 |        DPI-Werte skaliert wird. WPF-Anwendungen (Windows Presentation Foundation) sind automatisch mit DPI-Werten kompatibel, eine Aktivierung 
50 |        ist nicht erforderlich. Für Windows Forms-Anwendungen für .NET Framework 4.6, die diese Einstellung aktivieren, muss 
51 |        auch die Einstellung "'EnableWindowsFormsHighDpiAutoResizing" in der Datei "app.config" auf TRUE festgelegt werden. 
52 |        
53 |        Hierdurch können für die Anwendung lange Pfade verwendet werden. Weitere Informationen finden Sie unter https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation.-->
54 | 
55 |   <application xmlns="urn:schemas-microsoft-com:asm.v3">
56 |     <windowsSettings>
57 |       <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
58 |       <longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
59 |     </windowsSettings>
60 |   </application>
61 | 
62 | 
63 |   <!-- Designs für allgemeine Windows-Steuerelemente und -Dialogfelder (Windows XP und höher) aktivieren -->
64 |   <!--
65 |   <dependency>
66 |     <dependentAssembly>
67 |       <assemblyIdentity
68 |           type="win32"
69 |           name="Microsoft.Windows.Common-Controls"
70 |           version="6.0.0.0"
71 |           processorArchitecture="*"
72 |           publicKeyToken="6595b64144ccf1df"
73 |           language="*"
74 |         />
75 |     </dependentAssembly>
76 |   </dependency>
77 |   -->
78 | 
79 | </assembly>
80 | 


--------------------------------------------------------------------------------
/src/Bloatynosy/packages.config:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <packages>
3 |   <package id="Newtonsoft.Json" version="13.0.3" targetFramework="net481" />
4 | </packages>


--------------------------------------------------------------------------------
/src/BloatynosyNue.sln:
--------------------------------------------------------------------------------
 1 | 
 2 | Microsoft Visual Studio Solution File, Format Version 12.00
 3 | # Visual Studio Version 17
 4 | VisualStudioVersion = 17.11.35327.3
 5 | MinimumVisualStudioVersion = 10.0.40219.1
 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BloatynosyNue", "BloatynosyNue\BloatynosyNue.csproj", "{73427BEC-FD4F-41FB-A985-66F0F36338C2}"
 7 | EndProject
 8 | Global
 9 | 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | 		Debug|Any CPU = Debug|Any CPU
11 | 		Release|Any CPU = Release|Any CPU
12 | 	EndGlobalSection
13 | 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | 		{73427BEC-FD4F-41FB-A985-66F0F36338C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | 		{73427BEC-FD4F-41FB-A985-66F0F36338C2}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | 		{73427BEC-FD4F-41FB-A985-66F0F36338C2}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 | 		{73427BEC-FD4F-41FB-A985-66F0F36338C2}.Release|Any CPU.Build.0 = Release|Any CPU
18 | 	EndGlobalSection
19 | 	GlobalSection(SolutionProperties) = preSolution
20 | 		HideSolutionNode = FALSE
21 | 	EndGlobalSection
22 | 	GlobalSection(ExtensibilityGlobals) = postSolution
23 | 		SolutionGuid = {C78E3EB9-497B-4DC2-8878-AB6E69EAEF46}
24 | 	EndGlobalSection
25 | EndGlobal
26 | 


--------------------------------------------------------------------------------
/src/Winpilot.sln:
--------------------------------------------------------------------------------
 1 | 
 2 | Microsoft Visual Studio Solution File, Format Version 12.00
 3 | # Visual Studio Version 17
 4 | VisualStudioVersion = 17.8.34330.188
 5 | MinimumVisualStudioVersion = 10.0.40219.1
 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Winpilot", "Winpilot\Winpilot.csproj", "{818AC686-C9FC-4092-8806-6E3994D9AF31}"
 7 | EndProject
 8 | Global
 9 | 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | 		Debug|Any CPU = Debug|Any CPU
11 | 		Release|Any CPU = Release|Any CPU
12 | 	EndGlobalSection
13 | 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | 		{818AC686-C9FC-4092-8806-6E3994D9AF31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | 		{818AC686-C9FC-4092-8806-6E3994D9AF31}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | 		{818AC686-C9FC-4092-8806-6E3994D9AF31}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 | 		{818AC686-C9FC-4092-8806-6E3994D9AF31}.Release|Any CPU.Build.0 = Release|Any CPU
18 | 	EndGlobalSection
19 | 	GlobalSection(SolutionProperties) = preSolution
20 | 		HideSolutionNode = FALSE
21 | 	EndGlobalSection
22 | 	GlobalSection(ExtensibilityGlobals) = postSolution
23 | 		SolutionGuid = {E0BA52A7-AD9F-44C0-BD92-59C3BC170260}
24 | 	EndGlobalSection
25 | EndGlobal
26 | 


--------------------------------------------------------------------------------
/src/Winpilot/App.config:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8" ?>
2 | <configuration>
3 |     <startup> 
4 |         <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
5 |     </startup>
6 | </configuration>


--------------------------------------------------------------------------------
/src/Winpilot/AppIcon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/builtbybel/Bloatynosy/48d27896be3557e1878094b86362514b8ab6cbca/src/Winpilot/AppIcon.ico


--------------------------------------------------------------------------------
/src/Winpilot/AppIconPNG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/builtbybel/Bloatynosy/48d27896be3557e1878094b86362514b8ab6cbca/src/Winpilot/AppIconPNG.png


--------------------------------------------------------------------------------
/src/Winpilot/Helpers/Logger.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Web.WebView2.WinForms;
 2 | using System;
 3 | using System.Collections.Generic;
 4 | using System.Drawing;
 5 | 
 6 | namespace Winpilot
 7 | {
 8 |     public class Logger
 9 |     {
10 |         private WebView2 webView;
11 | 
12 |         public Logger(WebView2 webView)
13 |         {
14 |             if (webView == null)
15 |             {
16 |                 // Handle the case where webView is null (e.g., log an error)
17 |                 return;
18 |             }
19 | 
20 |             this.webView = webView;
21 |         }
22 | 
23 |         // Log method for a single string
24 |         public void Log(string message, Color color)
25 |         {
26 |             if (webView.InvokeRequired)
27 |             {
28 |                 webView.Invoke(new Action(() => Log(message, color)));
29 |                 return;
30 |             }
31 | 
32 |             LogToWebView(message, color);
33 |         }
34 | 
35 |         // Helper method to add log entry to WebView2
36 |         public async void LogToWebView(string message, Color color)
37 |         {
38 |             // Clear log container before adding a new log
39 |             await webView.ExecuteScriptAsync(@"
40 |                 var logContainer = document.getElementById('logContainer');
41 |                 var assistedContainer = logContainer.querySelector('.assisted-container');
42 |                 var helpParagraph = logContainer.querySelector('p');
43 |                 logContainer.innerHTML = '';
44 |                 logContainer.appendChild(helpParagraph);
45 |                 logContainer.appendChild(assistedContainer);
46 |             ");
47 | 
48 |             string formattedMessage = 
quot;<div style='color:{ColorToHex(color)}'><strong>{message}</strong></div>";
49 | 
50 |             // Replace URLs with clickable links
51 |             formattedMessage = System.Text.RegularExpressions.Regex.Replace(formattedMessage,
52 |               @"<strong>(.*?)(https?://\S+)(.*?)</strong>",
53 |               match =>
54 |               {
55 |                   string beforeUrl = match.Groups[1].Value; // Capture text before URL
56 |                   string url = match.Groups[2].Value; // Capture URL
57 |                   string afterUrl = match.Groups[3].Value; // Capture text after URL
58 |                   return 
quot;<strong>{beforeUrl}<a href=\"{url}\" target=\"_blank\">{url}</a>{afterUrl}</strong>";
59 |               });
60 | 
61 |             webView.CoreWebView2.PostWebMessageAsString(formattedMessage);
62 | 
63 |             // Some JS to append formatted message to logContainer
64 |             await webView.ExecuteScriptAsync(
quot;document.getElementById('logContainer').innerHTML += '{formattedMessage}';");
65 | 
66 |             // Ensure log container is visible
67 |             await webView.ExecuteScriptAsync("document.getElementById('logContainer').style.display = 'block';");
68 | 
69 |             // Scroll down after adding new content to logContainer
70 |             await webView.ExecuteScriptAsync("scrollToBottom();");
71 |         }
72 | 
73 |         // Some Helpers to convert Color to hexadecimal
74 |         private string ColorToHex(Color color)
75 |         {
76 |             return 
quot;#{color.R:X2}{color.G:X2}{color.B:X2}";
77 |         }
78 |     }
79 | }


--------------------------------------------------------------------------------
/src/Winpilot/Helpers/Utils.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using System.Windows.Forms;
 3 | using System;
 4 | using System.Diagnostics;
 5 | 
 6 | namespace Winpilot
 7 | {
 8 |     internal class Utils
 9 |     {
10 |         // Check registry int equal
11 |         public static bool IntEquals(string keyName, string valueName, int expectedValue)
12 |         {
13 |             try
14 |             {
15 |                 var value = Registry.GetValue(keyName, valueName, null);
16 |                 return (value != null && (int)value == expectedValue);
17 |             
18 |             }
19 |             catch (Exception ex)
20 | 
21 |             {
22 |                 MessageBox.Show(keyName, ex.Message, MessageBoxButtons.OK);
23 |                 return false;
24 |             }
25 |         }
26 | 
27 |         // Check registry strings equal
28 |         public static bool StringEquals(string keyName, string valueName, string expectedValue)
29 |         {
30 |             try
31 |             {
32 |                 var value = Registry.GetValue(keyName, valueName, null);
33 |   
34 |                 return (value != null && (string)value == expectedValue);
35 |             }
36 |             catch (Exception ex)
37 |             {
38 |                 MessageBox.Show(keyName, ex.Message, MessageBoxButtons.OK);
39 |                 return false;
40 |             }
41 |         }
42 | 
43 |         public static bool KeyExists(string keyPath)
44 |         {
45 |             return Registry.GetValue(keyPath, null, null) != null;
46 |         }
47 | 
48 |         public static bool IsProcessRunning(string processName)
49 |         {
50 |             Process[] processes = Process.GetProcessesByName(processName);
51 |             return processes.Length > 0;
52 |         }
53 |     }
54 | }


--------------------------------------------------------------------------------
/src/Winpilot/Helpers/Views.cs:
--------------------------------------------------------------------------------
 1 | using Winpilot;
 2 | using System;
 3 | using System.Collections.Generic;
 4 | using System.Linq;
 5 | using System.Text;
 6 | using System.Threading.Tasks;
 7 | using System.Windows.Forms;
 8 | 
 9 | namespace Views
10 | {
11 |     public static class SwitchView
12 |     {
13 |         public static MainForm mainForm;
14 |         public static Control INavPage;
15 | 
16 |         public static void SetView(Control View)
17 |         {
18 |             var control = View as Control;
19 | 
20 |             control.Anchor = (AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom);
21 |             control.Dock = DockStyle.Fill;
22 |             INavPage.Anchor = (AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom);
23 |             INavPage.Dock = DockStyle.Fill;
24 | 
25 |             mainForm.pnlForm.Controls.Clear();
26 |             mainForm.pnlForm.Controls.Add(View);
27 |         }
28 | 
29 |         // Handle the back navigation
30 |         public static void SetMainFormAsView()
31 |         {
32 |             var mainForm = Application.OpenForms.OfType<MainForm>().Single();
33 |             mainForm.pnlForm.Controls.Clear();
34 |             if (INavPage != null) mainForm.pnlForm.Controls.Add(INavPage);
35 |         }
36 |     }
37 | }
38 | 


--------------------------------------------------------------------------------
/src/Winpilot/Interop/AIFeaturesHandler.cs:
--------------------------------------------------------------------------------
 1 | using Winpilot;
 2 | using Microsoft.Win32;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Interop
 7 | {
 8 |     public class AIFeaturesHandler
 9 |     {
10 |         private Logger logger;
11 | 
12 |         public AIFeaturesHandler(Logger logger)
13 |         {
14 |             this.logger = logger;
15 |         }
16 | 
17 |         // Check if a Windows AI feature is enabled based on reg settings
18 |         private bool IsWindowsAIFeatureEnabled(string registryPath, string valueName, int expectedValue)
19 |         {
20 |             try
21 |             {
22 |                 using (RegistryKey key = Registry.CurrentUser.OpenSubKey(registryPath))
23 |                 {
24 |                     if (key != null)
25 |                     {
26 |                         object value = key.GetValue(valueName);
27 |                         if (value != null && int.TryParse(value.ToString(), out int result))
28 |                         {
29 |                             return result == expectedValue;
30 |                         }
31 |                     }
32 |                 }
33 |             }
34 |             catch (Exception ex)
35 |             {
36 |                 logger.Log(
quot;Error reading registry: {ex.Message}", Color.Red);
37 |             }
38 |             return false;
39 |         }
40 | 
41 |         // Check if Copilot AI in Microsoft Edge browser is enabled
42 |         public bool IsCopilotInEdgeEnabled()
43 |         {
44 |             return IsWindowsAIFeatureEnabled(@"Software\Policies\Microsoft\Edge", "HubsSidebarEnabled", 1);
45 |         }
46 | 
47 |         // Check if Copilot AI in taskbar is enabled
48 |         public bool IsCopilotInTaskbarEnabled()
49 |         {
50 |             return !IsWindowsAIFeatureEnabled(@"Software\Policies\Microsoft\Windows", "TurnOffWindowsCopilot", 1);
51 |         }
52 | 
53 |         // Method to get the color based on AI feature status
54 |         public Color GetColorForAIFeature(bool featureEnabled)
55 |         {
56 |             return featureEnabled ? Color.Red : Color.DarkGreen;
57 |         }
58 | 
59 |         public void CheckAIFeatures()
60 |         {
61 |             bool copilotInEdgeEnabled = IsCopilotInEdgeEnabled();
62 |             logger.Log(copilotInEdgeEnabled ? "Copilot AI in Microsoft Edge browser is enabled." : "Copilot AI in Microsoft Edge browser is not enabled.", GetColorForAIFeature(copilotInEdgeEnabled));
63 | 
64 |             bool copilotInTaskbarEnabled = IsCopilotInTaskbarEnabled();
65 |             logger.Log(copilotInTaskbarEnabled ? "Copilot AI in the taskbar is enabled." : "Copilot AI in the taskbar is not enabled.", GetColorForAIFeature(copilotInTaskbarEnabled));
66 | 
67 | 
68 |             logger.Log("We've also spotted AI integration in the Microsoft Paint and Notepad apps and assisted AI in Winpilot.", Color.Gray);
69 |         }
70 |     }
71 | }


--------------------------------------------------------------------------------
/src/Winpilot/Interop/AppPackages.cs:
--------------------------------------------------------------------------------
 1 | using Winpilot;
 2 | using System;
 3 | using System.Diagnostics;
 4 | using System.Drawing;
 5 | 
 6 | namespace Interop
 7 | {
 8 |     public class AppPackages : InteropBase
 9 |     {
10 |         private string appId;
11 |         private string wingetId;
12 | 
13 |         // Default constructor without additional arguments
14 |         public AppPackages(MainForm form, Logger logger)
15 |             : base(form, logger)
16 |         {
17 |             // Default values......
18 |             this.appId = "defaultAppId";
19 |             this.wingetId = "defaultWingetId";
20 |         }
21 | 
22 |         // Constructor with additional arguments
23 |         public AppPackages(MainForm form, Logger logger, string appId, string wingetId)
24 |             : base(form, logger)
25 |         {
26 |             this.appId = appId;
27 |             this.wingetId = wingetId;
28 |         }
29 | 
30 |         public override void Execute()
31 |         {
32 |             try
33 |             {
34 |                 logger.Log(
quot;Installing {wingetId}...", Color.HotPink);
35 |                 var proc = new Process
36 |                 {
37 |                     StartInfo = new ProcessStartInfo
38 |                     {
39 |                         FileName = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\Microsoft\\WindowsApps\\wt.exe",
40 |                         Arguments = 
quot;winget install --id {wingetId} --accept-source-agreements --accept-package-agreements",
41 |                         UseShellExecute = false,
42 |                         CreateNoWindow = false,
43 |                     }
44 |                 };
45 | 
46 |                 proc.Start();
47 |                 proc.WaitForExit();
48 |             }
49 |             catch (Exception ex)
50 |             {
51 |                 logger.Log(
quot;Error installing {appId} with winget: {ex.Message}", Color.Red);
52 |             }
53 |         }
54 |     }
55 | }


--------------------------------------------------------------------------------
/src/Winpilot/Interop/ClippyConversationHandler.cs:
--------------------------------------------------------------------------------
 1 | // Obsolete: Remove Intelligent/ AI Actions
 2 | 
 3 | using Newtonsoft.Json;
 4 | using System;
 5 | using System.Collections.Generic;
 6 | using System.Drawing;
 7 | using System.IO;
 8 | using Winpilot;
 9 | 
10 | namespace Interop
11 | {
12 |     public class ClippyConversationHandler : InteropBase
13 |     {
14 |         private readonly Random random = new Random();
15 |         private readonly List<string> clippySayings;
16 |         private readonly List<string> aiSayings;
17 | 
18 |         public ClippyConversationHandler(MainForm form, Logger logger) : base(form, logger)
19 |         {
20 |             string jsonFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "app", "clippySayings.json");
21 | 
22 |             string jsonContent = File.ReadAllText(jsonFilePath);
23 |             var jsonData = JsonConvert.DeserializeObject<Dictionary<string, List<string>>>(jsonContent);
24 |             clippySayings = jsonData["clippySayings"];
25 |             aiSayings = jsonData["aiSayings"];
26 |         }
27 | 
28 |         // Clippy's Windows tips
29 |         public override void Execute()
30 |         {
31 |             int index = random.Next(clippySayings.Count);
32 |             string saying = clippySayings[index];
33 | 
34 |             Logger.Log(
quot;Clippy tip: {saying}", Color.Blue);
35 |         }
36 | 
37 |         // Clippy's random fun sayings
38 |         public void ShowPseudoAISayings()
39 |         {
40 |             int index = random.Next(aiSayings.Count);
41 |             string saying = aiSayings[index];
42 | 
43 |             Logger.Log(
quot;{saying}", Color.Black);
44 |         }
45 |     }
46 | }


--------------------------------------------------------------------------------
/src/Winpilot/Interop/DownloadHandler.cs:
--------------------------------------------------------------------------------
 1 | using System;
 2 | using System.Collections.Generic;
 3 | using System.Drawing;
 4 | using System.IO;
 5 | using System.Net;
 6 | using System.Threading.Tasks;
 7 | using Winpilot;
 8 | 
 9 | namespace Interop
10 | {
11 |     public class DownloadHandler
12 |     {
13 |         private Logger logger;
14 | 
15 |         public DownloadHandler(Logger logger)
16 |         {
17 |             this.logger = logger;
18 |         }
19 | 
20 |         // Downloader (e.g. Localization files and optional for downloading files)
21 |         public async Task DownloadFiles(Dictionary<string, string> downloadUri, string targetDirectory)
22 |         {
23 |             try
24 |             {
25 |                 foreach (var kvp in downloadUri)
26 |                 {
27 |                     string fileName = Path.GetFileName(kvp.Value);
28 |                     string filePath = Path.Combine(targetDirectory, fileName);
29 | 
30 |                     logger.Log(
quot;Downloading {fileName}...", Color.Magenta);
31 | 
32 |                     try
33 |                     {
34 |                         using (WebClient webClient = new WebClient())
35 |                         {
36 |                             // Subscribe to the DownloadProgressChanged event
37 |                             webClient.DownloadProgressChanged += (sender, e) =>
38 |                             {
39 |                                 // Report progress in real-time
40 |                                 int percentage = e.ProgressPercentage;
41 |                                 long totalBytesToReceive = e.TotalBytesToReceive;
42 |                                 long bytesReceived = e.BytesReceived;
43 | 
44 |                                 logger.Log(
quot;{fileName} - {percentage}% completed ({bytesReceived}/{totalBytesToReceive} bytes)", Color.Blue);
45 |                             };
46 | 
47 |                             // Download file asynchronously!
48 |                             await webClient.DownloadFileTaskAsync(new Uri(kvp.Value), filePath);
49 |                         }
50 | 
51 |                         // Done
52 |                         logger.Log(
quot;{fileName} downloaded successfully.", Color.Green);
53 |                     }
54 |                     catch (Exception ex)
55 |                     {
56 |                         logger.Log(
quot;Error downloading {fileName}: {ex.Message}", Color.Red);
57 |                     }
58 |                 }
59 | 
60 |                 // All done
61 |                 // logger.Log("Downloads completed.", Color.Magenta);
62 |             }
63 |             catch (Exception ex)
64 |             {
65 |                 logger.Log(
quot;Error in Downloader: {ex.Message}", Color.Red);
66 |             }
67 |         }
68 |     }
69 | }


--------------------------------------------------------------------------------
/src/Winpilot/Interop/ThemeSettings.cs:
--------------------------------------------------------------------------------
 1 | using Winpilot;
 2 | using Microsoft.Win32;
 3 | using System;
 4 | using System.Diagnostics;
 5 | using System.Drawing;
 6 | using System.Threading;
 7 | 
 8 | namespace Interop
 9 | {
10 |     public class ThemeSettings : InteropBase
11 |     {
12 |         public ThemeSettings(MainForm form, Logger logger) : base(form, logger)
13 |         {
14 |         }
15 | 
16 |         private const string RegistryKeyPath = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize";
17 |         private const string RegistryValueName = "AppsUseLightTheme";
18 | 
19 |         public void ToggleThemeMode()
20 |         {
21 |             try
22 |             {
23 |                 // Get current registry value
24 |                 int currentValue = (int)Registry.GetValue(RegistryKeyPath, RegistryValueName, -1);
25 | 
26 |                 // Toggle theme mode
27 |                 int newValue = (currentValue == 0) ? 1 : 0;
28 | 
29 |                 // Set new value
30 |                 Registry.SetValue(RegistryKeyPath, RegistryValueName, newValue, RegistryValueKind.DWord);
31 | 
32 |                 Logger.Log(newValue == 0 ? "Dark mode enabled." : "Light mode enabled.", Color.Black);
33 | 
34 |                 // Im delaying here restart to allow changes to take effect
35 |                 Thread.Sleep(1000);
36 | 
37 |                 RestartExplorer();
38 |             }
39 |             catch (Exception ex)
40 |             {
41 |                 Logger.Log(
quot;Error toggling theme mode: {ex.Message}", Color.Red);
42 |             }
43 |         }
44 | 
45 |         public override void Execute()
46 |         {
47 |             ToggleThemeMode();
48 |         }
49 | 
50 |         private void RestartExplorer()
51 |         {
52 |             try
53 |             {
54 |                 foreach (var process in Process.GetProcessesByName("explorer"))
55 |                 {
56 |                     process.Kill();
57 |                 }
58 | 
59 |                 Process.Start("explorer.exe");
60 |             }
61 |             catch (Exception ex)
62 |             {
63 |                 Logger.Log(
quot;Error restarting explorer.exe: {ex.Message}", Color.Red);
64 |             }
65 |         }
66 |     }
67 | }


--------------------------------------------------------------------------------
/src/Winpilot/Interop/WallpaperSettings.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using Winpilot;
 3 | using System;
 4 | using System.Collections.Generic;
 5 | using System.Drawing;
 6 | using System.IO;
 7 | using System.Linq;
 8 | using System.Runtime.InteropServices;
 9 | using System.Text;
10 | using System.Threading.Tasks;
11 | using System.Windows.Forms;
12 | 
13 | namespace Interop
14 | {
15 |     public class WallpaperSettings : InteropBase
16 |     {
17 |         public WallpaperSettings(MainForm form, Logger logger) : base(form, logger)
18 |         {
19 |         }
20 | 
21 |         private const int SPI_SETDESKWALLPAPER = 20;
22 |         private const int SPIF_UPDATEINIFILE = 0x01;
23 |         private const int SPIF_SENDWININICHANGE = 0x02;
24 | 
25 |         [DllImport("user32.dll", CharSet = CharSet.Auto)]
26 |         private static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);
27 | 
28 |         private string wallpaperPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\Microsoft\Windows\Themes\TranscodedWallpaper";
29 | 
30 |         public override void Execute()
31 |         {
32 |             if (File.Exists(wallpaperPath))
33 |             {
34 |                 OpenFileDialog openFileDialog = new OpenFileDialog();
35 |                 openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);
36 | 
37 |                 if (openFileDialog.ShowDialog() == DialogResult.OK)
38 |                 {
39 |                     RegistryKey keyName = Registry.CurrentUser.OpenSubKey(@"Control Panel\Desktop", true);
40 |                     keyName.SetValue(@"WallpaperStyle", 2.ToString());
41 |                     keyName.SetValue(@"TileWallpaper", 0.ToString());
42 | 
43 |                     SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, openFileDialog.FileName, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
44 |                 }
45 |             }
46 |             else
47 |             {
48 |                 logger.Log("Wallpaper file not found: " + wallpaperPath, Color.Red);
49 |             }
50 |         }
51 |     }
52 | }


--------------------------------------------------------------------------------
/src/Winpilot/InteropBase.cs:
--------------------------------------------------------------------------------
 1 | namespace Winpilot
 2 | {
 3 |     public abstract class InteropBase
 4 |     {
 5 |         protected readonly MainForm _form;
 6 |         protected readonly Logger logger;
 7 | 
 8 |         public Logger Logger => logger;
 9 | 
10 |         public InteropBase(MainForm form, Logger logger)
11 |         {
12 |             _form = form;
13 |             this.logger = logger;
14 |         }
15 | 
16 |         public abstract void Execute();
17 |     }
18 | }


--------------------------------------------------------------------------------
/src/Winpilot/MainForm.Designer.cs:
--------------------------------------------------------------------------------
 1 | namespace Winpilot
 2 | {
 3 |     partial class MainForm
 4 |     {
 5 |         /// <summary>
 6 |         /// Erforderliche Designervariable.
 7 |         /// </summary>
 8 |         private System.ComponentModel.IContainer components = null;
 9 | 
10 |         /// <summary>
11 |         /// Verwendete Ressourcen bereinigen.
12 |         /// </summary>
13 |         /// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
14 |         protected override void Dispose(bool disposing)
15 |         {
16 |             if (disposing && (components != null))
17 |             {
18 |                 components.Dispose();
19 |             }
20 |             base.Dispose(disposing);
21 |         }
22 | 
23 |         #region Vom Windows Form-Designer generierter Code
24 | 
25 |         /// <summary>
26 |         /// Erforderliche Methode für die Designerunterstützung.
27 |         /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
28 |         /// </summary>
29 |         private void InitializeComponent()
30 |         {
31 |             this.pnlForm = new System.Windows.Forms.Panel();
32 |             this.pnlMain = new System.Windows.Forms.Panel();
33 |             this.pnlForm.SuspendLayout();
34 |             this.SuspendLayout();
35 |             // 
36 |             // pnlForm
37 |             // 
38 |             this.pnlForm.Controls.Add(this.pnlMain);
39 |             this.pnlForm.Dock = System.Windows.Forms.DockStyle.Fill;
40 |             this.pnlForm.Location = new System.Drawing.Point(0, 0);
41 |             this.pnlForm.Name = "pnlForm";
42 |             this.pnlForm.Size = new System.Drawing.Size(483, 661);
43 |             this.pnlForm.TabIndex = 2;
44 |             // 
45 |             // pnlMain
46 |             // 
47 |             this.pnlMain.Dock = System.Windows.Forms.DockStyle.Fill;
48 |             this.pnlMain.Location = new System.Drawing.Point(0, 0);
49 |             this.pnlMain.Name = "pnlMain";
50 |             this.pnlMain.Size = new System.Drawing.Size(483, 661);
51 |             this.pnlMain.TabIndex = 0;
52 |             // 
53 |             // MainForm
54 |             // 
55 |             this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
56 |             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
57 |             this.ClientSize = new System.Drawing.Size(483, 661);
58 |             this.Controls.Add(this.pnlForm);
59 |             this.Name = "MainForm";
60 |             this.ShowIcon = false;
61 |             this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
62 |             this.Text = "Winpilot";
63 |             this.Shown += new System.EventHandler(this.MainForm_Shown);
64 |             this.pnlForm.ResumeLayout(false);
65 |             this.ResumeLayout(false);
66 | 
67 |         }
68 | 
69 |         #endregion
70 | 
71 |         private Microsoft.Web.WebView2.WinForms.WebView2 webView;
72 |         private System.Windows.Forms.Panel pnlMain;
73 |         public System.Windows.Forms.Panel pnlForm;
74 |     }
75 | }
76 | 
77 | 


--------------------------------------------------------------------------------
/src/Winpilot/Program.cs:
--------------------------------------------------------------------------------
 1 | using System;
 2 | using System.Windows.Forms;
 3 | 
 4 | namespace Winpilot
 5 | {
 6 |     internal static class Program
 7 |     {
 8 |         /// <summary>
 9 |         /// Get app version
10 |         /// </summary>
11 |         internal static string GetCurrentVersionTostring() => new Version(Application.ProductVersion).ToString(3);
12 | 
13 |         /// <summary>
14 |         /// The main entry point for the application.
15 |         /// </summary>
16 |         [STAThread]
17 |         private static void Main()
18 |         {
19 |             Application.EnableVisualStyles();
20 |             Application.SetCompatibleTextRenderingDefault(false);
21 |             Application.Run(new MainForm());
22 |         }
23 |     }
24 | }


--------------------------------------------------------------------------------
/src/Winpilot/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
 1 | using System.Reflection;
 2 | using System.Runtime.CompilerServices;
 3 | using System.Runtime.InteropServices;
 4 | 
 5 | // Allgemeine Informationen über eine Assembly werden über die folgenden
 6 | // Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
 7 | // die einer Assembly zugeordnet sind.
 8 | [assembly: AssemblyTitle("Winpilot")]
 9 | [assembly: AssemblyDescription("Your everyday Windows companion")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("Builtbybel")]
12 | [assembly: AssemblyProduct("Winpilot")]
13 | [assembly: AssemblyCopyright("Copyright ©  2024")]
14 | [assembly: AssemblyTrademark("A Belim app creation")]
15 | [assembly: AssemblyCulture("")]
16 | 
17 | // Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly
18 | // für COM-Komponenten unsichtbar.  Wenn Sie auf einen Typ in dieser Assembly von
19 | // COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen.
20 | [assembly: ComVisible(false)]
21 | 
22 | // Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
23 | [assembly: Guid("44cafceb-0f6d-487f-9f5f-63f230dbb069")]
24 | 
25 | // Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
26 | //
27 | //      Hauptversion
28 | //      Nebenversion
29 | //      Buildnummer
30 | //      Revision
31 | //
32 | // Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
33 | // indem Sie "*" wie unten gezeigt eingeben:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("2024.7.1")]
36 | [assembly: AssemblyFileVersion("2024.7.1")]
37 | 


--------------------------------------------------------------------------------
/src/Winpilot/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
 1 | //------------------------------------------------------------------------------
 2 | // <auto-generated>
 3 | //     Dieser Code wurde von einem Tool generiert.
 4 | //     Laufzeitversion:4.0.30319.42000
 5 | //
 6 | //     Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
 7 | //     der Code erneut generiert wird.
 8 | // </auto-generated>
 9 | //------------------------------------------------------------------------------
10 | 
11 | namespace Winpilot.Properties {
12 |     using System;
13 |     
14 |     
15 |     /// <summary>
16 |     ///   Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
17 |     /// </summary>
18 |     // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
19 |     // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
20 |     // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
21 |     // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
22 |     [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
23 |     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 |     [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 |     internal class Resources {
26 |         
27 |         private static global::System.Resources.ResourceManager resourceMan;
28 |         
29 |         private static global::System.Globalization.CultureInfo resourceCulture;
30 |         
31 |         [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 |         internal Resources() {
33 |         }
34 |         
35 |         /// <summary>
36 |         ///   Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
37 |         /// </summary>
38 |         [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 |         internal static global::System.Resources.ResourceManager ResourceManager {
40 |             get {
41 |                 if (object.ReferenceEquals(resourceMan, null)) {
42 |                     global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Winpilot.Properties.Resources", typeof(Resources).Assembly);
43 |                     resourceMan = temp;
44 |                 }
45 |                 return resourceMan;
46 |             }
47 |         }
48 |         
49 |         /// <summary>
50 |         ///   Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
51 |         ///   Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
52 |         /// </summary>
53 |         [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 |         internal static global::System.Globalization.CultureInfo Culture {
55 |             get {
56 |                 return resourceCulture;
57 |             }
58 |             set {
59 |                 resourceCulture = value;
60 |             }
61 |         }
62 |     }
63 | }
64 | 


--------------------------------------------------------------------------------
/src/Winpilot/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
 1 | //------------------------------------------------------------------------------
 2 | // <auto-generated>
 3 | //     Dieser Code wurde von einem Tool generiert.
 4 | //     Laufzeitversion:4.0.30319.42000
 5 | //
 6 | //     Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
 7 | //     der Code erneut generiert wird.
 8 | // </auto-generated>
 9 | //------------------------------------------------------------------------------
10 | 
11 | namespace Winpilot.Properties {
12 |     
13 |     
14 |     [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 |     [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.9.0.0")]
16 |     internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |         
18 |         private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |         
20 |         public static Settings Default {
21 |             get {
22 |                 return defaultInstance;
23 |             }
24 |         }
25 |     }
26 | }
27 | 


--------------------------------------------------------------------------------
/src/Winpilot/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 | <?xml version='1.0' encoding='utf-8'?>
2 | <SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
3 |   <Profiles>
4 |     <Profile Name="(Default)" />
5 |   </Profiles>
6 |   <Settings />
7 | </SettingsFile>
8 | 


--------------------------------------------------------------------------------
/src/Winpilot/Views/SettingsPageView.cs:
--------------------------------------------------------------------------------
 1 | using Winpilot;
 2 | using System;
 3 | using System.Collections.Generic;
 4 | using System.ComponentModel;
 5 | using System.Data;
 6 | using System.Diagnostics;
 7 | using System.Drawing;
 8 | using System.IO;
 9 | using System.Linq;
10 | using System.Text;
11 | using System.Threading.Tasks;
12 | using System.Windows.Forms;
13 | 
14 | namespace Views
15 | {
16 |     public partial class SettingsPageView : UserControl
17 |     {
18 |         public SettingsPageView()
19 |         {
20 |             InitializeComponent();
21 |         }
22 | 
23 |         private void SettingsPageView_Load(object sender, EventArgs e)
24 |         {
25 |             btnBack.Text = "\uE72B";
26 |             linkFollow.Text = "\uE8E1 GitHub";
27 |             lblVersion.Text = "Version " + Program.GetCurrentVersionTostring() + " Stargate";
28 |         }
29 | 
30 |         private void linkAppInfos_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
31 |              => Process.Start("https://www.builtbybel.com/blog/bloatynosy-is-now-winpilot");
32 | 
33 |         private void linkFollow_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
34 |             => Process.Start("https://github.com/builtbybel/Winpilot");
35 | 
36 |         private void linkCreditsAppIcon_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
37 |              => Process.Start("https://github.com/FireCubeStudios/Clippy/tree/master/Clippy/Assets/Clippy");
38 | 
39 |         private void btnBack_Click(object sender, EventArgs e)
40 |             => Views.SwitchView.SetMainFormAsView();
41 | 
42 |         private void linkLicensesClippit_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
43 |          => Process.Start("https://github.com/FireCubeStudios/Clippy/tree/master/Clippy/Assets/Clippy");
44 |     }
45 | }


--------------------------------------------------------------------------------
/src/Winpilot/Walks/AI/CopilotMSEdge.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using System;
 3 | using System.Drawing;
 4 | using Winpilot;
 5 | 
 6 | namespace Walks
 7 | {
 8 |     public class CopilotMSEdge : WalksBase
 9 |     {
10 |         public CopilotMSEdge(MainForm form, Logger logger) : base(form, logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Policies\Microsoft\Edge";
15 | 
16 |         public override string ID() => "Copilot in Edge";
17 | 
18 |         public override bool CheckFeature()
19 |         {
20 |             return Utils.IntEquals(keyName, "HubsSidebarEnabled", 1);
21 |         }
22 | 
23 |         public override bool DoFeature()
24 |         {
25 |             try
26 |             {
27 |                 Registry.SetValue(keyName, "HubsSidebarEnabled", 1, Microsoft.Win32.RegistryValueKind.DWord);
28 | 
29 |                 return true;
30 |             }
31 |             catch (Exception ex)
32 |             {
33 |                 logger.Log("Code red in " + ex.Message, Color.Red);
34 |             }
35 | 
36 |             return false;
37 |         }
38 | 
39 |         public override bool UndoFeature()
40 |         {
41 |             try
42 |             {
43 |                 Registry.SetValue(keyName, "HubsSidebarEnabled", 0, Microsoft.Win32.RegistryValueKind.DWord);
44 | 
45 |                 return true;
46 |             }
47 |             catch (Exception ex)
48 |             {
49 |                 logger.Log("Code red in " + ex.Message, Color.Red);
50 |             }
51 | 
52 |             return false;
53 |         }
54 |     }
55 | }


--------------------------------------------------------------------------------
/src/Winpilot/Walks/AI/CopilotTaskbar.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using System;
 3 | using System.Drawing;
 4 | using Winpilot;
 5 | 
 6 | namespace Walks
 7 | {
 8 |     public class CopilotTaskbar : WalksBase
 9 |     {
10 |         public CopilotTaskbar(MainForm form, Logger logger) : base(form, logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows";
15 | 
16 |         public override string ID() => "Copilot in Taskbar";
17 | 
18 |         public override bool CheckFeature()
19 |         {
20 |             return Utils.IntEquals(keyName, "TurnOffWindowsCopilot", 0);
21 |         }
22 | 
23 |         public override bool DoFeature()
24 |         {
25 |             try
26 |             {
27 |                 Registry.SetValue(keyName, "TurnOffWindowsCopilot", 0, Microsoft.Win32.RegistryValueKind.DWord);
28 | 
29 |                 return true;
30 |             }
31 |             catch (Exception ex)
32 |             {
33 |                 logger.Log("Code red in " + ex.Message, Color.Red);
34 |             }
35 | 
36 |             return false;
37 |         }
38 | 
39 |         public override bool UndoFeature()
40 |         {
41 |             try
42 |             {
43 |                 Registry.SetValue(keyName, "TurnOffWindowsCopilot", 1, Microsoft.Win32.RegistryValueKind.DWord);
44 | 
45 |                 return true;
46 |             }
47 |             catch (Exception ex)
48 |             {
49 |                 logger.Log("Code red in " + ex.Message, Color.Red);
50 |             }
51 | 
52 |             return false;
53 |         }
54 |     }
55 | }


--------------------------------------------------------------------------------
/src/Winpilot/Walks/Ads/FileExplorerAds.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using Winpilot;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Walks
 7 | {
 8 |     internal class FileExplorerAds : WalksBase
 9 |     {
10 |         public FileExplorerAds(MainForm form, Logger logger) : base(form, logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced";
15 |         private const int desiredValue = 0;
16 | 
17 |         public override string ID()
18 |         {
19 |             return "File Explorer Ads";
20 |         }
21 | 
22 |         public override bool CheckFeature()
23 |         {
24 |             return !(
25 |                    Utils.IntEquals(keyName, "ShowSyncProviderNotifications", desiredValue)
26 |              );
27 |         }
28 | 
29 |         public override bool DoFeature()
30 |         {
31 |             try
32 |             {
33 |                 Registry.SetValue(keyName, "ShowSyncProviderNotifications", 1, RegistryValueKind.DWord);
34 |                 return true;
35 | 
36 |             }
37 |             catch (Exception ex)
38 |             {
39 |                 logger.Log("Code red in " + ex.Message, Color.Red);
40 |             }
41 | 
42 |             return false;
43 |         }
44 | 
45 |         public override bool UndoFeature()
46 |         {
47 |             try
48 |             {
49 |                 Registry.SetValue(keyName, "ShowSyncProviderNotifications", desiredValue, RegistryValueKind.DWord);
50 |                 return true;
51 |             }
52 |             catch (Exception ex)
53 |             {
54 |                 logger.Log("Code red in " + ex.Message, Color.Red);
55 |             }
56 | 
57 |             return false;
58 |         }
59 |     }
60 | }


--------------------------------------------------------------------------------
/src/Winpilot/Walks/Ads/FinishSetupAds.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using System;
 3 | using System.Drawing;
 4 | using Winpilot;
 5 | 
 6 | namespace Walks
 7 | {
 8 |     public class FinishSetupAds : WalksBase
 9 |     {
10 |         public FinishSetupAds(MainForm form, Logger logger) : base(form, logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\UserProfileEngagement";
15 |         private const int desiredValue = 0;
16 | 
17 |         public override string ID() => "Finish Setup Ads";
18 | 
19 |         public override bool CheckFeature()
20 |         {
21 |             return !Utils.IntEquals(keyName, "ScoobeSystemSettingEnabled", 0);
22 |         }
23 | 
24 |         public override bool DoFeature()
25 |         {
26 |             try
27 |             {
28 |                 Registry.SetValue(keyName, "ScoobeSystemSettingEnabled", 1, Microsoft.Win32.RegistryValueKind.DWord);
29 | 
30 |                 return true;
31 |             }
32 |             catch (Exception ex)
33 |             {
34 |                 logger.Log("Code red in " + ex.Message, Color.Red);
35 |             }
36 | 
37 |             return false;
38 |         }
39 | 
40 |         public override bool UndoFeature()
41 |         {
42 |             try
43 |             {
44 |                 Registry.SetValue(keyName, "ScoobeSystemSettingEnabled", 0, Microsoft.Win32.RegistryValueKind.DWord);
45 | 
46 |                 return true;
47 |             }
48 |             catch (Exception ex)
49 |             {
50 |                 logger.Log("Code red in " + ex.Message, Color.Red);
51 |             }
52 | 
53 |             return false;
54 |         }
55 |     }
56 | }


--------------------------------------------------------------------------------
/src/Winpilot/Walks/Ads/LockScreenAds.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using System;
 3 | using System.Drawing;
 4 | using Winpilot;
 5 | 
 6 | namespace Walks
 7 | {
 8 |     internal class LockScreenAds : WalksBase
 9 |     {
10 |         public LockScreenAds(MainForm form, Logger logger) : base(form, logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager";
15 |         private const int desiredValue = 0;
16 | 
17 |         public override string ID() => "Lock Screen Tips and Ads";
18 | 
19 |         public override bool CheckFeature()
20 |         {
21 |             return !(Utils.IntEquals(keyName, "RotatingLockScreenOverlayEnabled", desiredValue) &&
22 |                    Utils.IntEquals(keyName, "SubscribedContent-338387Enabled", desiredValue)
23 |             );
24 |         }
25 | 
26 | 
27 |         public override bool DoFeature()
28 |         {
29 |             try
30 |             {
31 |                 Registry.SetValue(keyName, "RotatingLockScreenOverlayEnabled", 1, Microsoft.Win32.RegistryValueKind.DWord);
32 |                 Registry.SetValue(keyName, "SubscribedContent-338387Enabled", 1, Microsoft.Win32.RegistryValueKind.DWord);
33 | 
34 |                 return true;
35 |             }
36 |             catch (Exception ex)
37 |             {
38 |                 logger.Log("Code red in " + ex.Message, Color.Red);
39 |             }
40 | 
41 |             return false;
42 |         }
43 | 
44 |         public override bool UndoFeature()
45 |         {
46 |             try
47 |             {
48 |                 Registry.SetValue(keyName, "RotatingLockScreenOverlayEnabled", desiredValue, Microsoft.Win32.RegistryValueKind.DWord);
49 |                 Registry.SetValue(keyName, "SubscribedContent-338387Enabled", desiredValue, Microsoft.Win32.RegistryValueKind.DWord);
50 | 
51 |                 return true;
52 |             }
53 |             catch (Exception ex)
54 |             {
55 |                 logger.Log("Code red in " + ex.Message, Color.Red);
56 |             }
57 | 
58 |             return false;
59 |         }
60 |     }
61 | }


--------------------------------------------------------------------------------
/src/Winpilot/Walks/Ads/PersonalizedAds.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using Winpilot;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Walks
 7 | {
 8 |     public class PersonalizedAds: WalksBase
 9 |     {
10 |         public PersonalizedAds(MainForm form, Logger logger) : base(form, logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\AdvertisingInfo";
15 |         private const int desiredValue = 0;
16 | 
17 |         public override string ID() => "Personalized Ads";
18 | 
19 |         public override bool CheckFeature()
20 |         {
21 |             return !Utils.IntEquals(keyName, "Enabled", 0);
22 |         }
23 | 
24 |         public override bool DoFeature()
25 |         {
26 |             try
27 |             {
28 |                 Registry.SetValue(keyName, "Enabled", 1, Microsoft.Win32.RegistryValueKind.DWord);
29 | 
30 |                 return true;
31 |             }
32 |             catch (Exception ex)
33 |             {
34 |                 logger.Log("Code red in " + ex.Message, Color.Red);
35 |             }
36 | 
37 |             return false;
38 |         }
39 | 
40 |         public override bool UndoFeature()
41 |         {
42 |             try
43 |             {
44 |                 Registry.SetValue(keyName, "Enabled", 0, Microsoft.Win32.RegistryValueKind.DWord);
45 | 
46 |                 return true;
47 |             }
48 |             catch (Exception ex)
49 |             {
50 |                 logger.Log("Code red in " + ex.Message, Color.Red);
51 |             }
52 | 
53 |             return false;
54 |         }
55 |     }
56 | }


--------------------------------------------------------------------------------
/src/Winpilot/Walks/Ads/SettingsAds.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using System;
 3 | using System.Drawing;
 4 | using Winpilot;
 5 | 
 6 | namespace Walks
 7 | {
 8 |     internal class SettingsAds : WalksBase
 9 |     {
10 |         public SettingsAds(MainForm form, Logger logger) : base(form, logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager";
15 |         private const int desiredValue = 0;
16 | 
17 |         public override string ID() => "Settings Ads";
18 | 
19 |         public override bool CheckFeature()
20 |         {
21 |             return !(Utils.IntEquals(keyName, "SubscribedContent-338393Enabled", desiredValue) &&
22 |                    Utils.IntEquals(keyName, "SubscribedContent-353694Enabled", desiredValue) &&
23 |                    Utils.IntEquals(keyName, "SubscribedContent-353696Enabled", desiredValue)
24 |             );
25 |         }
26 |    
27 | 
28 |         public override bool DoFeature()
29 |         {
30 |             try
31 |             {
32 |                 Registry.SetValue(keyName, "SubscribedContent-338393Enabled", 1, Microsoft.Win32.RegistryValueKind.DWord); 
33 |                 Registry.SetValue(keyName, "SubscribedContent-353694Enabled", 1, Microsoft.Win32.RegistryValueKind.DWord); 
34 |                 Registry.SetValue(keyName, "SubscribedContent-353696Enabled", 1, Microsoft.Win32.RegistryValueKind.DWord);
35 | 
36 |                 return true;
37 |             }
38 |             catch (Exception ex)
39 |             {
40 |                 logger.Log("Code red in " + ex.Message, Color.Red);
41 |             }
42 | 
43 |             return false;
44 |         }
45 | 
46 |         public override bool UndoFeature()
47 |         {
48 |             try
49 |             {
50 |                 Registry.SetValue(keyName, "SubscribedContent-338393Enabled", desiredValue, Microsoft.Win32.RegistryValueKind.DWord);
51 |                 Registry.SetValue(keyName, "SubscribedContent-353694Enabled", desiredValue, Microsoft.Win32.RegistryValueKind.DWord);
52 |                 Registry.SetValue(keyName, "SubscribedContent-353696Enabled", desiredValue, Microsoft.Win32.RegistryValueKind.DWord);
53 | 
54 |                 return true;
55 |             }
56 |             catch (Exception ex)
57 |             {
58 |                 logger.Log("Code red in " + ex.Message, Color.Red);
59 |             }
60 | 
61 |             return false;
62 |         }
63 |     }
64 | }


--------------------------------------------------------------------------------
/src/Winpilot/Walks/Ads/StartmenuAds.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using Winpilot;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Walks
 7 | {
 8 |     internal class StartmenuAds : WalksBase
 9 |     {
10 |         public StartmenuAds(MainForm form, Logger logger) : base(form, logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced";
15 |         private const int desiredValue = 0;
16 | 
17 |         public override string ID()
18 |         {
19 |             return "Start menu Ads";
20 |         }
21 | 
22 |         public override bool CheckFeature()
23 |         {
24 |             return !(
25 |                    Utils.IntEquals(keyName, "Start_IrisRecommendations", desiredValue)
26 |              );
27 |         }
28 | 
29 |         public override bool DoFeature()
30 |         {
31 |             try
32 |             {
33 |                 Registry.SetValue(keyName, "Start_IrisRecommendations",1, RegistryValueKind.DWord);
34 |                 return true;
35 | 
36 |             }
37 |             catch (Exception ex)
38 |             {
39 |                 logger.Log("Code red in " + ex.Message, Color.Red);
40 |             }
41 | 
42 |             return false;
43 |         }
44 | 
45 |         public override bool UndoFeature()
46 |         {
47 |             try
48 |             {
49 |                 Registry.SetValue(keyName, "Start_IrisRecommendations", desiredValue, RegistryValueKind.DWord);
50 |                 return true;
51 |             }
52 |             catch (Exception ex)
53 |             {
54 |                 logger.Log("Code red in " + ex.Message, Color.Red);
55 |             }
56 | 
57 |             return false;
58 |         }
59 |     }
60 | }


--------------------------------------------------------------------------------
/src/Winpilot/Walks/Ads/TailoredExperiences.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using Winpilot;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Walks
 7 | {
 8 |     internal class TailoredExperiences : WalksBase
 9 |     {
10 |         public TailoredExperiences(MainForm form, Logger logger) : base(form, logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Privacy";
15 |         private const int desiredValue = 0;
16 | 
17 |         public override string ID()
18 |         {
19 |             return "Tailored experiences";
20 |         }
21 | 
22 |         public override bool CheckFeature()
23 |         {
24 |             return !(
25 |                    Utils.IntEquals(keyName, "TailoredExperiencesWithDiagnosticDataEnabled", desiredValue)
26 |              );
27 |         }
28 | 
29 |         public override bool DoFeature()
30 |         {
31 |             try
32 |             {
33 |                 Registry.SetValue(keyName, "TailoredExperiencesWithDiagnosticDataEnabled", 1, RegistryValueKind.DWord);
34 |                 return true;
35 | 
36 |             }
37 |             catch (Exception ex)
38 |             {
39 |                 logger.Log("Code red in " + ex.Message, Color.Red);
40 |             }
41 | 
42 |             return false;
43 |         }
44 | 
45 |         public override bool UndoFeature()
46 |         {
47 |             try
48 |             {
49 |                 Registry.SetValue(keyName, "TailoredExperiencesWithDiagnosticDataEnabled", desiredValue, RegistryValueKind.DWord);
50 |                 return true;
51 |             }
52 |             catch (Exception ex)
53 |             {
54 |                 logger.Log("Code red in " + ex.Message, Color.Red);
55 |             }
56 | 
57 |             return false;
58 |         }
59 |     }
60 | }


--------------------------------------------------------------------------------
/src/Winpilot/Walks/Ads/TipsAndSuggestions.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using System;
 3 | using System.Drawing;
 4 | using Winpilot;
 5 | 
 6 | namespace Walks
 7 | {
 8 |     internal class TipsAndSuggestions : WalksBase
 9 |     {
10 |         public TipsAndSuggestions(MainForm form, Logger logger) : base(form, logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager";
15 |         private const int desiredValue = 0;
16 | 
17 |         public override string ID() => "General Tips and Ads";
18 | 
19 |         public override bool CheckFeature()
20 |         {
21 |             return !(Utils.IntEquals(keyName, "SubscribedContent-338389Enabled", desiredValue)
22 |                  );
23 |         }
24 | 
25 |         public override bool DoFeature()
26 |         {
27 |             try
28 |             {
29 |                 Registry.SetValue(keyName, "SubscribedContent-338389Enabled", 1, Microsoft.Win32.RegistryValueKind.DWord);
30 | 
31 |                 return true;
32 |             }
33 |             catch (Exception ex)
34 |             {
35 |                 logger.Log("Code red in " + ex.Message, Color.Red);
36 |             }
37 | 
38 |             return false;
39 |         }
40 | 
41 |         public override bool UndoFeature()
42 |         {
43 |             try
44 |             {
45 |                 Registry.SetValue(keyName, "SubscribedContent-338389Enabled", desiredValue, Microsoft.Win32.RegistryValueKind.DWord);
46 | 
47 |                 return true;
48 |             }
49 |             catch (Exception ex)
50 |             {
51 |                 logger.Log("Code red in " + ex.Message, Color.Red);
52 |             }
53 | 
54 |             return false;
55 |         }
56 |     }
57 | }


--------------------------------------------------------------------------------
/src/Winpilot/Walks/Ads/WelcomeExperienceAds.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using Winpilot;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Walks
 7 | {
 8 |     public class WelcomeExperienceAds : WalksBase
 9 |     {
10 |         public WelcomeExperienceAds(MainForm form, Logger logger) : base(form, logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager";
15 |         private const int desiredValue = 0;
16 | 
17 |         public override string ID() => "Welcome Experience Ads";
18 | 
19 |         public override bool CheckFeature()
20 |         {
21 |             return !Utils.IntEquals(keyName, "SubscribedContent-310093Enabled", 0);
22 |         }
23 | 
24 |         public override bool DoFeature()
25 |         {
26 |             try
27 |             {
28 |                 Registry.SetValue(keyName, "SubscribedContent-310093Enabled", 1, Microsoft.Win32.RegistryValueKind.DWord);
29 | 
30 |                 return true;
31 |             }
32 |             catch (Exception ex)
33 |             {
34 |                 logger.Log("Code red in " + ex.Message, Color.Red);
35 |             }
36 | 
37 |             return false;
38 |         }
39 | 
40 |         public override bool UndoFeature()
41 |         {
42 |             try
43 |             {
44 |                 Registry.SetValue(keyName, "SubscribedContent-310093Enabled", 0, Microsoft.Win32.RegistryValueKind.DWord);
45 | 
46 |                 return true;
47 |             }
48 |             catch (Exception ex)
49 |             {
50 |                 logger.Log("Code red in " + ex.Message, Color.Red);
51 |             }
52 | 
53 |             return false;
54 |         }
55 |     }
56 | }


--------------------------------------------------------------------------------
/src/Winpilot/Walks/Gaming/GameDVR.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using Winpilot;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Walks
 7 | {
 8 |     public class GameDVR: WalksBase
 9 |     {
10 |         public GameDVR(MainForm form, Logger logger) : base(form, logger)
11 |         {
12 |         }
13 |         private const string keyName = @"HKEY_CURRENT_USER\System\GameConfigStore";
14 |         private const string keyName2 = @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\default\ApplicationManagement\AllowGameDVR";
15 | 
16 |         public override string ID() => "GameDVR";
17 | 
18 | 
19 |         public override bool CheckFeature()
20 |         {
21 |             return Utils.IntEquals(keyName, "GameDVR_Enabled", 1) &&
22 |                     Utils.IntEquals(keyName, "GameDVR_FSEBehaviorMode", 0) &&
23 |                     Utils.IntEquals(keyName2, "value", 1);
24 |         }
25 | 
26 |         public override bool DoFeature()
27 |         {
28 |             try
29 |             {
30 |                 Registry.SetValue(keyName, "GameDVR_Enabled", 1, RegistryValueKind.DWord);
31 |                 Registry.SetValue(keyName, "GameDVR_FSEBehaviorMode",0 , RegistryValueKind.DWord);
32 |                 Registry.SetValue(keyName2, "value", 1, RegistryValueKind.DWord);
33 | 
34 | 
35 |                 return true;
36 |             }
37 |             catch (Exception ex)
38 |             {
39 |                 logger.Log("Code red in " + ex.Message, Color.Red);
40 |             }
41 | 
42 |             return false;
43 |         }
44 | 
45 |         public override bool UndoFeature()
46 |         {
47 |             try
48 |             {
49 |                 Registry.SetValue(keyName, "GameDVR_Enabled", 0, RegistryValueKind.DWord);
50 |                 Registry.SetValue(keyName, "GameDVR_FSEBehaviorMode", 2, RegistryValueKind.DWord);
51 |                 Registry.SetValue(keyName2, "value", 0, RegistryValueKind.DWord);
52 | 
53 |                 return true;
54 |             }
55 |             catch (Exception ex)
56 |             {
57 |                 logger.Log("Code red in " + ex.Message, Color.Red);
58 |             }
59 | 
60 |             return false;
61 |         }
62 |     }
63 | }


--------------------------------------------------------------------------------
/src/Winpilot/Walks/Gaming/PowerThrottling.cs:
--------------------------------------------------------------------------------
 1 | using Winpilot;
 2 | using Microsoft.Win32;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Walks
 7 | {
 8 |     public class PowerThrottling : WalksBase
 9 |     {
10 |         public PowerThrottling(MainForm form, Logger logger) : base(form, logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerThrottling";
15 | 
16 |         public override string ID() => "PowerThrottling";
17 | 
18 |         public override bool CheckFeature()
19 |         {
20 |             return !Utils.IntEquals(keyName, "PowerThrottlingOff", 1);
21 |         }
22 | 
23 |         public override bool DoFeature()
24 |         {
25 |             try
26 |             {
27 |                 Registry.SetValue(keyName, "PowerThrottlingOff", 0, Microsoft.Win32.RegistryValueKind.DWord);
28 | 
29 |                 return true;
30 |             }
31 |             catch (Exception ex)
32 |             {
33 |                 logger.Log("Code red in " + ex.Message, Color.Red);
34 |             }
35 | 
36 |             return false;
37 |         }
38 | 
39 |         public override bool UndoFeature()
40 |         {
41 |             try
42 |             {
43 |                 Registry.SetValue(keyName, "PowerThrottlingOff", 1, Microsoft.Win32.RegistryValueKind.DWord);
44 | 
45 |                 return true;
46 |             }
47 |             catch (Exception ex)
48 |             {
49 |                 logger.Log("Code red in " + ex.Message, Color.Red);
50 |             }
51 | 
52 |             return false;
53 |         }
54 |     }
55 | }


--------------------------------------------------------------------------------
/src/Winpilot/Walks/Gaming/VisualFX.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using Winpilot;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Walks
 7 | {
 8 |     public class VisualFX: WalksBase
 9 |     {
10 |         public VisualFX(MainForm form, Logger logger) : base(form, logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects";
15 |         private const int desiredValue = 2;
16 | 
17 |         public override string ID() => "VisualFX";
18 |       
19 | 
20 |         public override bool CheckFeature()
21 |         {
22 |             return Utils.IntEquals(keyName, "VisualFXSetting", desiredValue);
23 |         }
24 | 
25 |         public override bool DoFeature()
26 |         {
27 |             try
28 |             {
29 |                 Registry.SetValue(keyName, "VisualFXSetting", 2, RegistryValueKind.DWord);
30 | 
31 |                 return true;
32 |             }
33 |             catch (Exception ex)
34 |             {
35 |                 logger.Log("Code red in " + ex.Message, Color.Red);
36 |             }
37 | 
38 |             return false;
39 |         }
40 | 
41 |         public override bool UndoFeature()
42 |         {
43 |             try
44 |             {
45 |                 Registry.SetValue(keyName, "VisualFXSetting", 0, RegistryValueKind.DWord);
46 | 
47 |                 return true;
48 |             }
49 |             catch (Exception ex)
50 |             {
51 |                 logger.Log("Code red in " + ex.Message, Color.Red);
52 |             }
53 | 
54 |             return false;
55 |         }
56 |     }
57 | }


--------------------------------------------------------------------------------
/src/Winpilot/Walks/Privacy/BackgroundApps.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using Winpilot;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Walks
 7 | {
 8 |     internal class BackgroundApps : WalksBase
 9 |     {
10 |         public BackgroundApps(MainForm form, Logger logger) : base(form, logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\BackgroundAccessApplications";
15 |         private const int desiredValue = 1;
16 | 
17 |         public override string ID()
18 |         {
19 |             return "Running apps in background";
20 |         }
21 | 
22 |         public override bool CheckFeature()
23 |         {
24 |             return !(
25 |                    Utils.IntEquals(keyName, "GlobalUserDisabled", desiredValue)
26 |              );
27 |         }
28 | 
29 |         public override bool DoFeature()
30 |         {
31 |             try
32 |             {
33 |                 Registry.SetValue(keyName, "GlobalUserDisabled", 0, RegistryValueKind.DWord);
34 |                 return true;
35 |             }
36 |             catch (Exception ex)
37 |             {
38 |                 logger.Log("Code red in " + ex.Message, Color.Red);
39 |             }
40 | 
41 |             return false;
42 |         }
43 | 
44 |         public override bool UndoFeature()
45 |         {
46 |             try
47 |             {
48 |                 Registry.SetValue(keyName, "GlobalUserDisabled", desiredValue, RegistryValueKind.DWord);
49 | 
50 |                 return true;
51 |             }
52 |             catch (Exception ex)
53 |             {
54 |                 logger.Log("Code red in " + ex.Message, Color.Red);
55 |             }
56 | 
57 |             return false;
58 |         }
59 |     }
60 | }


--------------------------------------------------------------------------------
/src/Winpilot/Walks/Privacy/DiagnosticData.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using Winpilot;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Walks
 7 | {
 8 |     internal class DiagnosticData : WalksBase
 9 |     {
10 |         public DiagnosticData(MainForm form, Logger logger) : base(form, logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Privacy";
15 | 
16 |         public override string ID()
17 |         {
18 |             return "Diagnostic data";
19 |         }
20 | 
21 |         public override bool CheckFeature()
22 |         {
23 |             return !(
24 |             Utils.IntEquals(keyName, "TailoredExperiencesWithDiagnosticDataEnabled", 0)
25 |             );
26 |         }
27 | 
28 |         public override bool DoFeature()
29 |         {
30 |             try
31 |             {
32 |                 Registry.SetValue(keyName, "TailoredExperiencesWithDiagnosticDataEnabled", 1, RegistryValueKind.DWord);
33 | 
34 |                 return true;
35 |             }
36 |             catch (Exception ex)
37 |             {
38 |                 logger.Log("Code red in " + ex.Message, Color.Red);
39 |             }
40 |             return false;
41 |         }
42 | 
43 |         public override bool UndoFeature()
44 |         {
45 |             try
46 |             {
47 |                 Registry.SetValue(keyName, "TailoredExperiencesWithDiagnosticDataEnabled", 0, RegistryValueKind.DWord);
48 | 
49 |                 return true;
50 |             }
51 |             catch (Exception ex)
52 |             {
53 |                 logger.Log("Code red in " + ex.Message, Color.Red);
54 |             }
55 | 
56 |             return false;
57 |         }
58 |     }
59 | }


--------------------------------------------------------------------------------
/src/Winpilot/Walks/Privacy/FindMyDevice.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using Winpilot;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Walks
 7 | {
 8 |     internal class FindMyDevice : WalksBase
 9 |     {
10 |         public FindMyDevice(MainForm form, Logger logger) : base(form, logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\location";
15 |         private const string desiredValue = @"Deny";
16 | 
17 |         public override string ID()
18 |         {
19 |             return "Find my device";
20 |         }
21 | 
22 |         public override bool CheckFeature()
23 |         {
24 |             return !(
25 |                   Utils.StringEquals(keyName, "Value", desiredValue)
26 |             );
27 |         }
28 | 
29 |         public override bool DoFeature()
30 |         {
31 |             try
32 |             {
33 |                 Registry.SetValue(keyName, "Value", "Allow", RegistryValueKind.String);
34 |                 return true;
35 |             }
36 |             catch (Exception ex)
37 |             {
38 |                 logger.Log("Code red in " + ex.Message, Color.Red);
39 |             }
40 | 
41 |             return false;
42 |         }
43 | 
44 |         public override bool UndoFeature()
45 |         {
46 |             try
47 |             {
48 |                 Registry.SetValue(keyName, "Value", desiredValue, RegistryValueKind.String);
49 | 
50 |                 return true;
51 |             }
52 |             catch (Exception ex)
53 |             {
54 |                 logger.Log("Code red in " + ex.Message, Color.Red);
55 |             }
56 | 
57 |             return false;
58 |         }
59 |     }
60 | }


--------------------------------------------------------------------------------
/src/Winpilot/Walks/Privacy/PrivacyExperience.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using Winpilot;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Walks
 7 | {
 8 |     public class PrivacyExperience : WalksBase
 9 |     {
10 |         public PrivacyExperience(MainForm form, Logger logger) : base(form, logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\OOBE";
15 |         private const int desiredValue = 1;
16 | 
17 |         public override string ID() => "Privacy Settings Experience at sign-in";
18 | 
19 |         public override bool CheckFeature()
20 |         {
21 |             return !Utils.IntEquals(keyName, "DisablePrivacyExperience", desiredValue);
22 |         }
23 | 
24 |         public override bool DoFeature()
25 |         {
26 |             try
27 |             {
28 |                 Registry.SetValue(keyName, "DisablePrivacyExperience", 0, Microsoft.Win32.RegistryValueKind.DWord);
29 | 
30 |                 return true;
31 |             }
32 |             catch (Exception ex)
33 |             {
34 |                 logger.Log("Code red in " + ex.Message, Color.Red);
35 |             }
36 | 
37 |             return false;
38 |         }
39 | 
40 |         public override bool UndoFeature()
41 |         {
42 |             try
43 |             {
44 |                 Registry.SetValue(keyName, "DisablePrivacyExperience", 1, Microsoft.Win32.RegistryValueKind.DWord);
45 | 
46 |                 return true;
47 |             }
48 |             catch (Exception ex)
49 |             {
50 |                 logger.Log("Code red in " + ex.Message, Color.Red);
51 |             }
52 | 
53 |             return false;
54 |         }
55 |     }
56 | }


--------------------------------------------------------------------------------
/src/Winpilot/Walks/Privacy/Telemetry.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using Winpilot;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Walks
 7 | {
 8 |     public class Telemetry : WalksBase
 9 |     {
10 |         public Telemetry(MainForm form, Logger logger) : base(form, logger)
11 |         {
12 |         }
13 | 
14 |         private const string dataCollection = @"HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\DataCollection";
15 |         private const string diagTrack = @"HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\DiagTrack";
16 |         private const string dmwappushservice = @"HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\dmwappushservice";
17 | 
18 |         public override string ID() => "Send optional diagnostic data";
19 | 
20 |         public override bool CheckFeature()
21 |         {
22 |             return (
23 |                Utils.IntEquals(dataCollection, "AllowTelemetry", 3) &&
24 |                 Utils.IntEquals(dataCollection, "MaxTelemetryAllowed", 3) &&
25 |                 Utils.IntEquals(diagTrack, "Start", 4) &&
26 |                 Utils.IntEquals(dmwappushservice, "Start", 4)
27 | 
28 |            );
29 |         }
30 | 
31 |         public override bool DoFeature()
32 |         {
33 |             try
34 |             {
35 |                 Registry.SetValue(dataCollection, "AllowTelemetry", 3, RegistryValueKind.DWord);
36 |                 Registry.SetValue(dataCollection, "MaxTelemetryAllowed", 3, RegistryValueKind.DWord);
37 |                 Registry.SetValue(diagTrack, "Start", 4, RegistryValueKind.DWord);
38 |                 Registry.SetValue(dmwappushservice, "Start", 4, RegistryValueKind.DWord);
39 | 
40 |                 return true;
41 |             }
42 |             catch (Exception ex)
43 |             {
44 |                 logger.Log("Code red in " + ex.Message, Color.Red);
45 |             }
46 | 
47 |             return false;
48 |         }
49 | 
50 |         public override bool UndoFeature()
51 |         {
52 |             try
53 |             {
54 |                 Registry.SetValue(dataCollection, "AllowTelemetry", 1, RegistryValueKind.DWord);
55 |                 Registry.SetValue(dataCollection, "MaxTelemetryAllowed", 1, RegistryValueKind.DWord);
56 |                 Registry.SetValue(diagTrack, "Start", 2, RegistryValueKind.DWord);
57 |                 Registry.SetValue(dmwappushservice, "Start", 2, RegistryValueKind.DWord);
58 | 
59 |                 return true;
60 |             }
61 |             catch (Exception ex)
62 |             {
63 |                 logger.Log("Code red in " + ex.Message, Color.Red);
64 |             }
65 | 
66 |             return false;
67 |         }
68 |     }
69 | }


--------------------------------------------------------------------------------
/src/Winpilot/Walks/System/FaxPrinter.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using Winpilot;
 3 | using System;
 4 | using System.Drawing;
 5 | using System.Management.Automation;
 6 | 
 7 | namespace Walks
 8 | {
 9 |     internal class FaxPrinter : WalksBase
10 |     {
11 |         public FaxPrinter(MainForm form, Logger logger) : base(form, logger)
12 |         {
13 |         }
14 | 
15 |         public override string ID()
16 |         {
17 |             return "Uninstall Fax Printer";
18 |         }
19 | 
20 |         public override bool CheckFeature()
21 |         {
22 |             return false;
23 |         }
24 | 
25 |         public override bool DoFeature()
26 |         {
27 |             string script = "Remove-Printer -Name \"Fax\"";
28 | 
29 |             PowerShell powerShell = PowerShell.Create();
30 | 
31 |             powerShell.AddScript(script);
32 |             powerShell.Invoke();
33 | 
34 |             if (powerShell.Streams.Error.Count > 0)
35 |             {
36 |                 return false;
37 |             }
38 |             return true;
39 |         }
40 | 
41 |         public override bool UndoFeature()
42 |         {
43 |             return true;
44 |         }
45 |     }
46 | }


--------------------------------------------------------------------------------
/src/Winpilot/Walks/System/FullContextMenus.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using System;
 3 | using System.Drawing;
 4 | using Winpilot;
 5 | 
 6 | namespace Walks
 7 | {
 8 |     internal class FullContextMenus : WalksBase
 9 |     {
10 |         public FullContextMenus(MainForm form, Logger logger) : base(form, logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\SOFTWARE\CLASSES\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32";
15 | 
16 |         public override string ID()
17 |         {
18 |             return "Full context menus";
19 |         }
20 | 
21 |         public override bool CheckFeature()
22 |         {
23 |             try
24 |             {
25 |                 object value = Registry.GetValue(keyName, "", null);
26 |                 return value != null; // Return true if value is not null
27 |             }
28 |             catch (Exception ex)
29 |             {
30 |                 logger.Log("Error occurred while checking: " + ex.Message, Color.Red);
31 |                 return false;
32 |             }
33 |         }
34 | 
35 |         public override bool DoFeature()
36 |         {
37 |             try
38 |             {
39 |                 Registry.SetValue(keyName, "", "", RegistryValueKind.String);
40 |                 return true;
41 |             }
42 |             catch (Exception ex)
43 |             {
44 |                 logger.Log("Error occurred while enabling: " + ex.Message, Color.Red);
45 |                 return false;
46 |             }
47 |         }
48 | 
49 |         public override bool UndoFeature()
50 |         {
51 |             try
52 |             {
53 |                 Registry.CurrentUser.DeleteSubKeyTree(@"Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}", false);
54 |                 return true;
55 |             }
56 |             catch (Exception ex)
57 |             {
58 |                 logger.Log("Error occurred while disabling: " + ex.Message, Color.Red);
59 |                 return false;
60 |             }
61 |         }
62 |     }
63 | }
64 | 


--------------------------------------------------------------------------------
/src/Winpilot/Walks/System/LockScreen.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using Winpilot;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Walks
 7 | {
 8 |     internal class LockScreen : WalksBase
 9 |     {
10 |         public LockScreen(MainForm form, Logger logger) : base(form, logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Personalization";
15 |         private const int desiredValue = 1;
16 | 
17 |         public override string ID()
18 |         {
19 |             return "Lock screen";
20 |         }
21 | 
22 |         public override bool CheckFeature()
23 |         {
24 |             return !(
25 |                    Utils.IntEquals(keyName, "NoLockScreen", desiredValue)
26 |              );
27 |         }
28 | 
29 |         public override bool DoFeature()
30 |         {
31 |             try
32 |             {
33 |                 Registry.SetValue(keyName, "NoLockScreen", 0, RegistryValueKind.DWord);
34 |                 return true;
35 |             }
36 |             catch (Exception ex)
37 |             {
38 |                 logger.Log("Code red in " + ex.Message, Color.Red);
39 |             }
40 | 
41 |             return false;
42 |         }
43 | 
44 |         public override bool UndoFeature()
45 |         {
46 |             try
47 |             {
48 |                 Registry.SetValue(keyName, "NoLockScreen", desiredValue, RegistryValueKind.DWord);
49 | 
50 |                 return true;
51 |             }
52 |             catch (Exception ex)
53 |             {
54 |                 logger.Log("Code red in " + ex.Message, Color.Red);
55 |             }
56 | 
57 |             return false;
58 |         }
59 |     }
60 | }


--------------------------------------------------------------------------------
/src/Winpilot/Walks/System/VerboseMessages.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using Winpilot;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Walks
 7 | {
 8 |     public class VerboseMessages : WalksBase
 9 |     {
10 |         public VerboseMessages(MainForm form, Logger logger) : base(form, logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System";
15 |         private const int desiredValue = 0;
16 | 
17 |         public override string ID() => "Display highly detailed status messages";
18 | 
19 |         public override bool CheckFeature()
20 |         {
21 |             return !Utils.IntEquals(keyName, "verbosestatus", desiredValue);
22 |         }
23 | 
24 |         public override bool DoFeature()
25 |         {
26 |             try
27 |             {
28 |                 Registry.SetValue(keyName, "verbosestatus", 1, RegistryValueKind.DWord);
29 | 
30 |                 return true;
31 |             }
32 |             catch (Exception ex)
33 |             {
34 |                 logger.Log("Code red in " + ex.Message, Color.Red);
35 |             }
36 | 
37 |             return false;
38 |         }
39 | 
40 |         public override bool UndoFeature()
41 |         {
42 |             try
43 |             {
44 |                 Registry.SetValue(keyName, "verbosestatus", desiredValue, Microsoft.Win32.RegistryValueKind.DWord);
45 | 
46 |                 return true;
47 |             }
48 |             catch (Exception ex)
49 |             {
50 |                 logger.Log("Code red in " + ex.Message, Color.Red);
51 |             }
52 | 
53 |             return false;
54 |         }
55 |     }
56 | }


--------------------------------------------------------------------------------
/src/Winpilot/Walks/System/XPSWriter.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using Winpilot;
 3 | using System;
 4 | using System.Drawing;
 5 | using System.Management.Automation;
 6 | using System.Threading.Tasks;
 7 | 
 8 | namespace Walks
 9 | {
10 |     internal class XPSWriter : WalksBase
11 |     {
12 |         public XPSWriter(MainForm form, Logger logger) : base(form, logger)
13 |         {
14 |         }
15 | 
16 |         public override string ID()
17 |         {
18 |             return "Uninstall XPS Writer";
19 |         }
20 | 
21 |         public override bool CheckFeature()
22 |         {
23 |             string script = "Get-WindowsOptionalFeature -Online -FeatureName \"Printing-XPSServices-Features\"";
24 | 
25 |             PowerShell powerShell = PowerShell.Create();
26 |             powerShell.AddScript(script);
27 | 
28 |             var results = powerShell.Invoke();
29 | 
30 |             foreach (var item in results)
31 |             {
32 |                 var Status = item.Members["State"].Value;
33 | 
34 |                 if (Status.ToString() == "Enabled")
35 |                 {
36 |                     // logger.Log("XPS Documents Writer is installed.", Color.Green);
37 |                     return false;
38 |                 }
39 |             }
40 |            // logger.Log("XPS Documents Writer not found.", Color.Red);
41 | 
42 |             return true;
43 |         }
44 | 
45 |         public override bool DoFeature()
46 |         {
47 |             logger.Log("I am uninstalling XPS Documents Writer. Please wait.", Color.Magenta);
48 | 
49 |             string script = "Disable-WindowsOptionalFeature -Online -FeatureName \"Printing-XPSServices-Features\" -NoRestart -WarningAction SilentlyContinue | Out-Null";
50 |             PowerShell powerShell = PowerShell.Create();
51 |             powerShell.AddScript(script);
52 | 
53 |             Task.Run(() =>
54 |             {
55 |                 var results = powerShell.Invoke();
56 | 
57 |                 if (powerShell.Streams.Error.Count > 0)
58 |                 {
59 |                     logger.Log("= XPS Documents Writer not found.", Color.Red);
60 |                 }
61 |                 else
62 |                 {
63 |                     logger.Log("XPS Documents Writer has been successfully removed.", Color.Green);
64 |                 }
65 |             });
66 | 
67 |             return true;
68 |         }
69 | 
70 | 
71 |         public override bool UndoFeature()
72 |         {
73 |             logger.Log("I am diving back into this sh*t show, reinstalling 'XPS Documents Writer' once more, man. Hang tight!", Color.Magenta);
74 | 
75 |             string script = "Enable-WindowsOptionalFeature -Online -FeatureName \"Printing-XPSServices-Features\" -NoRestart -WarningAction SilentlyContinue | Out-Null";
76 |             PowerShell powerShell = PowerShell.Create();
77 |             powerShell.AddScript(script);
78 | 
79 |             Task.Run(() =>
80 |             {
81 |                 var results = powerShell.Invoke();
82 | 
83 |                 if (powerShell.Streams.Error.Count > 0)
84 |                 {
85 |                     logger.Log("XPS Documents Writer could not be installed.", Color.Red);
86 |                 }
87 |                 else
88 |                 {
89 |                     logger.Log("XPS Documents Writer has been successfully installed.", Color.Green);
90 |                 }
91 |             });
92 | 
93 |             return true;
94 |         }
95 | 
96 |     }
97 | }


--------------------------------------------------------------------------------
/src/Winpilot/Walks/Taskbar/BingSearch.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using Winpilot;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Walks
 7 | {
 8 |     internal class BingSearch : WalksBase
 9 |     {
10 |         public BingSearch(MainForm form, Logger logger) : base(form, logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows";
15 |         private const int desiredValue = 0;
16 | 
17 |         public override string ID()
18 |         {
19 |             return "Bing Cloud content search";
20 |         }
21 | 
22 |         public override bool CheckFeature()
23 |         {
24 |             return !(
25 |                    Utils.IntEquals(keyName, "DisableSearchBoxSuggestions", desiredValue)
26 |              );
27 |         }
28 | 
29 |         public override bool DoFeature()
30 |         {
31 |             try
32 |             {
33 |                 Registry.SetValue(keyName, "DisableSearchBoxSuggestions", 1, RegistryValueKind.DWord);
34 |                 return true;
35 |             }
36 |             catch (Exception ex)
37 |             {
38 |                 logger.Log("Code red in " + ex.Message, Color.Red);
39 |             }
40 | 
41 |             return false;
42 |         }
43 | 
44 |         public override bool UndoFeature()
45 |         {
46 |             try
47 |             {
48 |                 Registry.SetValue(keyName, "DisableSearchBoxSuggestions", desiredValue, RegistryValueKind.DWord);
49 | 
50 |                 return true;
51 |             }
52 |             catch (Exception ex)
53 |             {
54 |                 logger.Log("Code red in " + ex.Message, Color.Red);
55 |             }
56 | 
57 |             return false;
58 |         }
59 |     }
60 | }


--------------------------------------------------------------------------------
/src/Winpilot/Walks/Taskbar/MostUsedApps.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using Winpilot;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Walks
 7 | {
 8 |     internal class MostUsedApps : WalksBase
 9 |     {
10 |         public MostUsedApps(MainForm form, Logger logger) : base(form, logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Explorer";
15 |         private const int desiredValue = 2;
16 | 
17 |         public override string ID()
18 |         {
19 |             return "Most used apps in start menu";
20 |         }
21 | 
22 |         public override bool CheckFeature()
23 |         {
24 |             return (
25 |                    Utils.IntEquals(keyName, "ShowOrHideMostUsedApps", desiredValue)
26 |              );
27 |         }
28 | 
29 |         public override bool DoFeature()
30 |         {
31 |             try
32 |             {
33 |                 Registry.SetValue(keyName, "ShowOrHideMostUsedApps", 2, RegistryValueKind.DWord);
34 |                 return true;
35 |             }
36 |             catch (Exception ex)
37 |             {
38 |                 logger.Log("Code red in " + ex.Message, Color.Red);
39 |             }
40 | 
41 |             return false;
42 |         }
43 | 
44 |         public override bool UndoFeature()
45 |         {
46 |             try
47 |             {
48 |                 var RegKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Policies\Microsoft\Windows\Explorer", true);
49 |                 RegKey.DeleteValue("ShowOrHideMostUsedApps");
50 |                 return true;
51 |             }
52 |             catch (Exception ex)
53 |             {
54 |                 logger.Log("Code red in " + ex.Message, Color.Red);
55 |             }
56 | 
57 |             return false;
58 |         }
59 |     }
60 | }


--------------------------------------------------------------------------------
/src/Winpilot/Walks/Taskbar/StartmenuLayout.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using Winpilot;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Walks
 7 | {
 8 |     internal class StartmenuLayout : WalksBase
 9 |     {
10 |         public StartmenuLayout(MainForm form, Logger logger) : base(form, logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced";
15 |         private const int desiredValue = 0;
16 | 
17 |         public override string ID()
18 |         {
19 |             return "Pin more Apps on Start menu";
20 |         }
21 | 
22 |         public override bool CheckFeature()
23 |         {
24 |             return (
25 |                    Utils.IntEquals(keyName, "Start_Layout", desiredValue)
26 |              );
27 |         }
28 | 
29 |         public override bool DoFeature()
30 |         {
31 |             try
32 |             {
33 |                 Registry.SetValue(keyName, "Start_Layout", 0, RegistryValueKind.DWord);
34 |                 return true;
35 |             }
36 |             catch (Exception ex)
37 |             {
38 |                 logger.Log("Code red in " + ex.Message, Color.Red);
39 |             }
40 | 
41 |             return false;
42 |         }
43 | 
44 |         public override bool UndoFeature()
45 |         {
46 |             try
47 |             {
48 |                 Registry.SetValue(keyName, "Start_Layout", 1, RegistryValueKind.DWord);
49 |                 return true;
50 |             }
51 |             catch (Exception ex)
52 |             {
53 |                 logger.Log("Code red in " + ex.Message, Color.Red);
54 |             }
55 | 
56 |             return false;
57 |         }
58 |     }
59 | }


--------------------------------------------------------------------------------
/src/Winpilot/Walks/Taskbar/TaskView.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using Winpilot;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Walks
 7 | {
 8 |     internal class TaskView : WalksBase
 9 |     {
10 |         public TaskView(MainForm form, Logger logger) : base(form, logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced";
15 |         private const int desiredValue = 0;
16 | 
17 |         public override string ID()
18 |         {
19 |             return "Task view button on taskbar";
20 |         }
21 | 
22 |         public override bool CheckFeature()
23 |         {
24 |             return !(
25 |                    Utils.IntEquals(keyName, "ShowTaskViewButton", desiredValue)
26 |              );
27 |         }
28 | 
29 |         public override bool DoFeature()
30 |         {
31 |             try
32 |             {
33 |                 Registry.SetValue(keyName, "ShowTaskViewButton", 1, RegistryValueKind.DWord);
34 |                 return true;
35 |          
36 |             }
37 |             catch (Exception ex)
38 |             {
39 |                 logger.Log("Code red in " + ex.Message, Color.Red);
40 |             }
41 | 
42 |             return false;
43 |         }
44 | 
45 |         public override bool UndoFeature()
46 |         {
47 |             try
48 |             {
49 |                 Registry.SetValue(keyName, "ShowTaskViewButton", desiredValue, RegistryValueKind.DWord);
50 |                 return true;
51 |             }
52 |             catch (Exception ex)
53 |             {
54 |                 logger.Log("Code red in " + ex.Message, Color.Red);
55 |             }
56 | 
57 |             return false;
58 |         }
59 |     }
60 | }


--------------------------------------------------------------------------------
/src/Winpilot/Walks/Taskbar/TaskbarChat.cs:
--------------------------------------------------------------------------------
 1 | using Microsoft.Win32;
 2 | using Winpilot;
 3 | using System;
 4 | using System.Drawing;
 5 | 
 6 | namespace Walks
 7 | {
 8 |     internal class TaskbarChat : WalksBase
 9 |     {
10 |         public TaskbarChat(MainForm form, Logger logger) : base(form, logger)
11 |         {
12 |         }
13 | 
14 |         private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced";
15 |         private const int desiredValue = 0;
16 | 
17 |         public override string ID()
18 |         {
19 |             return "Chat icon on taskbar";
20 |         }
21 | 
22 |         public override bool CheckFeature()
23 |         {
24 |             return !(
25 |                    Utils.IntEquals(keyName, "TaskbarMn", desiredValue)
26 |              );
27 |         }
28 | 
29 |         public override bool DoFeature()
30 |         {
31 |             try
32 |             {
33 |                 Registry.SetValue(keyName, "TaskbarMn", 1, RegistryValueKind.DWord);
34 |                 return true;
35 |             }
36 |             catch (Exception ex)
37 |             {
38 |                 logger.Log("Code red in " + ex.Message, Color.Red);
39 |             }
40 | 
41 |             return false;
42 |         }
43 | 
44 |         public override bool UndoFeature()
45 |         {
46 |             try
47 |             {
48 |                 Registry.SetValue(keyName, "TaskbarMn", 0, RegistryValueKind.DWord);
49 |                 return true;
50 |             }
51 |             catch (Exception ex)
52 |             {
53 |                 logger.Log("Code red in " + ex.Message, Color.Red);
54 |             }
55 | 
56 |             return false;
57 |         }
58 |     }
59 | }


--------------------------------------------------------------------------------
/src/Winpilot/WalksBase.cs:
--------------------------------------------------------------------------------
 1 | namespace Winpilot
 2 | {
 3 |     // CoTweaker Base class
 4 |     public abstract class WalksBase
 5 |     {
 6 |         protected readonly MainForm _form;
 7 |         protected readonly Logger logger;
 8 | 
 9 |         public Logger Logger => logger;
10 | 
11 |         /* better short
12 |         public Logger Logger
13 |         {
14 |             get { return logger; }
15 |         } */
16 | 
17 |         protected WalksBase(MainForm form, Logger logger)
18 |         {
19 |             _form = form;
20 |             this.logger = logger;
21 |         }
22 | 
23 |         public abstract string ID();
24 | 
25 |         public abstract bool CheckFeature();
26 | 
27 |         public abstract bool DoFeature();
28 | 
29 |         public abstract bool UndoFeature();
30 |     }
31 | }


--------------------------------------------------------------------------------
/src/Winpilot/app-backend/appxData.json:
--------------------------------------------------------------------------------
 1 | [
 2 |   {
 3 |     "name": "BingNews",
 4 |     "description": "News app from Microsoft",
 5 |     "removeCommand": "Get-AppxPackage *BingNews* | Remove-AppxPackage"
 6 |   },
 7 |   {
 8 |     "name": "ZuneVideo",
 9 |     "description": "Video app from Microsoft",
10 |     "removeCommand": "Get-AppxPackage *ZuneVideo* | Remove-AppxPackage"
11 |   },
12 |   {
13 |     "name": "MicrosoftOfficeHub",
14 |     "description": "This is preinstalled Microsoft crapware.",
15 |     "removeCommand": "Get-AppxPackage *MicrosoftOfficeHub* | Remove-AppxPackage"
16 |   },
17 |   {
18 |     "name": "GetHelp",
19 |     "description": "The Get Help app empowers customers to self-help with troubleshooters, instant answers, Microsoft support articles, and more, before contacting assisted support.",
20 |     "removeCommand": "Get-AppxPackage *GetHelp* | Remove-AppxPackage"
21 |   },
22 |   {
23 |     "name": "WhatsApp",
24 |     "description": "WhatsApp has a UWP app for Windows 11, and while it’s not a web wrapper, it doesn’t have as many features as its mobile counterpart. If you dont use it, remove it.",
25 |     "removeCommand": "Get-AppxPackage *WhatsApp* | Remove-AppxPackage"
26 |   },
27 |   {
28 |     "name": "Netflix",
29 |     "description": "Netflix is a popular streaming service that grants users the key to a vast library of TV shows, movies, and documentaries. This is the official Windows 11 app.",
30 |     "removeCommand": "Get-AppxPackage *Netflix* | Remove-AppxPackage"
31 |   },
32 |   {
33 |     "name": "Instagram",
34 |     "description": "Instagram app on Microsoft Store is basically a PWA.",
35 |     "removeCommand": "Get-AppxPackage *Instagram* | Remove-AppxPackage"
36 |   },
37 |   {
38 |     "name": "OneDrive",
39 |     "description": "Official Microsoft crapware again.",
40 |     "removeCommand": "Get-AppxPackage *OneDriveSync* | Remove-AppxPackage"
41 |   },
42 |   {
43 |     "name": "Microsoft MixedReality.Portal",
44 |     "description": "Official Microsoft crapware.",
45 |     "removeCommand": "Get-AppxPackage *Microsoft.MixedReality* | Remove-AppxPackage"
46 |   },
47 |   {
48 |     "name": "Microsoft Print3D",
49 |     "description": "Official Microsoft crapware again.",
50 |     "removeCommand": "Get-AppxPackage *Microsoft.Print3D* | Remove-AppxPackage"
51 |   },
52 |   {
53 |     "name": "Microsoft People",
54 |     "description": "Official Microsoft crapware again.",
55 |     "removeCommand": "Get-AppxPackage *Microsoft.People* | Remove-AppxPackage"
56 |   },
57 |   {
58 |     "name": "BytedancePte.Ltd.TikTok",
59 |     "description": "The app is a PWA, which is available not only for Windows 11, but also for Windows 10.",
60 |     "removeCommand": "Get-AppxPackage *TikTok* | Remove-AppxPackage"
61 |   },
62 |   {
63 |     "name": "Clipchamp.Clipchamp",
64 |     "description": "Clipchamp is a web-based application. It's also not entirely free!",
65 |     "removeCommand": "Get-AppxPackage *Clipchamp* | Remove-AppxPackage"
66 |   },
67 |   {
68 |     "name": "Microsoft.SkypeApp",
69 |     "description": "The official Microsoft Skype app",
70 |     "removeCommand": "Get-AppxPackage *Skype* | Remove-AppxPackage"
71 |   },
72 |   {
73 |     "name": "Spotify",
74 |     "description": "Spotify’s Desktop app is basically Chromium instance.",
75 |     "removeCommand": "Get-AppxPackage *Spotify* | Remove-AppxPackage"
76 |   },
77 |   {
78 |     "name": "9E2F88E3.TWITTER",
79 |     "description": "Nothing more than a frontend for the X website. You really don't need it.",
80 |     "removeCommand": "Get-AppxPackage *Twitter* | Remove-AppxPackage"
81 |   }
82 | ]


--------------------------------------------------------------------------------
/src/Winpilot/app-backend/chatbotClippy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/builtbybel/Bloatynosy/48d27896be3557e1878094b86362514b8ab6cbca/src/Winpilot/app-backend/chatbotClippy.png


--------------------------------------------------------------------------------
/src/Winpilot/app-backend/chatbotPaperclip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/builtbybel/Bloatynosy/48d27896be3557e1878094b86362514b8ab6cbca/src/Winpilot/app-backend/chatbotPaperclip.png


--------------------------------------------------------------------------------
/src/Winpilot/app.manifest:
--------------------------------------------------------------------------------
 1 | <?xml version="1.0" encoding="utf-8"?>
 2 | <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
 3 |   <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
 4 |   <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
 5 |     <security>
 6 |       <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
 7 |         <!-- UAC-Manifestoptionen
 8 |              Wenn Sie die Ebene der Benutzerkontensteuerung für Windows ändern möchten, ersetzen Sie den 
 9 |              Knoten "requestedExecutionLevel" wie folgt.
10 | 
11 |         <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
12 |         <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
13 |         <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />
14 | 
15 |             Durch Angabe des Elements "requestedExecutionLevel" wird die Datei- und Registrierungsvirtualisierung deaktiviert. 
16 |             Entfernen Sie dieses Element, wenn diese Virtualisierung aus Gründen der Abwärtskompatibilität
17 |             für die Anwendung erforderlich ist.
18 |         -->
19 |         <requestedExecutionLevel level="highestAvailable" uiAccess="false" />
20 |       </requestedPrivileges>
21 |     </security>
22 |   </trustInfo>
23 | 
24 |   <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
25 |     <application>
26 |       <!-- Eine Liste der Windows-Versionen, unter denen diese Anwendung getestet
27 |            und für die sie entwickelt wurde. Wenn Sie die Auskommentierung der entsprechenden Elemente aufheben,
28 |            wird von Windows automatisch die kompatibelste Umgebung ausgewählt. -->
29 | 
30 |       <!-- Windows Vista -->
31 |       <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
32 | 
33 |       <!-- Windows 7 -->
34 |       <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
35 | 
36 |       <!-- Windows 8 -->
37 |       <!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
38 | 
39 |       <!-- Windows 8.1 -->
40 |       <!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
41 | 
42 |       <!-- Windows 10 -->
43 |       <!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
44 | 
45 |     </application>
46 |   </compatibility>
47 | 
48 |   <!-- Gibt an, dass die Anwendung mit DPI-Werten kompatibel ist und von Windows nicht automatisch auf höhere
49 |        DPI-Werte skaliert wird. WPF-Anwendungen (Windows Presentation Foundation) sind automatisch mit DPI-Werten kompatibel, eine Aktivierung 
50 |        ist nicht erforderlich. Für Windows Forms-Anwendungen für .NET Framework 4.6, die diese Einstellung aktivieren, muss 
51 |        auch die Einstellung "'EnableWindowsFormsHighDpiAutoResizing" in der Datei "app.config" auf TRUE festgelegt werden. 
52 |        
53 |        Hierdurch können für die Anwendung lange Pfade verwendet werden. Weitere Informationen finden Sie unter https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation.-->
54 | 
55 |   <application xmlns="urn:schemas-microsoft-com:asm.v3">
56 |     <windowsSettings>
57 |       <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
58 |       <longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
59 |     </windowsSettings>
60 |   </application>
61 | 
62 | 
63 |   <!-- Designs für allgemeine Windows-Steuerelemente und -Dialogfelder (Windows XP und höher) aktivieren -->
64 |   <!--
65 |   <dependency>
66 |     <dependentAssembly>
67 |       <assemblyIdentity
68 |           type="win32"
69 |           name="Microsoft.Windows.Common-Controls"
70 |           version="6.0.0.0"
71 |           processorArchitecture="*"
72 |           publicKeyToken="6595b64144ccf1df"
73 |           language="*"
74 |         />
75 |     </dependentAssembly>
76 |   </dependency>
77 |   -->
78 | 
79 | </assembly>
80 | 


--------------------------------------------------------------------------------
/src/Winpilot/packages.config:
--------------------------------------------------------------------------------
1 | <?xml version="1.0" encoding="utf-8"?>
2 | <packages>
3 |   <package id="Microsoft.Web.WebView2" version="1.0.2277.86" targetFramework="net48" />
4 |   <package id="Newtonsoft.Json" version="13.0.3" targetFramework="net48" />
5 | </packages>


--------------------------------------------------------------------------------