├── plugins ├── ChrisTitusApp.ps1 ├── Remove Windows AI.ps1 ├── Restart Explorer.ps1 ├── CFEnhancer.txt ├── Remove Ask Copilot (NX).ps1 ├── Remove Edit with Photos (NX).ps1 ├── Remove Edit with Notepad (NX).ps1 ├── Remove Edit with Clipchamp (NX).ps1 ├── Disable Snap Assist Flyout (NX).ps1 ├── Shutdown Time (NX).ps1 ├── File Extensions Visibility (NX).ps1 ├── Create Restore Point.ps1 ├── User Account Control (NX).ps1 ├── Restore all built-in apps.ps1 ├── DemoPluginPack.ps1 ├── Uninstall OneDrive.ps1 └── plugins_manifest.txt ├── icons ├── fixer.png ├── tools.png ├── options.png ├── restore.png ├── options_old.png └── options_xp.png ├── CFixer ├── AppIcon.ico ├── AppIcon.png ├── AppIcon32.png ├── Properties │ ├── Settings.settings │ ├── Settings.Designer.cs │ ├── AssemblyInfo.cs │ └── Resources.Designer.cs ├── Features │ ├── FeatureBase.cs │ ├── FeatureNode.cs │ ├── Edge │ │ ├── HubsSidebar.cs │ │ ├── DefautBrowserSetting.cs │ │ ├── FirstRunExperience.cs │ │ ├── DefaultTopSites.cs │ │ ├── ImportOnEachLaunch.cs │ │ ├── UserFeedback.cs │ │ ├── BrowserSignin.cs │ │ ├── StartupBoost.cs │ │ ├── EdgeShoppingAssistant.cs │ │ ├── EdgeCollections.cs │ │ ├── GamerMode.cs │ │ └── TabPageQuickLinks.cs │ ├── Ads │ │ ├── PersonalizedAds.cs │ │ ├── WelcomeExperienceAds.cs │ │ ├── TipsAndSuggestions.cs │ │ ├── FinishSetupAds.cs │ │ ├── StartmenuAds.cs │ │ ├── FileExlorerAds.cs │ │ ├── TailoredExperiences.cs │ │ ├── LockScreenAds.cs │ │ └── SettingsAds.cs │ ├── AI │ │ ├── CopilotTaskbar.cs │ │ ├── Recall.cs │ │ ├── ClickToDo.cs │ │ └── AskCopilot.cs │ ├── Gaming │ │ ├── VisualFX.cs │ │ ├── PowerThrotteling.cs │ │ └── GameDVR.cs │ ├── Privacy │ │ ├── PrivacyExperience.cs │ │ ├── LocationTracking.cs │ │ ├── ActivityHistory.cs │ │ └── Telemetry.cs │ ├── UI │ │ ├── BingSearch.cs │ │ ├── LockScreen.cs │ │ ├── StartLayout.cs │ │ ├── SearchboxTaskbarMode.cs │ │ ├── ShowOrHideMostUsedApps.cs │ │ ├── TaskbarAlignment.cs │ │ ├── ShowTaskViewButton.cs │ │ ├── SearchBoxSuggestions.cs │ │ ├── SnapAssistFlyout.cs │ │ ├── Transparency.cs │ │ ├── FullContextMenus.cs │ │ └── DarkMode.cs │ ├── System │ │ ├── VerboseStatus.cs │ │ ├── TaskbarEndTask.cs │ │ ├── MenuShowDelay.cs │ │ ├── SystemResponsiveness.cs │ │ ├── NetworkThrottling.cs │ │ ├── SpeedUpShutdown.cs │ │ └── BSODDetails.cs │ ├── Issues │ │ └── WingetUpgrade.cs │ └── FeatureLoader.cs ├── App.config ├── Program.cs ├── Views │ ├── OptionsView.cs │ ├── AboutView.cs │ ├── SettingsView.cs │ ├── SettingsView.Designer.cs │ ├── AboutView.resx │ └── OptionsView.resx ├── Helpers │ ├── LogActions.cs │ ├── LogActionsController.cs │ ├── Utils.cs │ ├── OSHelper.cs │ └── Logger.cs ├── NavigationManager.cs └── app.manifest ├── .gitattributes ├── LICENSE ├── CFixer.sln ├── STORY.md └── docs └── log-analyzer ├── js └── main.js └── index.html /plugins/ChrisTitusApp.ps1: -------------------------------------------------------------------------------- 1 | irm christitus.com/win | iex -------------------------------------------------------------------------------- /icons/fixer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/builtbybel/CrapFixer/HEAD/icons/fixer.png -------------------------------------------------------------------------------- /icons/tools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/builtbybel/CrapFixer/HEAD/icons/tools.png -------------------------------------------------------------------------------- /CFixer/AppIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/builtbybel/CrapFixer/HEAD/CFixer/AppIcon.ico -------------------------------------------------------------------------------- /CFixer/AppIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/builtbybel/CrapFixer/HEAD/CFixer/AppIcon.png -------------------------------------------------------------------------------- /icons/options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/builtbybel/CrapFixer/HEAD/icons/options.png -------------------------------------------------------------------------------- /icons/restore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/builtbybel/CrapFixer/HEAD/icons/restore.png -------------------------------------------------------------------------------- /CFixer/AppIcon32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/builtbybel/CrapFixer/HEAD/CFixer/AppIcon32.png -------------------------------------------------------------------------------- /icons/options_old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/builtbybel/CrapFixer/HEAD/icons/options_old.png -------------------------------------------------------------------------------- /icons/options_xp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/builtbybel/CrapFixer/HEAD/icons/options_xp.png -------------------------------------------------------------------------------- /plugins/Remove Windows AI.ps1: -------------------------------------------------------------------------------- 1 | iwr https://raw.githubusercontent.com/zoicware/RemoveWindowsAI/main/RemoveWindowsAi.ps1 | iex 2 | -------------------------------------------------------------------------------- /CFixer/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.cs linguist-detectable=true 2 | *.csx linguist-detectable=true 3 | *.ps1 linguist-detectable=true 4 | 5 | /docs/** linguist-vendored=false 6 | /docs/** linguist-documentation=false 7 | /docs/**/*.html linguist-language=HTML 8 | /docs/**/*.js linguist-language=JavaScript 9 | /docs/**/*.jsx linguist-language=JavaScript 10 | -------------------------------------------------------------------------------- /CFixer/Features/FeatureBase.cs: -------------------------------------------------------------------------------- 1 | using System.Threading.Tasks; 2 | 3 | namespace CrapFixer 4 | { 5 | public abstract class FeatureBase 6 | { 7 | public abstract string ID(); 8 | public abstract string Info(); 9 | public abstract string GetFeatureDetails(); 10 | public abstract Task CheckFeature(); // async 11 | public abstract Task DoFeature(); // async 12 | public abstract bool UndoFeature(); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /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 "CrapFixer" 19 | -------------------------------------------------------------------------------- /CFixer/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /plugins/CFEnhancer.txt: -------------------------------------------------------------------------------- 1 | # Whitelist entries (do not flag these) 2 | !GetHelp 3 | 4 | # Global hide via wildcard. Remove ! to unhide all. 5 | !*.* 6 | 7 | # Bloatware patterns 8 | Solitaire 9 | CandyCrush 10 | Netflix 11 | TikTok 12 | Facebook 13 | Twitter 14 | Instagram 15 | Spotify 16 | Skype 17 | OneNote 18 | OneDrive 19 | Mail 20 | Calendar 21 | Weather 22 | News 23 | Maps 24 | Groove 25 | Movies 26 | TV 27 | Phone 28 | Camera 29 | Feedback 30 | FeedbackHub 31 | GetHelp 32 | GetStarted 33 | Messaging 34 | Office 35 | Paint3D 36 | Print3D 37 | StickyNotes 38 | Wallet 39 | YourPhone 40 | 3DViewer 41 | Alarms 42 | VoiceRecorder 43 | ToDo 44 | Whiteboard 45 | ZuneMusic 46 | ZuneVideo 47 | DevHome 48 | Copilot 49 | Clipchamp 50 | -------------------------------------------------------------------------------- /CFixer/Features/FeatureNode.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using CrapFixer; 3 | 4 | public class FeatureNode 5 | { 6 | public string Name { get; set; } 7 | public bool IsCategory => Feature == null; 8 | public FeatureBase Feature { get; } 9 | public List Children { get; set; } = new List(); 10 | 11 | 12 | // Property to control default checked state 13 | public bool DefaultChecked { get; set; } = true; 14 | 15 | // Constructor for categories 16 | public FeatureNode(string name) 17 | { 18 | Name = name; 19 | } 20 | 21 | // Constructor for actual features 22 | public FeatureNode(FeatureBase feature) 23 | { 24 | Feature = feature; 25 | Name = feature.ID(); // Use the ID as the name 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /plugins/Remove Ask Copilot (NX).ps1: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Plugin: Remove "Ask Copilot" 3 | # ================================================================================ 4 | 5 | [Commands] 6 | Info=Removes "Ask Copilot" context menu entry 7 | Check=reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked" /v {CB3B0003-8088-4EDE-8769-8B354AB2FF8C} 8 | Do=reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked" /v {CB3B0003-8088-4EDE-8769-8B354AB2FF8C} /t REG_SZ /d RemoveCopilotContext /f 9 | Undo=reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked" /v {CB3B0003-8088-4EDE-8769-8B354AB2FF8C} /f 10 | 11 | [Expect] 12 | {CB3B0003-8088-4EDE-8769-8B354AB2FF8C}=RemoveCopilotContext 13 | -------------------------------------------------------------------------------- /plugins/Remove Edit with Photos (NX).ps1: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Plugin: Remove "Edit with Photos" 3 | # ================================================================================ 4 | 5 | [Commands] 6 | Info=Removes "Edit with Photos" context menu entry 7 | Check=reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked" /v {BFE0E2A4-C70C-4AD7-AC3D-10D1ECEBB5B4} 8 | Do=reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked" /v {BFE0E2A4-C70C-4AD7-AC3D-10D1ECEBB5B4} /t REG_SZ /d RemovePhotosContext /f 9 | Undo=reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked" /v {BFE0E2A4-C70C-4AD7-AC3D-10D1ECEBB5B4} /f 10 | 11 | [Expect] 12 | {BFE0E2A4-C70C-4AD7-AC3D-10D1ECEBB5B4}=RemovePhotosContext 13 | -------------------------------------------------------------------------------- /plugins/Remove Edit with Notepad (NX).ps1: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Plugin: Remove "Edit with Notepad" 3 | # ================================================================================ 4 | 5 | [Commands] 6 | Info=Removes "Edit with Notepad" context menu entry 7 | Check=reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked" /v {CA6CC9F1-867A-481E-951E-A28C5E4F01EA} 8 | Do=reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked" /v {CA6CC9F1-867A-481E-951E-A28C5E4F01EA} /t REG_SZ /d RemoveNotepadContext /f 9 | Undo=reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked" /v {CA6CC9F1-867A-481E-951E-A28C5E4F01EA} /f 10 | 11 | [Expect] 12 | {CA6CC9F1-867A-481E-951E-A28C5E4F01EA}=RemoveNotepadContext 13 | -------------------------------------------------------------------------------- /plugins/Remove Edit with Clipchamp (NX).ps1: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # Plugin: Remove "Edit with Clipchamp" 3 | # ================================================================================ 4 | 5 | [Commands] 6 | Info=Removes "Edit with Clipchamp" context menu entry 7 | Check=reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked" /v {8AB635F8-9A67-4698-AB99-784AD929F3B4} 8 | Do=reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked" /v {8AB635F8-9A67-4698-AB99-784AD929F3B4} /t REG_SZ /d RemoveClipchampContext /f 9 | Undo=reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked" /v {8AB635F8-9A67-4698-AB99-784AD929F3B4} /f 10 | 11 | [Expect] 12 | {8AB635F8-9A67-4698-AB99-784AD929F3B4}=RemoveClipchampContext 13 | 14 | -------------------------------------------------------------------------------- /CFixer/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Reflection; 3 | using System.Windows.Forms; 4 | 5 | namespace CrapFixer 6 | { 7 | internal static class Program 8 | { 9 | /// 10 | /// The main entry point for the application. 11 | /// 12 | [STAThread] 13 | private static void Main() 14 | { 15 | Application.EnableVisualStyles(); 16 | Application.SetCompatibleTextRenderingDefault(false); 17 | Application.Run(new MainForm()); 18 | } 19 | 20 | /// 21 | /// Retrieves the version of the app 22 | /// 23 | /// The application version in the format "major.minor.build" 24 | public static string GetAppVersion() 25 | { 26 | // Get the version of the current executing assembly 27 | Version version = Assembly.GetExecutingAssembly().GetName().Version; 28 | 29 | // Return the version in the format "major.minor.build" 30 | return $"{version.Major}.{version.Minor}.{version.Build}"; 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /plugins/Disable Snap Assist Flyout (NX).ps1: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # 📁 Disable Snap Assist Flyout Plugin 3 | # This plugin disables the Snap Assist Flyout feature in Windows 11. 4 | # 5 | # ✅ Useful for users who prefer not to see Snap Assist Flyout. 6 | # 🔄 Undo restores Snap Assist Flyout to enabled. 7 | # ================================================================================ 8 | 9 | [Commands] 10 | Info=This plugin disables Snap Assist Flyout in Windows 11 11 | Check=reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v EnableSnapAssistFlyout 12 | Do=reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v EnableSnapAssistFlyout /t REG_DWORD /d 0 /f && taskkill /f /im explorer.exe && start explorer.exe 13 | Undo=reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v EnableSnapAssistFlyout /t REG_DWORD /d 1 /f && taskkill /f /im explorer.exe && start explorer.exe 14 | 15 | [Expect] 16 | EnableSnapAssistFlyout=0x0 17 | 18 | # Script Body (optional) 19 | Write-Host "Plugin 'DisableSnapAssistFlyout' executed." 20 | -------------------------------------------------------------------------------- /plugins/Shutdown Time (NX).ps1: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # ⚡ FastShutdown 3 | # This plugin speeds up the Windows shutdown process by reducing wait times 4 | # for background and non-responsive applications to close. 5 | # 6 | # ✅ Ideal for power users who want a faster shutdown or reboot experience. 7 | # 🔄 Undo restores default wait timings for safer app closure. 8 | # ================================================================================ 9 | 10 | [Commands] 11 | Info=Decreases wait time during shutdown and kills non-responsive apps faster 12 | Check=reg query "HKCU\Control Panel\Desktop" /v WaitToKillAppTimeout && reg query "HKCU\Control Panel\Desktop" /v HungAppTimeout 13 | Do=reg add "HKCU\Control Panel\Desktop" /v WaitToKillAppTimeout /t REG_SZ /d 2000 /f && reg add "HKCU\Control Panel\Desktop" /v HungAppTimeout /t REG_SZ /d 1000 /f 14 | Undo=reg add "HKCU\Control Panel\Desktop" /v WaitToKillAppTimeout /t REG_SZ /d 5000 /f && reg add "HKCU\Control Panel\Desktop" /v HungAppTimeout /t REG_SZ /d 5000 /f 15 | 16 | [Expect] 17 | WaitToKillAppTimeout=2000 18 | HungAppTimeout=1000 19 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | # MIT License 2 | 3 | Copyright (c) 2025 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 | -------------------------------------------------------------------------------- /CFixer/Views/OptionsView.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | using Views; 4 | 5 | namespace CFixer.Views 6 | { 7 | public partial class OptionsView : UserControl 8 | { 9 | private NavigationManager subNavigation; 10 | 11 | public OptionsView() 12 | { 13 | InitializeComponent(); 14 | subNavigation = new NavigationManager(panelSubContent); 15 | subNavigation.SwitchView(new AboutView()); // Startsite 16 | } 17 | 18 | private void btnAboutMenu_Click(object sender, EventArgs e) 19 | { 20 | subNavigation.SwitchView(new AboutView()); 21 | } 22 | 23 | private void btnSettingsMenu_Click(object sender, EventArgs e) 24 | { 25 | subNavigation.SwitchView(new SettingsView()); 26 | } 27 | 28 | private void btnPluginsMenu_Click(object sender, EventArgs e) 29 | { 30 | subNavigation.SwitchView(new PluginsView()); 31 | } 32 | 33 | private void btnViveMenu_Click(object sender, EventArgs e) 34 | { 35 | subNavigation.SwitchView(new ViveView()); 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /CFixer.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.10.34928.147 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CFixer", "CFixer\CFixer.csproj", "{FA7D5C89-63D3-4AF0-80C2-D650D35E575B}" 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 | {FA7D5C89-63D3-4AF0-80C2-D650D35E575B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {FA7D5C89-63D3-4AF0-80C2-D650D35E575B}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {FA7D5C89-63D3-4AF0-80C2-D650D35E575B}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {FA7D5C89-63D3-4AF0-80C2-D650D35E575B}.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 = {2071364D-7643-47BA-922C-79B33CCDCCA1} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /CFixer/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 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 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace CFixer.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.14.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 | -------------------------------------------------------------------------------- /plugins/File Extensions Visibility (NX).ps1: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # 📁 Hide File Extensions Plugin 3 | # This plugin enables or disables the hiding of known file extensions in Explorer. 4 | # It also controls visibility of super hidden files. 5 | # 6 | # ✅ Useful for users who want a cleaner file view. 7 | # 🔄 Undo restores original visibility settings. 8 | # ================================================================================ 9 | 10 | [Commands] 11 | Info=This plugin hides known file extensions and disables viewing super hidden files 12 | Check=reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v HideFileExt && reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v ShowSuperHidden 13 | Do=reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v HideFileExt /t REG_DWORD /d 1 /f 14 | && reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v ShowSuperHidden /t REG_DWORD /d 0 /f && taskkill /f /im explorer.exe && start explorer.exe 15 | Undo=reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v HideFileExt /t REG_DWORD /d 0 /f 16 | && reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced /v ShowSuperHidden /t REG_DWORD /d 1 /f && taskkill /f /im explorer.exe && start explorer.exe 17 | 18 | [Expect] 19 | HideFileExt=0x1 20 | ShowSuperHidden=0x0 21 | 22 | # Script Body (optional) 23 | Write-Host "Plugin 'HideFileExtensions' executed." 24 | -------------------------------------------------------------------------------- /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 | Write-Warning "You need to run this script as an Administrator!" 4 | exit 5 | } 6 | 7 | # Load Windows Forms assembly for MessageBox 8 | Add-Type -AssemblyName System.Windows.Forms 9 | 10 | # Define the restore point description and type 11 | $description = "Bloatynosy NueEx Restore Point" 12 | $restorePointType = 12 # MODIFY_SETTINGS = 12 13 | 14 | # Function to create restore point with progress reporting 15 | function Create-RestorePoint { 16 | Write-Host "Starting to create restore point..." -ForegroundColor Yellow 17 | 18 | # Simulate progress 19 | for ($i = 0; $i -le 100; $i += 10) { 20 | Write-Progress -Activity "Creating Restore Point" -Status "$i% Complete" -PercentComplete $i 21 | Start-Sleep -Milliseconds 300 # Simulate some work being done 22 | } 23 | 24 | # WMI query to create the restore point 25 | $restorePoint = Get-WmiObject -List Win32_SystemRestore | ForEach-Object { 26 | $_.CreateRestorePoint($description, $restorePointType, 100) 27 | } 28 | 29 | Write-Host "Restore point created successfully." -ForegroundColor Green 30 | 31 | # Show completion message 32 | [System.Windows.Forms.MessageBox]::Show("Restore point has been created successfully!", "Completion", [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Information) 33 | } 34 | 35 | # Execute the restore point creation 36 | Create-RestorePoint -------------------------------------------------------------------------------- /plugins/User Account Control (NX).ps1: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # 🔐 Enable User Account Control (UAC) 3 | # This plugin enables or disables UAC. 4 | # Disabling UAC is risky and should only be done if you fully control the system. 5 | # 🔄 Undo will disable UAC again. 6 | # ⚠️ Requires system restart to apply changes. 7 | # ================================================================================ 8 | 9 | [Commands] 10 | Info=Enable or disable User Account Control (UAC). Disabling this can reduce system security! 11 | Check=reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA 12 | Do=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 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 1 /f; shutdown /r /t 0 }" 13 | Undo=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 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f; shutdown /r /t 0 }" 14 | 15 | [Expect] 16 | EnableLUA=0x1 17 | 18 | # Script Body (optional) 19 | Write-Host "Plugin 'EnableUAC' executed." 20 | -------------------------------------------------------------------------------- /CFixer/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("CrapFixer")] 9 | [assembly: AssemblyDescription("CrapFixer for Windows 11")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("A Belim app creation 2025")] 12 | [assembly: AssemblyProduct("CrapFixer")] 13 | [assembly: AssemblyCopyright("Copyright © 2025")] 14 | [assembly: AssemblyTrademark("Builtbybel")] 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("fa7d5c89-63d3-4af0-80c2-d650d35e575b")] 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("1.16.156")] 36 | [assembly: AssemblyFileVersion("1.16.156")] 37 | -------------------------------------------------------------------------------- /CFixer/Features/Edge/HubsSidebar.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Edge 7 | { 8 | public class HubsSidebar : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_CURRENT_USER\Software\Policies\Microsoft\Edge"; 11 | private const string valueName = "HubsSidebarEnabled"; 12 | private const int recommendedValue = 0; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 17 | } 18 | 19 | public override string ID() => "Disable Copilot Symbol in Edge"; 20 | 21 | public override string Info() => "This feature will disable Copilot in Microsoft Edge."; 22 | 23 | public override Task CheckFeature() 24 | { 25 | return Task.FromResult(Utils.IntEquals(keyName, valueName, 0)); 26 | } 27 | 28 | public override Task DoFeature() 29 | { 30 | try 31 | { 32 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 33 | 34 | return Task.FromResult(true); 35 | } 36 | catch (Exception ex) 37 | { 38 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 39 | } 40 | 41 | return Task.FromResult(false); 42 | } 43 | 44 | public override bool UndoFeature() 45 | { 46 | try 47 | { 48 | Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 49 | 50 | return true; 51 | } 52 | catch (Exception ex) 53 | { 54 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 55 | } 56 | 57 | return false; 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /CFixer/Features/Ads/PersonalizedAds.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Ads 7 | { 8 | public class PersonalizedAds : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\AdvertisingInfo"; 11 | private const string valueName = "Enabled"; 12 | private const int recommendedValue = 0; 13 | 14 | public override string ID() => "Disable Personalized Ads"; 15 | 16 | public override string Info() => "This feature will disable personalized ads."; 17 | 18 | public override string GetFeatureDetails() 19 | { 20 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 21 | } 22 | 23 | public override Task CheckFeature() 24 | { 25 | return Task.FromResult(Utils.IntEquals(keyName, valueName, 0)); 26 | } 27 | 28 | public override Task DoFeature() 29 | { 30 | try 31 | { 32 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 33 | 34 | return Task.FromResult(true); 35 | } 36 | catch (Exception ex) 37 | { 38 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 39 | } 40 | 41 | return Task.FromResult(false); 42 | } 43 | 44 | public override bool UndoFeature() 45 | { 46 | try 47 | { 48 | Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 49 | 50 | return true; 51 | } 52 | catch (Exception ex) 53 | { 54 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 55 | } 56 | 57 | return false; 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /plugins/Restore all built-in apps.ps1: -------------------------------------------------------------------------------- 1 | #Requires -RunAsAdministrator 2 | 3 | # Check if running as Administrator 4 | if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { 5 | Write-Warning "This script must be run as Administrator." 6 | Start-Process powershell.exe -Verb RunAs -ArgumentList ("-File `"{0}`"" -f $MyInvocation.MyCommand.Path) 7 | exit 8 | } 9 | 10 | # Get all installed Windows apps for all users 11 | $allApps = Get-AppxPackage -AllUsers 12 | 13 | # Counter for tracking progress 14 | $totalApps = $allApps.Count 15 | $currentAppIndex = 1 16 | $reinstalledCount = 0 17 | 18 | # Loop through each app and reinstall 19 | foreach ($app in $allApps) { 20 | # Display current status 21 | Write-Host "[$currentAppIndex / $totalApps] Reinstalling $($app.Name)..." -ForegroundColor Yellow 22 | 23 | # Try to reinstall the app 24 | try { 25 | Add-AppxPackage -Register "$($app.InstallLocation)\appxmanifest.xml" -DisableDevelopmentMode -ErrorAction Stop 26 | Write-Host "[$currentAppIndex / $totalApps] $($app.Name) reinstalled successfully." -ForegroundColor Green 27 | $reinstalledCount++ 28 | } 29 | catch { 30 | Write-Host "[$currentAppIndex / $totalApps] Error occurred while reinstalling $($app.Name): $_" -ForegroundColor Red 31 | } 32 | 33 | # Increment the counter 34 | $currentAppIndex++ 35 | } 36 | 37 | # Display final status 38 | if ($reinstalledCount -eq $totalApps) { 39 | Write-Host "All apps reinstalled successfully." -ForegroundColor Green 40 | Write-Host "Flyby11 has reinstalled everything possible." -ForegroundColor Cyan 41 | # Add success percentage reporting 42 | $successPercentage = [math]::Round(($reinstalledCount / $totalApps) * 100, 2) 43 | Write-Host "Completed with $successPercentage% success rate ($reinstalledCount of $totalApps apps reinstalled)" -ForegroundColor Cyan 44 | } -------------------------------------------------------------------------------- /CFixer/Features/Edge/DefautBrowserSetting.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Edge 7 | { 8 | public class DefautBrowserSetting : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Edge"; 11 | private const string valueName = "DefaultBrowserSettingEnabled"; 12 | private const int recommendedValue = 0; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 17 | } 18 | 19 | public override string ID() => "Disable Microsoft Edge as default browser"; 20 | 21 | public override string Info() => "Force Edge to stop asking to change default browser"; 22 | 23 | public override Task CheckFeature() 24 | { 25 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 26 | } 27 | 28 | public override Task DoFeature() 29 | { 30 | try 31 | { 32 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 33 | 34 | return Task.FromResult(true); 35 | } 36 | catch (Exception ex) 37 | { 38 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 39 | } 40 | 41 | return Task.FromResult(false); 42 | } 43 | 44 | public override bool UndoFeature() 45 | { 46 | try 47 | { 48 | Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 49 | 50 | return true; 51 | } 52 | catch (Exception ex) 53 | { 54 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 55 | } 56 | 57 | return false; 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /CFixer/Features/Ads/WelcomeExperienceAds.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Ads 7 | { 8 | public class WelcomeExperienceAds : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager"; 11 | private const string valueName = "SubscribedContent-310093Enabled"; 12 | private const int recommendedValue = 0; 13 | 14 | public override string ID() => "Disable Welcome Experience Ads"; 15 | 16 | public override string Info() => "This feature will disable ads in the welcome experience."; 17 | 18 | public override string GetFeatureDetails() 19 | { 20 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 21 | } 22 | 23 | public override Task CheckFeature() 24 | { 25 | return Task.FromResult(Utils.IntEquals(keyName, valueName, 0)); 26 | } 27 | 28 | public override Task DoFeature() 29 | { 30 | try 31 | { 32 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 33 | 34 | return Task.FromResult(true); 35 | } 36 | catch (Exception ex) 37 | { 38 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 39 | } 40 | 41 | return Task.FromResult(false); 42 | } 43 | 44 | public override bool UndoFeature() 45 | { 46 | try 47 | { 48 | Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 49 | 50 | return true; 51 | } 52 | catch (Exception ex) 53 | { 54 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 55 | } 56 | 57 | return false; 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /CFixer/Features/Edge/FirstRunExperience.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Edge 7 | { 8 | public class FirstRunExperience : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Edge"; 11 | private const string valueName = "HideFirstRunExperience"; 12 | private const int recommendedValue = 1; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 17 | } 18 | 19 | public override string ID() => "Don't Show First Run Experience"; 20 | 21 | public override string Info() => "Hide home screen and 'Getting Started' on initial launch (from version 80 onwards)"; 22 | 23 | public override Task CheckFeature() 24 | { 25 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 26 | } 27 | 28 | public override Task DoFeature() 29 | { 30 | try 31 | { 32 | Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 33 | 34 | return Task.FromResult(true); 35 | } 36 | catch (Exception ex) 37 | { 38 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 39 | } 40 | 41 | return Task.FromResult(false); 42 | } 43 | 44 | public override bool UndoFeature() 45 | { 46 | try 47 | { 48 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 49 | 50 | return true; 51 | } 52 | catch (Exception ex) 53 | { 54 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 55 | } 56 | 57 | return false; 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /CFixer/Features/Edge/DefaultTopSites.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Edge 7 | { 8 | public class DefaultTopSites : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Edge"; 11 | private const string valueName = "NewTabPageHideDefaultTopSites"; 12 | private const int recommendedValue = 1; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 17 | } 18 | 19 | public override string ID() => "Don't Show Sponsored links in new tab page"; 20 | 21 | public override string Info() => "Hide default top sites from the new tab page in Microsoft Edge"; 22 | 23 | public override Task CheckFeature() 24 | { 25 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 26 | } 27 | 28 | public override Task DoFeature() 29 | { 30 | try 31 | { 32 | Registry.SetValue(keyName, valueName, recommendedValue, Microsoft.Win32.RegistryValueKind.DWord); 33 | 34 | return Task.FromResult(true); 35 | } 36 | catch (Exception ex) 37 | { 38 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 39 | } 40 | 41 | return Task.FromResult(false); 42 | } 43 | 44 | public override bool UndoFeature() 45 | { 46 | try 47 | { 48 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 49 | 50 | return true; 51 | } 52 | catch (Exception ex) 53 | { 54 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 55 | } 56 | 57 | return false; 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /CFixer/Features/Edge/ImportOnEachLaunch.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Edge 7 | { 8 | public class ImportOnEachLaunch : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Edge"; 11 | private const string valueName = "ImportOnEachLaunch"; 12 | private const int recommendedValue = 0; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 17 | } 18 | 19 | public override string ID() => "Don't Allow to Import of data from other browsers on each launch"; 20 | 21 | public override string Info() => "Allow import of data from other browsers on each Microsoft Edge launch"; 22 | 23 | public override Task CheckFeature() 24 | { 25 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 26 | } 27 | 28 | public override Task DoFeature() 29 | { 30 | try 31 | { 32 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 33 | 34 | return Task.FromResult(true); 35 | } 36 | catch (Exception ex) 37 | { 38 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 39 | } 40 | 41 | return Task.FromResult(false); 42 | } 43 | 44 | public override bool UndoFeature() 45 | { 46 | try 47 | { 48 | Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 49 | 50 | return true; 51 | } 52 | catch (Exception ex) 53 | { 54 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 55 | } 56 | 57 | return false; 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /CFixer/Features/Edge/UserFeedback.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Edge 7 | { 8 | public class UserFeedback : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Edge"; 11 | private const string valueName = "UserFeedbackAllowed"; 12 | private const int recommendedValue = 0; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 17 | } 18 | 19 | public override string ID() => "Don't Submit user feedback option"; 20 | 21 | public override string Info() => "Allow the submission of feedback, suggestions, or customer surveys, as well as reporting issues with the browser"; 22 | 23 | public override Task CheckFeature() 24 | { 25 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 26 | } 27 | 28 | public override Task DoFeature() 29 | { 30 | try 31 | { 32 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 33 | 34 | return Task.FromResult(true); 35 | } 36 | catch (Exception ex) 37 | { 38 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 39 | } 40 | 41 | return Task.FromResult(false); 42 | } 43 | 44 | public override bool UndoFeature() 45 | { 46 | try 47 | { 48 | Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 49 | 50 | return true; 51 | } 52 | catch (Exception ex) 53 | { 54 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 55 | } 56 | 57 | return false; 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /CFixer/Features/AI/CopilotTaskbar.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.AI 7 | { 8 | internal class CopilotTaskbar : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\WindowsCopilot"; 11 | private const string valueName = "TurnOffWindowsCopilot"; 12 | private const int recommendedValue = 1; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 17 | } 18 | 19 | public override string ID() 20 | { 21 | return "Don't Show Copilot in Taskbar"; 22 | } 23 | 24 | public override string Info() 25 | { 26 | return "This feature will disable Copilot in Taskbar."; 27 | } 28 | 29 | public override Task CheckFeature() 30 | { 31 | return Task.FromResult(Utils.IntEquals(keyName, valueName, 1)); 32 | } 33 | 34 | public override Task DoFeature() 35 | { 36 | try 37 | { 38 | Registry.SetValue(keyName, valueName, recommendedValue, RegistryValueKind.DWord); 39 | return Task.FromResult(true); 40 | } 41 | catch (Exception ex) 42 | { 43 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 44 | } 45 | 46 | return Task.FromResult(false); 47 | } 48 | 49 | public override bool UndoFeature() 50 | { 51 | try 52 | { 53 | Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord); 54 | return true; 55 | } 56 | catch (Exception ex) 57 | { 58 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 59 | } 60 | 61 | return false; 62 | } 63 | } 64 | } -------------------------------------------------------------------------------- /CFixer/Features/Ads/TipsAndSuggestions.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Ads 7 | { 8 | internal class TipsAndSuggestions : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager"; 11 | private const string valueName = "SubscribedContent-338389Enabled"; 12 | private const int recommendedValue = 0; 13 | 14 | public override string ID() => "Disable General Tips and Ads"; 15 | 16 | public override string Info() => "This feature will disable general tips and ads."; 17 | 18 | public override string GetFeatureDetails() 19 | { 20 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 21 | } 22 | 23 | public override Task CheckFeature() 24 | { 25 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue) 26 | ); 27 | } 28 | 29 | public override Task DoFeature() 30 | { 31 | try 32 | { 33 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 34 | 35 | return Task.FromResult(true); 36 | } 37 | catch (Exception ex) 38 | { 39 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 40 | } 41 | 42 | return Task.FromResult(false); 43 | } 44 | 45 | public override bool UndoFeature() 46 | { 47 | try 48 | { 49 | Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 50 | 51 | return true; 52 | } 53 | catch (Exception ex) 54 | { 55 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 56 | } 57 | 58 | return false; 59 | } 60 | } 61 | } -------------------------------------------------------------------------------- /CFixer/Features/Ads/FinishSetupAds.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Ads 7 | { 8 | internal class FinishSetupAds : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\UserProfileEngagement"; 11 | private const string valueName = "ScoobeSystemSettingEnabled"; 12 | private const int recommendedValue = 0; 13 | 14 | public override string ID() => "Disable Finish Setup Ads"; 15 | 16 | public override string Info() => "This feature will disable the \"Lets finish setting up your device\" and other advertising."; 17 | 18 | public override string GetFeatureDetails() 19 | { 20 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 21 | } 22 | 23 | public override Task CheckFeature() 24 | { 25 | return 26 | Task.FromResult(Utils.IntEquals(keyName, valueName, 0)); 27 | } 28 | 29 | public override Task DoFeature() 30 | { 31 | try 32 | { 33 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 34 | 35 | return Task.FromResult(true); 36 | } 37 | catch (Exception ex) 38 | { 39 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 40 | } 41 | 42 | return Task.FromResult(false); 43 | } 44 | 45 | public override bool UndoFeature() 46 | { 47 | try 48 | { 49 | Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 50 | 51 | return true; 52 | } 53 | catch (Exception ex) 54 | { 55 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 56 | } 57 | 58 | return false; 59 | } 60 | } 61 | } -------------------------------------------------------------------------------- /CFixer/Features/Edge/BrowserSignin.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Edge 7 | { 8 | public class BrowserSignin : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Edge"; 11 | private const string valueName = "BrowserSignin"; 12 | private const int recommendedValue = 0; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 17 | } 18 | 19 | public override string ID() => "Disable Browser sign in and sync services"; 20 | 21 | public override string Info() => "This setting controls whether a user can sign into Microsoft Edge with an account to use services such as sync and single sign on"; 22 | 23 | public override Task CheckFeature() 24 | { 25 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 26 | } 27 | 28 | public override Task DoFeature() 29 | { 30 | try 31 | { 32 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 33 | 34 | return Task.FromResult(true); 35 | } 36 | catch (Exception ex) 37 | { 38 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 39 | } 40 | 41 | return Task.FromResult(false); 42 | } 43 | 44 | public override bool UndoFeature() 45 | { 46 | try 47 | { 48 | Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 49 | 50 | return true; 51 | } 52 | catch (Exception ex) 53 | { 54 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 55 | } 56 | 57 | return false; 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /CFixer/Features/Edge/StartupBoost.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Edge 7 | { 8 | public class StartupBoost : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Edge"; 11 | private const string valueName = "StartupBoostEnabled"; 12 | private const int recommendedValue = 0; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 17 | } 18 | 19 | public override string ID() => "Disable Start Boost"; 20 | 21 | public override string Info() => "Enables Microsoft Edge processes to initialize at operating system startup and restart in the background after the last browser window has been closed"; 22 | 23 | public override Task CheckFeature() 24 | { 25 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 26 | } 27 | 28 | public override Task DoFeature() 29 | { 30 | try 31 | { 32 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 33 | 34 | return Task.FromResult(true); 35 | } 36 | catch (Exception ex) 37 | { 38 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 39 | } 40 | 41 | return Task.FromResult(false); 42 | } 43 | 44 | public override bool UndoFeature() 45 | { 46 | try 47 | { 48 | Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 49 | 50 | return true; 51 | } 52 | catch (Exception ex) 53 | { 54 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 55 | } 56 | 57 | return false; 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /CFixer/Features/Edge/EdgeShoppingAssistant.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Edge 7 | { 8 | public class EdgeShoppingAssistant : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Edge"; 11 | private const string valueName = "EdgeShoppingAssistantEnabled"; 12 | private const int recommendedValue = 0; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 17 | } 18 | 19 | public override string ID() => "Disable Shopping assistant"; 20 | 21 | public override string Info() => "Shopping in Microsoft Edge feature will automatically find you the best prices and coupons from across the web as you shop"; 22 | 23 | public override Task CheckFeature() 24 | { 25 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 26 | } 27 | 28 | public override Task DoFeature() 29 | { 30 | try 31 | { 32 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 33 | 34 | return Task.FromResult(true); 35 | } 36 | catch (Exception ex) 37 | { 38 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 39 | } 40 | 41 | return Task.FromResult(false); 42 | } 43 | 44 | public override bool UndoFeature() 45 | { 46 | try 47 | { 48 | Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 49 | 50 | return true; 51 | } 52 | catch (Exception ex) 53 | { 54 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 55 | } 56 | 57 | return false; 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /CFixer/Features/Gaming/VisualFX.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Gaming 7 | { 8 | internal class VisualFX : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects"; 11 | private const string valueName = "VisualFXSetting"; 12 | private const int recommendedValue = 2; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 17 | } 18 | 19 | public override string ID() 20 | { 21 | return "Disable Visual Effects"; 22 | } 23 | 24 | public override string Info() 25 | { 26 | return "This feature will disable visual effects in Windows."; 27 | } 28 | 29 | public override Task CheckFeature() 30 | { 31 | return Task.FromResult(Utils.IntEquals(keyName, valueName, 0)); 32 | } 33 | 34 | public override Task DoFeature() 35 | { 36 | try 37 | { 38 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 39 | 40 | return Task.FromResult(true); 41 | } 42 | catch (Exception ex) 43 | { 44 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 45 | } 46 | 47 | return Task.FromResult(false); 48 | } 49 | 50 | public override bool UndoFeature() 51 | { 52 | try 53 | { 54 | Registry.SetValue(keyName, valueName, 2, Microsoft.Win32.RegistryValueKind.DWord); 55 | 56 | return true; 57 | } 58 | catch (Exception ex) 59 | { 60 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 61 | } 62 | 63 | return false; 64 | } 65 | } 66 | } -------------------------------------------------------------------------------- /CFixer/Features/Privacy/PrivacyExperience.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Privacy 7 | { 8 | public class PrivacyExperience : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\OOBE"; 11 | private const string valueName = "DisablePrivacyExperience"; 12 | private const int recommendedValue = 0; 13 | 14 | public override string ID() => "Disable Privacy Settings Experience at sign-in"; 15 | 16 | public override string Info() => "This feature will disable Privacy Settings Experience at sign-in."; 17 | 18 | public override string GetFeatureDetails() 19 | { 20 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 21 | } 22 | 23 | public override Task CheckFeature() 24 | { 25 | bool result = !Utils.IntEquals(keyName, valueName, recommendedValue); 26 | return Task.FromResult(result); 27 | } 28 | 29 | 30 | public override Task DoFeature() 31 | { 32 | try 33 | { 34 | Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 35 | 36 | return Task.FromResult(true); 37 | } 38 | catch (Exception ex) 39 | { 40 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 41 | } 42 | 43 | return Task.FromResult(false); 44 | } 45 | 46 | public override bool UndoFeature() 47 | { 48 | try 49 | { 50 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 51 | 52 | return true; 53 | } 54 | catch (Exception ex) 55 | { 56 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 57 | } 58 | 59 | return false; 60 | } 61 | } 62 | } -------------------------------------------------------------------------------- /CFixer/Features/Edge/EdgeCollections.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Edge 7 | { 8 | public class EdgeCollections : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Edge"; 11 | private const string valueName = "EdgeCollectionsEnabled"; 12 | private const int recommendedValue = 0; 13 | 14 | public override string ID() => "Disable Access to Collections feature"; 15 | 16 | public override string Info() => "Enables users to access the Collections feature, allowing them to gather, organize, share, and export content more efficiently with Office integration"; 17 | 18 | public override string GetFeatureDetails() 19 | { 20 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 21 | } 22 | 23 | public override Task CheckFeature() 24 | { 25 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 26 | } 27 | 28 | public override Task DoFeature() 29 | { 30 | try 31 | { 32 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 33 | 34 | return Task.FromResult(true); 35 | } 36 | catch (Exception ex) 37 | { 38 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 39 | } 40 | 41 | return Task.FromResult(false); 42 | } 43 | 44 | public override bool UndoFeature() 45 | { 46 | try 47 | { 48 | Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 49 | 50 | return true; 51 | } 52 | catch (Exception ex) 53 | { 54 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 55 | } 56 | 57 | return false; 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /CFixer/Helpers/LogActions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.Windows.Forms; 4 | 5 | /// 6 | /// Provides actions for interacting with and managing the content of a log displayed in a . 7 | /// 8 | /// This class allows users to perform common operations on a log, such as copying its content to the 9 | /// clipboard, analyzing it using the CrapFixer online analyzer tool, or clearing the log. It is designed to work with a control that serves as the log display. 11 | public sealed class LogActions 12 | { 13 | private readonly RichTextBox _logBox; 14 | 15 | public LogActions(RichTextBox logBox) 16 | { 17 | _logBox = logBox ?? throw new ArgumentNullException(nameof(logBox)); 18 | } 19 | 20 | /// Copies the whole log to the clipboard. 21 | public void CopyToClipboard() 22 | { 23 | var text = _logBox.Text; 24 | if (!string.IsNullOrEmpty(text)) 25 | Clipboard.SetText(text); 26 | } 27 | 28 | /// Opens CrapFixer online analyzer tool and passes the log via URL‑encoded GET parameter. 29 | public void AnalyzeOnline(string baseUrl) 30 | { 31 | if (string.IsNullOrWhiteSpace(baseUrl)) return; 32 | 33 | // Get the current log text 34 | var logText = _logBox.Text; 35 | if (string.IsNullOrEmpty(logText)) return; 36 | 37 | // Copy the log to the cboard 38 | Clipboard.SetText(logText); 39 | 40 | Process.Start(baseUrl); 41 | 42 | MessageBox.Show( 43 | "The log has been copied to the clipboard.\n" + 44 | "Click “Paste log from clipboard” on the log analyzer page, or simply press CTRL+V,\n" + 45 | "to insert it into the analyzer.", 46 | "Log copied", 47 | MessageBoxButtons.OK, 48 | MessageBoxIcon.Information); 49 | } 50 | 51 | /// Clears the logger output. 52 | public void Clear() 53 | => _logBox.Clear(); 54 | } -------------------------------------------------------------------------------- /CFixer/Features/Ads/StartmenuAds.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Ads 7 | { 8 | internal class StartmenuAds : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"; 11 | private const string valueName = "Start_IrisRecommendations"; 12 | private const int recommendedValue = 0; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 17 | } 18 | 19 | public override string ID() 20 | { 21 | return "Disable Start menu Ads"; 22 | } 23 | 24 | public override string Info() 25 | { 26 | return "This feature will disable ads in the start menu."; 27 | } 28 | 29 | public override Task CheckFeature() 30 | { 31 | return Task.FromResult( 32 | Utils.IntEquals(keyName, valueName, recommendedValue) 33 | ); 34 | } 35 | 36 | public override Task DoFeature() 37 | { 38 | try 39 | { 40 | Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord); 41 | return Task.FromResult(true); 42 | } 43 | catch (Exception ex) 44 | { 45 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 46 | } 47 | 48 | return Task.FromResult(false); 49 | } 50 | 51 | public override bool UndoFeature() 52 | { 53 | try 54 | { 55 | Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord); 56 | return true; 57 | } 58 | catch (Exception ex) 59 | { 60 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 61 | } 62 | 63 | return false; 64 | } 65 | } 66 | } -------------------------------------------------------------------------------- /CFixer/Features/Privacy/LocationTracking.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Privacy 7 | { 8 | internal class LocationTracking : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\LocationAndSensors"; 11 | private const string valueName = "LocationEnabled"; 12 | private const int recommendedValue = 0; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 17 | } 18 | 19 | public override string ID() 20 | { 21 | return "Disable location tracking"; 22 | } 23 | 24 | public override string Info() 25 | { 26 | return "Disable location tracking (prevents Windows from accessing your location)"; 27 | } 28 | 29 | public override Task CheckFeature() 30 | { 31 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 32 | } 33 | 34 | public override Task DoFeature() 35 | { 36 | try 37 | { 38 | Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord); 39 | return Task.FromResult(true); 40 | } 41 | catch (Exception ex) 42 | { 43 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 44 | } 45 | 46 | return Task.FromResult(false); 47 | } 48 | 49 | public override bool UndoFeature() 50 | { 51 | try 52 | { 53 | Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord); 54 | 55 | return true; 56 | } 57 | catch (Exception ex) 58 | { 59 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 60 | } 61 | 62 | return false; 63 | } 64 | } 65 | } -------------------------------------------------------------------------------- /CFixer/Features/UI/BingSearch.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using System.Threading.Tasks; 4 | using CrapFixer; 5 | 6 | namespace Settings.UI 7 | { 8 | internal class DisableBingSearch : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Search"; 11 | private const string valueName = "BingSearchEnabled"; 12 | private const int recommendedValue = 0; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 17 | } 18 | 19 | public override string ID() 20 | { 21 | return "Disable Bing Search"; 22 | } 23 | 24 | public override string Info() 25 | { 26 | return "This feature disables Bing integration in Windows Search."; 27 | } 28 | 29 | public override Task CheckFeature() 30 | { 31 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 32 | } 33 | 34 | public override Task DoFeature() 35 | { 36 | try 37 | { 38 | Registry.SetValue(keyName, valueName, recommendedValue, RegistryValueKind.DWord); 39 | return Task.FromResult(true); 40 | } 41 | catch (Exception ex) 42 | { 43 | Logger.Log("Error in DisableBingSearch: " + ex.Message, LogLevel.Error); 44 | return Task.FromResult(false); 45 | } 46 | } 47 | 48 | public override bool UndoFeature() 49 | { 50 | try 51 | { 52 | Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord); 53 | return true; 54 | } 55 | catch (Exception ex) 56 | { 57 | Logger.Log("Error undoing DisableBingSearch: " + ex.Message, LogLevel.Error); 58 | return false; 59 | } 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /CFixer/Features/UI/LockScreen.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Personalization 7 | { 8 | internal class LockScreen : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Personalization"; 11 | private const string valueName = "NoLockScreen"; 12 | private const int recommendedValue = 0; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 17 | } 18 | 19 | public override string ID() 20 | { 21 | return "Don't use personalized lock screen"; 22 | } 23 | 24 | public override string Info() 25 | { 26 | return "This feature will disable the personalized lock screen."; 27 | } 28 | 29 | public override Task CheckFeature() 30 | { 31 | bool result = !Utils.IntEquals(keyName, valueName, recommendedValue); 32 | return Task.FromResult(result); 33 | } 34 | 35 | 36 | public override Task DoFeature() 37 | { 38 | try 39 | { 40 | Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord); 41 | return Task.FromResult(true); 42 | } 43 | catch (Exception ex) 44 | { 45 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 46 | } 47 | 48 | return Task.FromResult(false); 49 | } 50 | 51 | public override bool UndoFeature() 52 | { 53 | try 54 | { 55 | Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord); 56 | return true; 57 | } 58 | catch (Exception ex) 59 | { 60 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 61 | } 62 | 63 | return false; 64 | } 65 | } 66 | } -------------------------------------------------------------------------------- /CFixer/Features/UI/StartLayout.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Personalization 7 | { 8 | internal class StartLayout : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"; 11 | private const string valueName = "Start_Layout"; 12 | private const int recommendedValue = 1; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 17 | } 18 | 19 | public override string ID() 20 | { 21 | return "Pin more Apps on start menu"; 22 | } 23 | 24 | public override string Info() 25 | { 26 | return "This feature will allow pinning more Apps on start menu"; 27 | } 28 | 29 | public override Task CheckFeature() 30 | { 31 | return Task.FromResult( 32 | Utils.IntEquals(keyName, valueName, recommendedValue) 33 | ); 34 | } 35 | 36 | public override Task DoFeature() 37 | { 38 | try 39 | { 40 | Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord); 41 | return Task.FromResult(true); 42 | } 43 | catch (Exception ex) 44 | { 45 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 46 | } 47 | 48 | return Task.FromResult(false); 49 | } 50 | 51 | public override bool UndoFeature() 52 | { 53 | try 54 | { 55 | Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord); 56 | return true; 57 | } 58 | catch (Exception ex) 59 | { 60 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 61 | } 62 | 63 | return false; 64 | } 65 | } 66 | } -------------------------------------------------------------------------------- /CFixer/Features/Gaming/PowerThrotteling.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Gaming 7 | { 8 | internal class PowerThrottling : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerThrottling"; 11 | private const string valueName = "PowerThrottlingOff"; 12 | private const int recommendedValue = 1; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 17 | } 18 | 19 | public override string ID() 20 | { 21 | return "Disable Power Throttling"; 22 | } 23 | 24 | public override string Info() 25 | { 26 | return "This feature will disable Power Throttling."; 27 | } 28 | 29 | public override Task CheckFeature() 30 | { 31 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 32 | } 33 | 34 | public override Task DoFeature() 35 | { 36 | try 37 | { 38 | Registry.SetValue(keyName, valueName, recommendedValue, Microsoft.Win32.RegistryValueKind.DWord); 39 | 40 | return Task.FromResult(true); 41 | } 42 | catch (Exception ex) 43 | { 44 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 45 | } 46 | 47 | return Task.FromResult(false); 48 | } 49 | 50 | public override bool UndoFeature() 51 | { 52 | try 53 | { 54 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 55 | 56 | return true; 57 | } 58 | catch (Exception ex) 59 | { 60 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 61 | } 62 | 63 | return false; 64 | } 65 | } 66 | } -------------------------------------------------------------------------------- /CFixer/Features/UI/SearchboxTaskbarMode.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Personalization 7 | { 8 | internal class SearchboxTaskbarMode : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Search"; 11 | private const string valueName = "SearchboxTaskbarMode"; 12 | private const int recommendedValue = 0; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 17 | } 18 | 19 | public override string ID() 20 | { 21 | return "Hide search box on taskbar"; 22 | } 23 | 24 | public override string Info() 25 | { 26 | return "This feature will hide search box on taskbar"; 27 | } 28 | 29 | public override Task CheckFeature() 30 | { 31 | return Task.FromResult( 32 | Utils.IntEquals(keyName, valueName, recommendedValue) 33 | ); 34 | } 35 | 36 | public override Task DoFeature() 37 | { 38 | try 39 | { 40 | Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord); 41 | return Task.FromResult(true); 42 | } 43 | catch (Exception ex) 44 | { 45 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 46 | } 47 | 48 | return Task.FromResult(false); 49 | } 50 | 51 | public override bool UndoFeature() 52 | { 53 | try 54 | { 55 | Registry.SetValue(keyName, valueName, 2, RegistryValueKind.DWord); 56 | return true; 57 | } 58 | catch (Exception ex) 59 | { 60 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 61 | } 62 | 63 | return false; 64 | } 65 | } 66 | } -------------------------------------------------------------------------------- /CFixer/Features/Edge/GamerMode.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Edge 7 | { 8 | public class GamerMode : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Edge"; 11 | private const string valueName = "GamerModeEnabled"; 12 | private const int recommendedValue = 0; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 17 | } 18 | 19 | public override string ID() => "Disable Gamer Mode"; 20 | 21 | public override string Info() => "Microsoft Edge Gamer Mode allows gamers to personalize their browser with gaming themes and gives them the option of enabling Efficiency Mode for PC gaming, the Gaming feed on new tabs, sidebar apps for gamers, and more"; 22 | 23 | public override Task CheckFeature() 24 | { 25 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 26 | } 27 | 28 | public override Task DoFeature() 29 | { 30 | try 31 | { 32 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 33 | 34 | return Task.FromResult(true); 35 | } 36 | catch (Exception ex) 37 | { 38 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 39 | } 40 | 41 | return Task.FromResult(false); 42 | } 43 | 44 | public override bool UndoFeature() 45 | { 46 | try 47 | { 48 | Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 49 | 50 | return true; 51 | } 52 | catch (Exception ex) 53 | { 54 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 55 | } 56 | 57 | return false; 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /CFixer/Helpers/LogActionsController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | 4 | /// 5 | /// Manages log-related actions using a ComboBox in MainForm. 6 | /// 7 | public class LogActionsController 8 | { 9 | private readonly ComboBox _combo; 10 | private readonly LogActions _logActions; 11 | 12 | public LogActionsController(ComboBox comboLogActions, LogActions logActions) 13 | { 14 | if (comboLogActions == null) throw new ArgumentNullException(nameof(comboLogActions)); 15 | if (logActions == null) throw new ArgumentNullException(nameof(logActions)); 16 | 17 | _combo = comboLogActions; 18 | _logActions = logActions; 19 | 20 | Initialize(); 21 | } 22 | 23 | private void Initialize() 24 | { 25 | _combo.Items.Clear(); 26 | _combo.Items.Add("Select an action..."); 27 | _combo.Items.Add("Analyze log online (recommended)"); 28 | _combo.Items.Add("Copy log to clipboard"); 29 | _combo.Items.Add("Clear log"); 30 | _combo.SelectedIndex = 0; 31 | 32 | _combo.SelectedIndexChanged += Combo_SelectedIndexChanged; 33 | } 34 | 35 | private void Combo_SelectedIndexChanged(object sender, EventArgs e) 36 | { 37 | string selected = _combo.SelectedItem as string; 38 | if (string.IsNullOrEmpty(selected)) 39 | { 40 | Reset(); 41 | return; 42 | } 43 | 44 | switch (selected) 45 | { 46 | case "Analyze log online (recommended)": 47 | _logActions.AnalyzeOnline("https://builtbybel.github.io/CrapFixer/log-analyzer/index.html"); 48 | break; 49 | 50 | case "Copy log to clipboard": 51 | _logActions.CopyToClipboard(); 52 | break; 53 | 54 | case "Clear log": 55 | _logActions.Clear(); 56 | break; 57 | } 58 | 59 | Reset(); 60 | } 61 | 62 | private void Reset() 63 | { 64 | // Reset the combo box to the default selection 65 | _combo.SelectedIndex = 0; 66 | } 67 | } -------------------------------------------------------------------------------- /CFixer/Features/Privacy/ActivityHistory.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Privacy 7 | { 8 | internal class ActivityHistory : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Privacy"; 11 | private const string valueName = "ActivityHistoryEnabled"; 12 | private const int recommendedValue = 0; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 17 | } 18 | 19 | public override string ID() 20 | { 21 | return "Disable activity history"; 22 | } 23 | 24 | public override string Info() 25 | { 26 | return "Disable activity history (prevents Windows from tracking and storing your activity)"; 27 | } 28 | 29 | public override Task CheckFeature() 30 | { 31 | return Task.FromResult( 32 | Utils.IntEquals(keyName, valueName, recommendedValue) 33 | ); 34 | } 35 | 36 | public override Task DoFeature() 37 | { 38 | try 39 | { 40 | Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord); 41 | return Task.FromResult(true); 42 | } 43 | catch (Exception ex) 44 | { 45 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 46 | } 47 | 48 | return Task.FromResult(false); 49 | } 50 | 51 | public override bool UndoFeature() 52 | { 53 | try 54 | { 55 | Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord); 56 | 57 | return true; 58 | } 59 | catch (Exception ex) 60 | { 61 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 62 | } 63 | 64 | return false; 65 | } 66 | } 67 | } -------------------------------------------------------------------------------- /CFixer/Features/UI/ShowOrHideMostUsedApps.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Personalization 7 | { 8 | internal class ShowOrHideMostUsedApps : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Explorer"; 11 | private const string valueName = "ShowOrHideMostUsedApps"; 12 | private const int recommendedValue = 2; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 17 | } 18 | 19 | public override string ID() 20 | { 21 | return "Hide Most used apps in start menu"; 22 | } 23 | 24 | public override string Info() 25 | { 26 | return "This feature will hide Most used apps in start menu for all users"; 27 | } 28 | 29 | public override Task CheckFeature() 30 | { 31 | return Task.FromResult( 32 | Utils.IntEquals(keyName, valueName, recommendedValue) 33 | ); 34 | } 35 | 36 | public override Task DoFeature() 37 | { 38 | try 39 | { 40 | Registry.SetValue(keyName, valueName, recommendedValue, RegistryValueKind.DWord); 41 | return Task.FromResult(true); 42 | } 43 | catch (Exception ex) 44 | { 45 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 46 | } 47 | 48 | return Task.FromResult(false); 49 | } 50 | 51 | public override bool UndoFeature() 52 | { 53 | try 54 | { 55 | Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord); 56 | return true; 57 | } 58 | catch (Exception ex) 59 | { 60 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 61 | } 62 | 63 | return false; 64 | } 65 | } 66 | } -------------------------------------------------------------------------------- /CFixer/Features/Edge/TabPageQuickLinks.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Edge 7 | { 8 | public class TabPageQuickLinks : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Edge"; 11 | private const string valueName = "NewTabPageQuickLinksEnabled"; 12 | private const int recommendedValue = 0; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 17 | } 18 | 19 | public override string ID() => "Don't Show Quick links in new tab page"; 20 | 21 | public override string Info() => "By default, when you open a new tab, you see a Bing search bar, Bing image of the day set as the page background. For supported websites, Quick Links on the New Tab page can display recent updates right in the tile"; 22 | 23 | public override Task CheckFeature() 24 | { 25 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 26 | } 27 | 28 | public override Task DoFeature() 29 | { 30 | try 31 | { 32 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 33 | 34 | return Task.FromResult(true); 35 | } 36 | catch (Exception ex) 37 | { 38 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 39 | } 40 | 41 | return Task.FromResult(false); 42 | } 43 | 44 | public override bool UndoFeature() 45 | { 46 | try 47 | { 48 | Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 49 | 50 | return true; 51 | } 52 | catch (Exception ex) 53 | { 54 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 55 | } 56 | 57 | return false; 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /CFixer/Features/UI/TaskbarAlignment.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Personalization 7 | { 8 | internal class TaskbarAlignment : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"; 11 | private const string valueName = "TaskbarAl"; 12 | private const int recommendedValue = 0; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Suggested Value: {recommendedValue} (Left – feels like home if you're coming from Windows 10)"; 17 | } 18 | 19 | 20 | public override string ID() 21 | { 22 | return "Align Start button to left"; 23 | } 24 | 25 | public override string Info() 26 | { 27 | return "This feature will align the Start button to left"; 28 | } 29 | 30 | public override Task CheckFeature() 31 | { 32 | return Task.FromResult( 33 | Utils.IntEquals(keyName, valueName, recommendedValue) 34 | ); 35 | } 36 | 37 | public override Task DoFeature() 38 | { 39 | try 40 | { 41 | Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord); 42 | return Task.FromResult(true); 43 | } 44 | catch (Exception ex) 45 | { 46 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 47 | } 48 | 49 | return Task.FromResult(false); 50 | } 51 | 52 | public override bool UndoFeature() 53 | { 54 | try 55 | { 56 | Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord); 57 | return true; 58 | } 59 | catch (Exception ex) 60 | { 61 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 62 | } 63 | 64 | return false; 65 | } 66 | } 67 | } -------------------------------------------------------------------------------- /CFixer/Features/System/VerboseStatus.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.System 7 | { 8 | internal class VerboseStatus : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System"; 11 | private const string valueName = "VerboseStatus"; 12 | private const int recommendedValue = 1; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 17 | } 18 | 19 | public override string ID() 20 | { 21 | return "Enable Verbose Logon status messages"; 22 | } 23 | 24 | public override string Info() 25 | { 26 | return "This method allows you to see what processes are hanging when shutting down and turning on the machine."; 27 | } 28 | 29 | public override Task CheckFeature() 30 | { 31 | return Task.FromResult( 32 | Utils.IntEquals(keyName, valueName, recommendedValue) 33 | ); 34 | } 35 | 36 | public override Task DoFeature() 37 | { 38 | try 39 | { 40 | Registry.SetValue(keyName, valueName, recommendedValue, RegistryValueKind.DWord); 41 | return Task.FromResult(true); 42 | } 43 | catch (Exception ex) 44 | { 45 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 46 | } 47 | 48 | return Task.FromResult(false); 49 | } 50 | 51 | public override bool UndoFeature() 52 | { 53 | try 54 | { 55 | Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord); 56 | 57 | return true; 58 | } 59 | catch (Exception ex) 60 | { 61 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 62 | } 63 | 64 | return false; 65 | } 66 | } 67 | } -------------------------------------------------------------------------------- /CFixer/Features/System/TaskbarEndTask.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.System 7 | { 8 | internal class TaskbarEndTask : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\TaskbarDeveloperSettings"; 11 | private const string valueName = "TaskbarEndTask"; 12 | private const int recommendedValue = 1; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 17 | } 18 | 19 | public override string ID() 20 | { 21 | return "Enable End Task"; 22 | } 23 | 24 | public override string Info() 25 | { 26 | return "Adds 'End Task' to the Windows 11 taskbar context menu, allowing you to directly kill unresponsive apps."; 27 | } 28 | 29 | public override Task CheckFeature() 30 | { 31 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 32 | } 33 | 34 | public override Task DoFeature() 35 | { 36 | try 37 | { 38 | Registry.SetValue(keyName, valueName, recommendedValue, RegistryValueKind.DWord); 39 | return Task.FromResult(true); 40 | } 41 | catch (Exception ex) 42 | { 43 | Logger.Log("Failed to enable End Task: " + ex.Message, LogLevel.Error); 44 | } 45 | 46 | return Task.FromResult(false); 47 | } 48 | 49 | public override bool UndoFeature() 50 | { 51 | try 52 | { 53 | Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord); 54 | return true; 55 | } 56 | catch (Exception ex) 57 | { 58 | Logger.Log("Failed to disable End Task: " + ex.Message, LogLevel.Error); 59 | } 60 | 61 | return false; 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /CFixer/Features/UI/ShowTaskViewButton.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Personalization 7 | { 8 | internal class ShowTaskViewButton : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"; 11 | private const string valueName = "ShowTaskViewButton"; 12 | private const int recommendedValue = 0; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended: {recommendedValue} (Task View off – cleaner taskbar, unless you use it often)"; 17 | } 18 | 19 | public override string ID() 20 | { 21 | return "Hide Task view button on taskbar"; 22 | } 23 | 24 | public override string Info() 25 | { 26 | return "This feature will hide the Task view button on taskbar"; 27 | } 28 | 29 | public override Task CheckFeature() 30 | { 31 | return Task.FromResult( 32 | Utils.IntEquals(keyName, valueName, recommendedValue) 33 | ); 34 | } 35 | 36 | public override Task DoFeature() 37 | { 38 | try 39 | { 40 | Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord); 41 | return Task.FromResult(true); 42 | } 43 | catch (Exception ex) 44 | { 45 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 46 | } 47 | 48 | return Task.FromResult(false); 49 | } 50 | 51 | public override bool UndoFeature() 52 | { 53 | try 54 | { 55 | Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord); 56 | return true; 57 | } 58 | catch (Exception ex) 59 | { 60 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 61 | } 62 | 63 | return false; 64 | } 65 | } 66 | } -------------------------------------------------------------------------------- /CFixer/Features/System/MenuShowDelay.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.System 7 | { 8 | internal class MenuShowDelay : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_CURRENT_USER\Control Panel\Desktop"; 11 | private const string valueName = "MenuShowDelay"; 12 | private const string recommendedValue = "10"; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: \"{recommendedValue}\" (faster menu response)"; 17 | } 18 | 19 | public override string ID() 20 | { 21 | return "Speed Up Menu Show Delay"; 22 | } 23 | 24 | public override string Info() 25 | { 26 | return "Speeds up the appearance of menus and submenus by lowering the default delay. This improves the perceived responsiveness of the UI."; 27 | } 28 | 29 | public override Task CheckFeature() 30 | { 31 | return Task.FromResult(Utils.StringEquals(keyName, valueName, recommendedValue)); 32 | } 33 | 34 | public override Task DoFeature() 35 | { 36 | try 37 | { 38 | Registry.SetValue(keyName, valueName, recommendedValue, RegistryValueKind.String); 39 | return Task.FromResult(true); 40 | } 41 | catch (Exception ex) 42 | { 43 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 44 | } 45 | 46 | return Task.FromResult(false); 47 | } 48 | 49 | public override bool UndoFeature() 50 | { 51 | try 52 | { 53 | Registry.SetValue(keyName, valueName, "400", RegistryValueKind.String); // Default is 400 on Windows 11 54 | return true; 55 | } 56 | catch (Exception ex) 57 | { 58 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 59 | } 60 | 61 | return false; 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /CFixer/Features/UI/SearchBoxSuggestions.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.UI 7 | { 8 | internal class DisableSearchBoxSuggestions : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\Explorer"; 11 | private const string valueName = "DisableSearchBoxSuggestions"; 12 | private const int recommendedValue = 1; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 17 | } 18 | 19 | public override string ID() 20 | { 21 | return "Disable Search Box Suggestions"; 22 | } 23 | 24 | public override string Info() 25 | { 26 | return "This feature disables Bing search and web suggestions in the Windows Start Menu."; 27 | } 28 | 29 | public override Task CheckFeature() 30 | { 31 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 32 | } 33 | 34 | public override Task DoFeature() 35 | { 36 | try 37 | { 38 | Registry.SetValue(keyName, valueName, recommendedValue, RegistryValueKind.DWord); 39 | return Task.FromResult(true); 40 | } 41 | catch (Exception ex) 42 | { 43 | Logger.Log("Error in DisableSearchBoxSuggestions: " + ex.Message, LogLevel.Error); 44 | return Task.FromResult(false); 45 | } 46 | } 47 | 48 | public override bool UndoFeature() 49 | { 50 | try 51 | { 52 | Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord); // 0 = Enable suggestions 53 | return true; 54 | } 55 | catch (Exception ex) 56 | { 57 | Logger.Log("Error undoing DisableSearchBoxSuggestions: " + ex.Message, LogLevel.Error); 58 | return false; 59 | } 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /CFixer/Features/UI/SnapAssistFlyout.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Personalization 7 | { 8 | internal class DisableSnapAssistFlyout : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"; 11 | private const string valueName = "EnableSnapAssistFlyout"; 12 | private const int recommendedValue = 0; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 17 | } 18 | 19 | public override string ID() 20 | { 21 | return "Disable Snap Assist Flyout"; 22 | } 23 | 24 | public override string Info() 25 | { 26 | return "This feature disables the Snap Assist flyout, which appears when you snap a window."; 27 | } 28 | 29 | public override Task CheckFeature() 30 | { 31 | return Task.FromResult( 32 | Utils.IntEquals(keyName, valueName, recommendedValue) 33 | ); 34 | } 35 | 36 | public override Task DoFeature() 37 | { 38 | try 39 | { 40 | Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord); 41 | return Task.FromResult(true); 42 | } 43 | catch (Exception ex) 44 | { 45 | Logger.Log("Error in DisableSnapAssistFlyout: " + ex.Message, LogLevel.Error); 46 | } 47 | 48 | return Task.FromResult(false); 49 | } 50 | 51 | public override bool UndoFeature() 52 | { 53 | try 54 | { 55 | Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord); 56 | return true; 57 | } 58 | catch (Exception ex) 59 | { 60 | Logger.Log("Error in DisableSnapAssistFlyout (Undo): " + ex.Message, LogLevel.Error); 61 | } 62 | 63 | return false; 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /CFixer/Features/Ads/FileExlorerAds.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Ads 7 | { 8 | internal class FileExplorerAds : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"; 11 | private const string valueName = "ShowSyncProviderNotifications"; 12 | private const int recommendedValue = 0; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 17 | } 18 | 19 | public override string ID() 20 | { 21 | return "Disable File Explorer Ads"; 22 | } 23 | 24 | public override string Info() 25 | { 26 | return "This feature will disable ads in File Explorer."; 27 | } 28 | 29 | public override Task CheckFeature() 30 | { 31 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 32 | } 33 | 34 | public override Task DoFeature() 35 | { 36 | try 37 | { 38 | Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord); 39 | Logger.Log("File Explorer Ads disabled", LogLevel.Info); 40 | return Task.FromResult(true); 41 | } 42 | catch (Exception ex) 43 | { 44 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 45 | } 46 | 47 | return Task.FromResult(false); 48 | } 49 | 50 | public override bool UndoFeature() 51 | { 52 | try 53 | { 54 | Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord); 55 | Logger.Log("File Explorer Ads enabled", LogLevel.Info); 56 | return true; 57 | } 58 | catch (Exception ex) 59 | { 60 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 61 | } 62 | 63 | return false; 64 | } 65 | } 66 | } -------------------------------------------------------------------------------- /CFixer/Features/System/SystemResponsiveness.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.System 7 | { 8 | internal class SystemResponsiveness : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile"; 11 | private const string valueName = "SystemResponsiveness"; 12 | private const int recommendedValue = 10; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 17 | } 18 | 19 | public override string ID() 20 | { 21 | return "Optimize System Responsiveness"; 22 | } 23 | 24 | public override string Info() 25 | { 26 | return "Enhances system responsiveness by prioritizing CPU resources for foreground tasks, improving performance during active use."; 27 | } 28 | 29 | public override Task CheckFeature() 30 | { 31 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 32 | } 33 | 34 | public override Task DoFeature() 35 | { 36 | try 37 | { 38 | Registry.SetValue(keyName, valueName, recommendedValue, RegistryValueKind.DWord); 39 | return Task.FromResult(true); 40 | } 41 | catch (Exception ex) 42 | { 43 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 44 | } 45 | 46 | return Task.FromResult(false); 47 | } 48 | 49 | public override bool UndoFeature() 50 | { 51 | try 52 | { 53 | Registry.SetValue(keyName, valueName, 20, RegistryValueKind.DWord); // Default is typically 20 on Windows 11 54 | return true; 55 | } 56 | catch (Exception ex) 57 | { 58 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 59 | } 60 | 61 | return false; 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /CFixer/Features/UI/Transparency.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Personalization 7 | { 8 | internal class Transparency : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize"; 11 | private const string valueName = "EnableTransparency"; 12 | private const int recommendedValue = 0; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Suggestion: {recommendedValue} (No transparency – smoother performance, still stylish)"; 17 | } 18 | 19 | 20 | public override string ID() 21 | { 22 | return "Disable Transparency Effects"; 23 | } 24 | 25 | public override string Info() 26 | { 27 | return "This feature disables transparency effects for Start menu, taskbar, and other surfaces."; 28 | } 29 | 30 | public override Task CheckFeature() 31 | { 32 | return Task.FromResult( 33 | Utils.IntEquals(keyName, valueName, recommendedValue) 34 | ); 35 | } 36 | 37 | public override Task DoFeature() 38 | { 39 | try 40 | { 41 | Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord); 42 | return Task.FromResult(true); 43 | } 44 | catch (Exception ex) 45 | { 46 | Logger.Log("Error in DisableTransparency: " + ex.Message, LogLevel.Error); 47 | } 48 | 49 | return Task.FromResult(false); 50 | } 51 | 52 | public override bool UndoFeature() 53 | { 54 | try 55 | { 56 | Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord); 57 | return true; 58 | } 59 | catch (Exception ex) 60 | { 61 | Logger.Log("Error in DisableTransparency (Undo): " + ex.Message, LogLevel.Error); 62 | } 63 | 64 | return false; 65 | } 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /CFixer/Features/Ads/TailoredExperiences.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Ads 7 | { 8 | internal class TailoredExperiences : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Privacy"; 11 | private const string valueName = "TailoredExperiencesWithDiagnosticDataEnabled"; 12 | private const int recommendedValue = 0; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 17 | } 18 | 19 | public override string ID() 20 | { 21 | return "Disable Tailored experiences"; 22 | } 23 | 24 | public override string Info() 25 | { 26 | return "Tailored Experiences allows Microsoft to get information from you to deliver personalized tips, ads, and recommendations. Many people would call this telemetry, or even spying."; 27 | } 28 | 29 | public override Task CheckFeature() 30 | { 31 | return Task.FromResult( 32 | Utils.IntEquals(keyName, valueName, recommendedValue) 33 | ); 34 | } 35 | 36 | public override Task DoFeature() 37 | { 38 | try 39 | { 40 | Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord); 41 | return Task.FromResult(true); 42 | } 43 | catch (Exception ex) 44 | { 45 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 46 | } 47 | 48 | return Task.FromResult(false); 49 | } 50 | 51 | public override bool UndoFeature() 52 | { 53 | try 54 | { 55 | Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord); 56 | return true; 57 | } 58 | catch (Exception ex) 59 | { 60 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 61 | } 62 | 63 | return false; 64 | } 65 | } 66 | } -------------------------------------------------------------------------------- /CFixer/Features/System/NetworkThrottling.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.System 7 | { 8 | internal class NetworkThrottling : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile"; 11 | private const string valueName = "NetworkThrottlingIndex"; 12 | private const int recommendedValue = -1; // 0xFFFFFFFF 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: 0xFFFFFFFF (decimal: {uint.MaxValue})"; 17 | } 18 | 19 | public override string ID() 20 | { 21 | return "Disable Network Throttling"; 22 | } 23 | 24 | public override string Info() 25 | { 26 | return "Disables the Windows network throttling mechanism to potentially improve performance for streaming, gaming, or real-time applications."; 27 | } 28 | 29 | public override Task CheckFeature() 30 | { 31 | return Task.FromResult(Utils.IntEquals(keyName, valueName, unchecked((int)0xFFFFFFFF))); 32 | } 33 | 34 | public override Task DoFeature() 35 | { 36 | try 37 | { 38 | Registry.SetValue(keyName, valueName, unchecked((int)0xFFFFFFFF), RegistryValueKind.DWord); 39 | return Task.FromResult(true); 40 | } 41 | catch (Exception ex) 42 | { 43 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 44 | } 45 | 46 | return Task.FromResult(false); 47 | } 48 | 49 | public override bool UndoFeature() 50 | { 51 | try 52 | { 53 | Registry.SetValue(keyName, valueName, 10, RegistryValueKind.DWord); // Default is 10 54 | return true; 55 | } 56 | catch (Exception ex) 57 | { 58 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 59 | } 60 | 61 | return false; 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /CFixer/Features/Privacy/Telemetry.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Privacy 7 | { 8 | public class Telemetry : FeatureBase 9 | { 10 | private const string dataCollection = @"HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\DataCollection"; 11 | private const string diagTrack = @"HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\DiagTrack"; 12 | 13 | public override string ID() => "Turn off Telemetry data collection"; 14 | 15 | public override string Info() => "This feature will turn off telemetry data collection and prevent the data from being sent to Microsoft."; 16 | 17 | public override string GetFeatureDetails() 18 | { 19 | return $"{dataCollection} | {diagTrack}"; 20 | } 21 | 22 | public override Task CheckFeature() 23 | { 24 | return Task.FromResult( 25 | Utils.IntEquals(dataCollection, "AllowTelemetry", 0) && 26 | Utils.IntEquals(diagTrack, "Start", 4) 27 | 28 | ); 29 | } 30 | 31 | public override Task DoFeature() 32 | { 33 | try 34 | { 35 | Registry.SetValue(dataCollection, "AllowTelemetry", 0, RegistryValueKind.DWord); 36 | Registry.SetValue(diagTrack, "Start", 4, RegistryValueKind.DWord); 37 | return Task.FromResult(true); 38 | } 39 | catch (Exception ex) 40 | { 41 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 42 | } 43 | 44 | return Task.FromResult(false); 45 | } 46 | 47 | public override bool UndoFeature() 48 | { 49 | try 50 | { 51 | Registry.SetValue(dataCollection, "AllowTelemetry", 1, RegistryValueKind.DWord); 52 | Registry.SetValue(diagTrack, "Start", 2, RegistryValueKind.DWord); 53 | 54 | return true; 55 | } 56 | catch (Exception ex) 57 | { 58 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 59 | } 60 | 61 | return false; 62 | } 63 | } 64 | } -------------------------------------------------------------------------------- /plugins/DemoPluginPack.ps1: -------------------------------------------------------------------------------- 1 | # ================================================================================ 2 | # 🧪 Demo Plugin Pack 3 | # Demonstrates all currently supported features of the plugin system 4 | # ================================================================================ 5 | # ✅ Features demonstrated: 6 | # - Metadata section: [Plugin] with Info 7 | # - Multiple commands: [Commands] with Check / Do / Undo definitions 8 | # - Value validation: [Expect] to define expected output values from commands 9 | # - Multi-line registry checks, including multiple keys 10 | # - Optional command output logging (e.g., `whoami`) 11 | # - Optional script logic (executed like a normal PowerShell script) 12 | # 13 | # 💡 Usage notes: 14 | # - The Check command is executed first; its output is parsed against [Expect] 15 | # - The Do command is run when fixing is triggered 16 | # - The Undo command attempts to revert changes 17 | # - Output from all commands is logged, and key-value validation is shown 18 | # - Keys not listed under [Expect] are ignored in validation 19 | # 20 | # 📁 File name: DemoPluginPack.ps1 21 | # ================================================================================= 22 | 23 | [Commands] 24 | Info=Demonstrates all available plugin features including Registry, System, and File operations 25 | Check=reg query HKLM\Software\Policies\Microsoft\Windows\DataCollection /v AllowTelemetry && reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Search /v BingSearchEnabled && whoami 26 | Do=reg add HKLM\Software\Policies\Microsoft\Windows\DataCollection /v AllowTelemetry /t REG_DWORD /d 0 /f && reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Search /v BingSearchEnabled /t REG_DWORD /d 0 /f && echo Fixes applied 27 | Undo=reg add HKLM\Software\Policies\Microsoft\Windows\DataCollection /v AllowTelemetry /t REG_DWORD /d 1 /f && reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Search /v BingSearchEnabled /t REG_DWORD /d 1 /f && echo Reverted 28 | 29 | [Expect] 30 | AllowTelemetry=0x0 31 | BingSearchEnabled=0x0 32 | # whoami output is not validated – only logged 33 | 34 | # Optional script body – this executes if the script is run directly 35 | Write-Host "This is the demo plugin pack. Logic can be placed here if needed." 36 | 37 | -------------------------------------------------------------------------------- /CFixer/Features/System/SpeedUpShutdown.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.System 7 | { 8 | internal class SpeedUpShutdown : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control"; 11 | private const string valueName = "WaitToKillServiceTimeout"; 12 | private const string recommendedValue = "1000"; // Set to 1000 ms (1 second) 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue} ms"; 17 | } 18 | 19 | public override string ID() 20 | { 21 | return "Speed Up Shutdown Time"; 22 | } 23 | 24 | public override string Info() 25 | { 26 | return "This feature reduces the WaitToKillServiceTimeout value, which speeds up the shutdown process by reducing the time Windows waits for services to stop."; 27 | } 28 | 29 | public override Task CheckFeature() 30 | { 31 | return Task.FromResult( 32 | Utils.StringEquals(keyName, valueName, recommendedValue) 33 | ); 34 | } 35 | 36 | public override Task DoFeature() 37 | { 38 | try 39 | { 40 | Registry.SetValue(keyName, valueName, recommendedValue, RegistryValueKind.String); 41 | return Task.FromResult(true); 42 | } 43 | catch (Exception ex) 44 | { 45 | Logger.Log("Error in SpeedUpShutdown: " + ex.Message, LogLevel.Error); 46 | } 47 | 48 | return Task.FromResult(false); 49 | } 50 | 51 | public override bool UndoFeature() 52 | { 53 | try 54 | { 55 | Registry.SetValue(keyName, valueName, "5000", RegistryValueKind.String); // Default value 56 | return true; 57 | } 58 | catch (Exception ex) 59 | { 60 | Logger.Log("Error in SpeedUpShutdown (Undo): " + ex.Message, LogLevel.Error); 61 | } 62 | 63 | return false; 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /CFixer/Features/UI/FullContextMenus.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Personalization 7 | { 8 | internal class FullContextMenus : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_CURRENT_USER\SOFTWARE\CLASSES\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32"; 11 | 12 | public override string GetFeatureDetails() 13 | { 14 | return $"{keyName}"; 15 | } 16 | 17 | public override string ID() 18 | { 19 | return "Show Full context menus in Windows 11"; 20 | } 21 | 22 | public override string Info() 23 | { 24 | return "This feature will enable full context menus"; 25 | } 26 | 27 | public override Task CheckFeature() 28 | { 29 | try 30 | { 31 | object value = Registry.GetValue(keyName, "", null); 32 | return Task.FromResult(value != null); // Return true if value is not null 33 | } 34 | catch (Exception ex) 35 | { 36 | Logger.Log("Error occurred while checking: " + ex.Message, LogLevel.Error); 37 | return Task.FromResult(false); 38 | } 39 | } 40 | 41 | public override Task DoFeature() 42 | { 43 | try 44 | { 45 | Registry.SetValue(keyName, "", "", RegistryValueKind.String); 46 | return Task.FromResult(true); 47 | } 48 | catch (Exception ex) 49 | { 50 | Logger.Log("Error occurred while enabling: " + ex.Message, LogLevel.Error); 51 | return Task.FromResult(false); 52 | } 53 | } 54 | 55 | public override bool UndoFeature() 56 | { 57 | try 58 | { 59 | Registry.CurrentUser.DeleteSubKeyTree(@"Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}", false); 60 | return true; 61 | } 62 | catch (Exception ex) 63 | { 64 | Logger.Log("Error occurred while disabling: " + ex.Message, LogLevel.Error); 65 | return false; 66 | } 67 | } 68 | } 69 | } -------------------------------------------------------------------------------- /CFixer/Features/Ads/LockScreenAds.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Ads 7 | { 8 | internal class LockScreenAds : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager"; 11 | private const string valueName = "RotatingLockScreenOverlayEnabled"; 12 | private const string valueName2 = "SubscribedContent-338387Enabled"; 13 | private const int recommendedValue = 0; 14 | 15 | public override string ID() => "Disable Lock Screen Tips and Ads"; 16 | 17 | public override string Info() => "This feature will disable tips and ads on the lock screen."; 18 | 19 | public override string GetFeatureDetails() 20 | { 21 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 22 | } 23 | 24 | public override Task CheckFeature() 25 | { 26 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue) && 27 | Utils.IntEquals(keyName, valueName2, recommendedValue) 28 | ); 29 | } 30 | 31 | public override Task DoFeature() 32 | { 33 | try 34 | { 35 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 36 | Registry.SetValue(keyName, valueName2, 0, Microsoft.Win32.RegistryValueKind.DWord); 37 | 38 | return Task.FromResult(true); 39 | } 40 | catch (Exception ex) 41 | { 42 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 43 | } 44 | 45 | return Task.FromResult(false); 46 | } 47 | 48 | public override bool UndoFeature() 49 | { 50 | try 51 | { 52 | Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 53 | Registry.SetValue(keyName, valueName2, 1, Microsoft.Win32.RegistryValueKind.DWord); 54 | 55 | return true; 56 | } 57 | catch (Exception ex) 58 | { 59 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 60 | } 61 | 62 | return false; 63 | } 64 | } 65 | } -------------------------------------------------------------------------------- /CFixer/Features/System/BSODDetails.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.System 7 | { 8 | internal class BSODDetails : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\CrashControl"; 11 | private const string valueName1 = "DisplayParameters"; 12 | private const string valueName2 = "DisableEmoticon"; 13 | private const int recommendedValue = 1; 14 | 15 | public override string GetFeatureDetails() 16 | { 17 | return $"{keyName} | Values: {valueName1}, {valueName2} | Recommended Value: {recommendedValue}"; 18 | } 19 | 20 | public override string ID() 21 | { 22 | return "Show BSOD details instead of sad smiley"; 23 | } 24 | 25 | public override string Info() 26 | { 27 | return "This method displays the full classic BSOD with technical error details instead of the simplified sad face version."; 28 | } 29 | 30 | public override Task CheckFeature() 31 | { 32 | return Task.FromResult( 33 | Utils.IntEquals(keyName, valueName1, recommendedValue) && 34 | Utils.IntEquals(keyName, valueName2, recommendedValue) 35 | ); 36 | } 37 | 38 | public override Task DoFeature() 39 | { 40 | try 41 | { 42 | Registry.SetValue(keyName, valueName1, recommendedValue, RegistryValueKind.DWord); 43 | Registry.SetValue(keyName, valueName2, recommendedValue, RegistryValueKind.DWord); 44 | return Task.FromResult(true); 45 | } 46 | catch (Exception ex) 47 | { 48 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 49 | } 50 | 51 | return Task.FromResult(false); 52 | } 53 | 54 | public override bool UndoFeature() 55 | { 56 | try 57 | { 58 | Registry.SetValue(keyName, valueName1, 0, RegistryValueKind.DWord); 59 | Registry.SetValue(keyName, valueName2, 0, RegistryValueKind.DWord); 60 | return true; 61 | } 62 | catch (Exception ex) 63 | { 64 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 65 | } 66 | 67 | return false; 68 | } 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /CFixer/Features/AI/Recall.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.AI 7 | { 8 | internal class Recall : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsAI"; 11 | private const string valueName = "AllowRecallEnablement"; 12 | private const int recommendedValue = 0; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended: {recommendedValue} (Recall off – protect your privacy, prevent AI from accessing personal data)"; 17 | } 18 | 19 | 20 | public override string ID() 21 | { 22 | return "Turn off Recall in Windows 11"; 23 | } 24 | 25 | public override string Info() 26 | { 27 | return "This will remove Recall from Windows 11 24H2"; 28 | } 29 | 30 | public override Task CheckFeature() 31 | { 32 | // Check if reg key exists 33 | object value = Registry.GetValue(keyName, valueName, null); 34 | if (value == null) 35 | { 36 | // Key does not exist, turn off feature 37 | return Task.FromResult(false); 38 | } 39 | 40 | // Key exists, check if value is desired value 41 | return Task.FromResult((int)value == recommendedValue); 42 | } 43 | 44 | public override Task DoFeature() 45 | { 46 | try 47 | { 48 | Registry.SetValue(keyName, valueName, recommendedValue, Microsoft.Win32.RegistryValueKind.DWord); 49 | Logger.Log("You've even disabled system-wide Snapshots for all users now.", LogLevel.Info); 50 | return Task.FromResult(true); 51 | } 52 | catch (Exception ex) 53 | { 54 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 55 | } 56 | 57 | return Task.FromResult(false); 58 | } 59 | 60 | public override bool UndoFeature() 61 | { 62 | try 63 | { 64 | Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 65 | return true; 66 | } 67 | catch (Exception ex) 68 | { 69 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 70 | } 71 | 72 | return false; 73 | } 74 | } 75 | } -------------------------------------------------------------------------------- /CFixer/Features/AI/ClickToDo.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using System.Threading.Tasks; 4 | using CrapFixer; 5 | 6 | namespace Settings.UI 7 | { 8 | /// 9 | /// Disables the Click to Do feature, which also removes its entry from the right-click context menu. 10 | /// Only available on Copilot+ PCs running Windows 11 24H2 or newer. 11 | /// Requires a PC with an NPU (Neural Processing Unit). 12 | /// 13 | internal class ClickToDo: FeatureBase 14 | { 15 | private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\ClickToDo"; 16 | private const string valueName = "DisableClickToDo"; 17 | private const int recommendedValue = 1; // 1 = fully disabled, including context menu 18 | 19 | public override string GetFeatureDetails() 20 | { 21 | return $"{keyName} | Value: {valueName} | Set to: {recommendedValue} (disables Click to Do, removing it from context menus). " + 22 | "Note: This setting only applies on Copilot+ PCs with Windows 11 24H2 or newer."; 23 | } 24 | 25 | 26 | 27 | public override string ID() 28 | { 29 | return "Disable Click to Do (Only Copilot+ PCs)"; 30 | } 31 | 32 | public override string Info() 33 | { 34 | return "Disables Click to Do entirely, including its context menu entry which uses on-device AI to suggest actions based on screen content. Only available on Copilot+ PCs with Windows 11 24H2 or newer."; 35 | } 36 | 37 | public override Task CheckFeature() 38 | { 39 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 40 | } 41 | 42 | public override Task DoFeature() 43 | { 44 | try 45 | { 46 | Registry.SetValue(keyName, valueName, recommendedValue, RegistryValueKind.DWord); 47 | return Task.FromResult(true); 48 | } 49 | catch (Exception ex) 50 | { 51 | Logger.Log("Error disabling Click to Do: " + ex.Message, LogLevel.Error); 52 | return Task.FromResult(false); 53 | } 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("Error re-enabling Click to Do: " + ex.Message, LogLevel.Error); 66 | return false; 67 | } 68 | } 69 | } 70 | } -------------------------------------------------------------------------------- /CFixer/Features/Gaming/GameDVR.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Gaming 7 | { 8 | internal class GameDVR : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_CURRENT_USER\System\GameConfigStore"; 11 | 12 | // 0 = Enabled, 2 = Disabled 13 | private const string keyName2 = @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\default\ApplicationManagement\AllowGameDVR"; 14 | 15 | private const string valueName = "GameDVR_Enabled"; 16 | private const string valueName2 = "GameDVR_FSEBehaviorMode"; 17 | private const string valueName3 = "value"; 18 | 19 | public override string GetFeatureDetails() 20 | { 21 | return $"{keyName} |Value: {valueName} | {valueName2} | {keyName2} | {valueName3} "; 22 | } 23 | 24 | public override string ID() 25 | { 26 | return "Disable Game DVR"; 27 | } 28 | 29 | public override string Info() 30 | { 31 | return "This feature will disable Game DVR."; 32 | } 33 | 34 | public override Task CheckFeature() 35 | { 36 | return Task.FromResult(Utils.IntEquals(keyName, valueName, 0) && 37 | Utils.IntEquals(keyName, valueName2, 2) && 38 | Utils.IntEquals(keyName2, valueName3, 0)); 39 | } 40 | 41 | public override Task DoFeature() 42 | { 43 | try 44 | { 45 | Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord); 46 | Registry.SetValue(keyName, valueName2, 2, RegistryValueKind.DWord); 47 | Registry.SetValue(keyName2, valueName3, 0, RegistryValueKind.DWord); 48 | 49 | return Task.FromResult(true); 50 | } 51 | catch (Exception ex) 52 | { 53 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 54 | } 55 | 56 | return Task.FromResult(false); 57 | } 58 | 59 | public override bool UndoFeature() 60 | { 61 | try 62 | { 63 | Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord); 64 | Registry.SetValue(keyName, valueName2, 0, RegistryValueKind.DWord); 65 | Registry.SetValue(keyName2, valueName3, 1, RegistryValueKind.DWord); 66 | 67 | return true; 68 | } 69 | catch (Exception ex) 70 | { 71 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 72 | } 73 | 74 | return false; 75 | } 76 | } 77 | } -------------------------------------------------------------------------------- /CFixer/Features/Ads/SettingsAds.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Ads 7 | { 8 | internal class SettingsAds : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\ContentDeliveryManager"; 11 | private const string valueName = "SubscribedContent-338393Enabled"; 12 | private const string valueName2 = "SubscribedContent-353694Enabled"; 13 | private const string valueName3 = "SubscribedContent-353696Enabled"; 14 | 15 | private const int recommendedValue = 0; 16 | 17 | public override string ID() => "Disable Settings Ads"; 18 | 19 | public override string Info() => "This feature will disable ads in settings."; 20 | 21 | public override string GetFeatureDetails() 22 | { 23 | return $"{keyName} | Value: {valueName} + {valueName2} + {valueName3} | Recommended Value: {recommendedValue}"; 24 | } 25 | 26 | public override Task CheckFeature() 27 | { 28 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue) && 29 | Utils.IntEquals(keyName, valueName2, recommendedValue) && 30 | Utils.IntEquals(keyName, valueName3, recommendedValue) 31 | ); 32 | } 33 | 34 | public override Task DoFeature() 35 | { 36 | try 37 | { 38 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 39 | Registry.SetValue(keyName, valueName2, 0, Microsoft.Win32.RegistryValueKind.DWord); 40 | Registry.SetValue(keyName, valueName3, 0, Microsoft.Win32.RegistryValueKind.DWord); 41 | 42 | return Task.FromResult(true); 43 | } 44 | catch (Exception ex) 45 | { 46 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 47 | } 48 | 49 | return Task.FromResult(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 | Registry.SetValue(keyName, valueName3, 1, Microsoft.Win32.RegistryValueKind.DWord); 59 | 60 | return true; 61 | } 62 | catch (Exception ex) 63 | { 64 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 65 | } 66 | 67 | return false; 68 | } 69 | } 70 | } -------------------------------------------------------------------------------- /CFixer/Features/AI/AskCopilot.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.AI 7 | { 8 | internal class AskCopilot : FeatureBase 9 | { 10 | private const string keyPath = @"Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked"; 11 | private const string fullKeyPath = @"HKEY_CURRENT_USER\" + keyPath; 12 | private const string valueName = "{CB3B0003-8088-4EDE-8769-8B354AB2FF8C}"; 13 | private const string displayValue = "Ask Copilot"; 14 | 15 | public override string GetFeatureDetails() 16 | { 17 | return $"{fullKeyPath} | Value: {valueName} = \"{displayValue}\" | Blocks Copilot context menu entry."; 18 | } 19 | 20 | public override string ID() 21 | { 22 | return "Remove Ask Copilot from context menu"; 23 | } 24 | 25 | public override string Info() 26 | { 27 | return "Blocks the 'Ask Copilot' entry in the Windows 11 context menu by disabling its Shell Extension."; 28 | } 29 | 30 | public override Task CheckFeature() 31 | { 32 | using (RegistryKey key = Registry.CurrentUser.OpenSubKey(keyPath)) 33 | { 34 | if (key == null) return Task.FromResult(false); 35 | object value = key.GetValue(valueName); 36 | return Task.FromResult(value != null && value.ToString() == displayValue); 37 | } 38 | } 39 | 40 | public override Task DoFeature() 41 | { 42 | try 43 | { 44 | using (RegistryKey key = Registry.CurrentUser.CreateSubKey(keyPath)) 45 | { 46 | key.SetValue(valueName, displayValue, RegistryValueKind.String); 47 | } 48 | 49 | Logger.Log("'Ask Copilot' context menu entry has been blocked.", LogLevel.Info); 50 | return Task.FromResult(true); 51 | } 52 | catch (Exception ex) 53 | { 54 | Logger.Log("Error blocking Copilot context menu: " + ex.Message, LogLevel.Error); 55 | return Task.FromResult(false); 56 | } 57 | } 58 | 59 | public override bool UndoFeature() 60 | { 61 | try 62 | { 63 | using (RegistryKey key = Registry.CurrentUser.OpenSubKey(keyPath, writable: true)) 64 | { 65 | key?.DeleteValue(valueName, false); 66 | } 67 | 68 | Logger.Log("'Ask Copilot' context menu entry has been restored.", LogLevel.Info); 69 | return true; 70 | } 71 | catch (Exception ex) 72 | { 73 | Logger.Log("Error restoring Copilot context menu: " + ex.Message, LogLevel.Error); 74 | return false; 75 | } 76 | } 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /CFixer/Views/AboutView.cs: -------------------------------------------------------------------------------- 1 | using CrapFixer; 2 | using System; 3 | using System.Diagnostics; 4 | using System.Windows.Forms; 5 | 6 | namespace Views 7 | { 8 | public partial class AboutView : UserControl 9 | 10 | { 11 | public AboutView() 12 | { 13 | InitializeComponent(); 14 | InitializeUI(); 15 | } 16 | 17 | private void InitializeUI() 18 | { 19 | // Update version label 20 | this.lblVersionInfo.Text = $"v{Program.GetAppVersion()} "; 21 | 22 | // Populate amount choices 23 | comboBoxAmount.Items.AddRange(new object[] { "3.50", "5", "10", 24 | "12", "15", "16", 25 | "17", "18","20", 26 | "25", "30", "35", 27 | "40", "50", "60", 28 | "70", "80", "100"}); 29 | comboBoxAmount.SelectedIndex = 2; 30 | 31 | // Populate currency options 32 | comboBoxCurrency.Items.AddRange(new object[] { "EUR", "USD", "GBP", "CAD", "AUD", "CHF" }); 33 | comboBoxCurrency.SelectedIndex = 0; 34 | } 35 | 36 | private void linkGitHub_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 37 | { 38 | Process.Start("https://github.com/builtbybel/CrapFixer/releases"); 39 | } 40 | 41 | private void btnDonate_Click(object sender, EventArgs e) 42 | { 43 | string amount = comboBoxAmount.SelectedItem?.ToString(); 44 | string currency = comboBoxCurrency.SelectedItem?.ToString(); 45 | 46 | if (string.IsNullOrEmpty(amount) || string.IsNullOrEmpty(currency)) 47 | { 48 | MessageBox.Show("Please select an amount and a currency."); 49 | return; 50 | } 51 | 52 | string email = "belim@builtbybel.com"; 53 | string purpose = Uri.EscapeDataString("Support Development of the CrapFixer app."); 54 | 55 | string returnUrl = Uri.EscapeDataString("https://github.com/Belim/support"); 56 | string cancelUrl = Uri.EscapeDataString("https://github.com/builtbybel/CrapFixer"); 57 | 58 | string url = $"https://www.paypal.com/cgi-bin/webscr?cmd=_donations" + 59 | $"&business={Uri.EscapeDataString(email)}" + 60 | $"&amount={amount}" + 61 | $"¤cy_code={currency}" + 62 | $"&item_name={purpose}" + 63 | $"&return={returnUrl}" + 64 | $"&cancel_return={cancelUrl}"; 65 | 66 | System.Diagnostics.Process.Start(new ProcessStartInfo 67 | { 68 | FileName = url, 69 | UseShellExecute = true 70 | }); 71 | } 72 | } 73 | } -------------------------------------------------------------------------------- /STORY.md: -------------------------------------------------------------------------------- 1 | # Behind every piece of code, there's a human story 2 | 3 | I’ve developed a lot of open-source apps for Windows. 4 | Some came quickly, and many were discontinued just as fast. 5 | Most of my projects focused on fine-tuning, customization, and tweaking Windows. 6 | 7 | Many people on GitHub have asked why I’ve created so many apps, one after another. 8 | I’ve received a lot of messages about it, but I haven’t been able to respond — until now. 9 | 10 | --- 11 | 12 | My latest project is **CrapFixer**, and it’s meant to be the last one in this area, replacing everything that came before. 13 | I’ve slowly grown up — and so has this project. 14 | 15 | My answer to many of your questions is actually quite personal. 16 | As strange as it might sound: we’re all human. We all struggle, try to keep functioning, distract ourselves, and, eventually, heal. 17 | 18 | It took me a long time to heal after losing my mother a few years ago. 19 | For days on end, I just worked — really worked — and coded through countless nights. 20 | Every single minute, I needed a distraction. 21 | I only went to bed when my eyes simply couldn’t stay open any longer. 22 | Distraction was the only thing that mattered, no matter the cost. 23 | 24 | Sometimes, I’d drive deep into the woods, where no one could find me, hear me, or see me. 25 | I left everything behind — my worries, my grief, my life — until there was nothing left but me and the machine. 26 | I completely threw myself into programming as a way to escape and keep going. 27 | 28 | --- 29 | 30 | Many of my projects will never be visible here on GitHub; others you might know. 31 | There were times when I felt really low and had strange thoughts. 32 | Then I would look for a new distraction to keep from giving up. 33 | It went on like that for weeks, months, years — and now I’m here. 34 | 35 | Looking back, it’s kind of crazy: this project, **CrapFixer** — even though it didn’t really have a name back then — is *old*. 36 | Older than this story. 37 | It reminds me of a time when everything still felt right, when I was genuinely happy. 38 | 39 | Maybe it will outlive all of us. 🙂🚗 40 | 41 | --- 42 | 43 | I only truly understood life late in my 30s, but I never gave up. 44 | Coding may have even saved my life. 45 | I’m still here. 46 | And I have to admit: I’m also thankful — to Microsoft and the whole Windows platform — for being part of that journey. 47 | 48 | --- 49 | 50 | Don’t take life too seriously. 51 | Let people live. 52 | Everyone’s character is different; everyone just wants to live. 53 | A simple “hello” to someone you don’t know can work wonders. 54 | You never know what’s going on inside that person’s soul — or what they’re going through. 55 | 56 | Maybe that’s worth remembering: 57 | > **Behind every piece of code, every project, every bit of tech, there’s often a deeply human story.** 58 | 59 | --- 60 | 61 | > *“No matter how sophisticated computers get, there’s one thing that sets humans apart: They can do everything, but they can’t feel joy. 62 | > I can program a computer to play Beethoven, but I can’t program it to enjoy it.”* 63 | > — **Georges Dennis O’Brien** 64 | -------------------------------------------------------------------------------- /CFixer/NavigationManager.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Windows.Forms; 3 | 4 | /// 5 | /// Manages navigation between different views. 6 | /// 7 | public class NavigationManager 8 | { 9 | private Stack navigationHistory = new Stack(); // Holds previous views 10 | private Panel panelContainer; // Reference to the panel container where views are switched 11 | private Control mainPanel; // Reference to the main panel (start page) 12 | 13 | public NavigationManager(Panel panel) 14 | { 15 | this.panelContainer = panel; 16 | this.mainPanel = panel.Controls.Count > 0 ? panel.Controls[0] : null; 17 | } 18 | 19 | /// 20 | /// Checks if there are views in the navigation history to go back to. 21 | /// 22 | public bool CanGoBack() 23 | { 24 | return navigationHistory.Count > 0; 25 | } 26 | 27 | /// 28 | /// Adds the current control to the navigation history. 29 | /// 30 | private void AddToHistory() 31 | { 32 | if (panelContainer.Controls.Count > 0) 33 | { 34 | // Add the currently visible control to the history stack 35 | navigationHistory.Push(panelContainer.Controls[0]); 36 | } 37 | } 38 | 39 | /// 40 | /// Switches to a new view and adds the current view to the navigation history. 41 | /// 42 | /// The new view to display. 43 | public void SwitchView(Control newView) 44 | { 45 | AddToHistory(); // Save the current view before switching 46 | 47 | // Clear the container and display the new view 48 | panelContainer.Controls.Clear(); 49 | panelContainer.Controls.Add(newView); 50 | newView.Dock = DockStyle.Fill; 51 | newView.BringToFront(); 52 | } 53 | 54 | /// 55 | /// Navigates back to the previous view in the history, if available. 56 | /// 57 | public void GoBack() 58 | { 59 | if (CanGoBack()) 60 | { 61 | // Pop the last view from the history stack and display it 62 | Control previousView = navigationHistory.Pop(); 63 | panelContainer.Controls.Clear(); 64 | panelContainer.Controls.Add(previousView); 65 | previousView.Dock = DockStyle.Fill; 66 | previousView.BringToFront(); 67 | } 68 | } 69 | 70 | /// 71 | /// Clears the navigation history. 72 | /// 73 | public void ClearHistory() 74 | { 75 | navigationHistory.Clear(); 76 | } 77 | 78 | /// 79 | /// Switches directly to the main panel, clearing the navigation history. 80 | /// 81 | public void GoToMain() 82 | { 83 | if (mainPanel != null) 84 | { 85 | navigationHistory.Clear(); // Clear the navigation history 86 | panelContainer.Controls.Clear(); 87 | panelContainer.Controls.Add(mainPanel); 88 | mainPanel.Dock = DockStyle.Fill; 89 | mainPanel.BringToFront(); 90 | } 91 | } 92 | } -------------------------------------------------------------------------------- /CFixer/Helpers/Utils.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using System.Diagnostics; 4 | using System.Windows.Forms; 5 | 6 | namespace CrapFixer 7 | { 8 | internal static class Utils 9 | { 10 | private const string GitHubUrl = "https://github.com/builtbybel/CrapFixer"; 11 | 12 | /// 13 | /// Checks if a registry value equals a specified integer. 14 | /// 15 | public static bool IntEquals(string keyName, string valueName, int expectedValue) 16 | { 17 | try 18 | { 19 | object value = Registry.GetValue(keyName, valueName, null); 20 | return value is int intValue && intValue == expectedValue; 21 | } 22 | catch (Exception ex) 23 | { 24 | Logger.Log($"Registry check failed for {keyName}\\{valueName}: {ex.Message}", LogLevel.Error); 25 | return false; 26 | } 27 | } 28 | 29 | /// 30 | /// Checks if a registry value equals a specified string. 31 | /// 32 | public static bool StringEquals(string keyName, string valueName, string expectedValue) 33 | { 34 | try 35 | { 36 | object value = Registry.GetValue(keyName, valueName, null); 37 | return value is string strValue && strValue == expectedValue; 38 | } 39 | catch (Exception ex) 40 | { 41 | Logger.Log($"Registry check failed for {keyName}\\{valueName}: {ex.Message}", LogLevel.Error); 42 | return false; 43 | } 44 | } 45 | 46 | /// 47 | /// Opens the GitHub project page in the default browser. 48 | /// 49 | public static void OpenGitHubPage(object sender, EventArgs e) 50 | { 51 | try 52 | { 53 | Process.Start(new ProcessStartInfo 54 | { 55 | FileName = GitHubUrl, 56 | UseShellExecute = true 57 | }); 58 | } 59 | catch (Exception ex) 60 | { 61 | Logger.Log($"Failed to open GitHub page: {ex.Message}", LogLevel.Error); 62 | } 63 | } 64 | 65 | /// 66 | /// Restarts Windows Explorer to apply UI changes. 67 | /// 68 | public static void RestartExplorer() 69 | { 70 | try 71 | { 72 | Logger.Log("Restarting Windows Explorer to apply UI changes...", LogLevel.Info); 73 | 74 | foreach (var process in Process.GetProcessesByName("explorer")) 75 | { 76 | process.Kill(); 77 | process.WaitForExit(); 78 | } 79 | 80 | Process.Start("explorer.exe"); 81 | Logger.Log("Explorer restarted successfully.", LogLevel.Info); 82 | } 83 | catch (Exception ex) 84 | { 85 | Logger.Log($"Failed to restart Explorer: {ex.Message}", LogLevel.Error); 86 | } 87 | } 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /docs/log-analyzer/js/main.js: -------------------------------------------------------------------------------- 1 | // read text from clipboard 2 | async function pasteResult() { 3 | try { 4 | const text = await navigator.clipboard.readText(); 5 | if (!text) { 6 | alert("Clipboard is empty"); 7 | return; 8 | } 9 | document.getElementById("logInput").value = text; 10 | analyzeLog(); // analyze directly! 11 | } catch (err) { 12 | alert("No access to clipboard " + err); 13 | } 14 | } 15 | 16 | // Analyze the pasted log and extract issues, registry keys, and plugin info 17 | function analyzeLog() { 18 | const log = document.getElementById("logInput").value; 19 | const output = document.getElementById("output"); 20 | const lines = log.split("\n"); 21 | 22 | const issues = lines.filter((line) => line.startsWith("❌")); 23 | const regKeys = lines.filter((line) => line.includes("HKEY_") || line.includes("➤")); 24 | const plugins = lines.filter((line) => line.match(/Plugin ready: .*\.ps1/i)); 25 | 26 | output.innerHTML = ` 27 |

🧪 Found ${issues.length} issues

28 |
${issues.map((i) => `
${i}
`).join("")}
29 |
30 |

🗂 Registry Keys

31 |
${regKeys.map((k) => `
${k}
`).join("")}
32 |
33 |

📦 Loaded Plugins

34 |
${plugins.map((p) => `
${p}
`).join("")}
35 | `; 36 | } 37 | 38 | // Save screenshot of the output section 39 | function captureResult() { 40 | html2canvas(document.getElementById("output")).then((canvas) => { 41 | const link = document.createElement("a"); 42 | link.download = "CrapFixer-results.png"; 43 | link.href = canvas.toDataURL(); 44 | link.click(); 45 | }); 46 | } 47 | 48 | // Native share (for mobile browsers) 49 | function shareResult() { 50 | const text = document.getElementById("output").innerText; 51 | if (navigator.share) { 52 | navigator 53 | .share({ 54 | title: "CrapFixer Analysis Results", 55 | text: text, 56 | }) 57 | .catch((err) => console.log("Share failed:", err)); 58 | } else { 59 | alert("Sharing is not supported by your browser."); 60 | } 61 | } 62 | 63 | // Share the result as an image on Twitter/X 64 | function shareOnTwitter() { 65 | const outputEl = document.getElementById("output"); 66 | if (!outputEl.innerText.trim()) return alert("No results to share yet."); 67 | 68 | // Create screenshot from result div 69 | html2canvas(outputEl).then((canvas) => { 70 | const dataUrl = canvas.toDataURL("image/png"); 71 | 72 | // Convert image to base64 string (can't upload directly to Twitter) 73 | // Instead, show preview and user uploads manually via prompt 74 | const win = window.open(); 75 | win.document.write(`

📷 Screenshot ready for X / Twitter

`); 76 | win.document.write( 77 | `

Right-click the image below and save it to upload on Twitter manually.

` 78 | ); 79 | win.document.write( 80 | `` 81 | ); 82 | win.document.write( 83 | `

➡️ Click here to post on X

` 84 | ); 85 | }); 86 | } 87 | -------------------------------------------------------------------------------- /plugins/Uninstall OneDrive.ps1: -------------------------------------------------------------------------------- 1 | #Requires -RunAsAdministrator 2 | 3 | # Check if running as Administrator 4 | if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { 5 | Write-Warning "This script must be run as Administrator." 6 | Start-Process powershell.exe -Verb RunAs -ArgumentList ("-File `"{0}`"" -f $MyInvocation.MyCommand.Path) 7 | exit 8 | } 9 | 10 | Import-Module -DisableNameChecking $PSScriptRoot\..\lib\force-mkdir.psm1 11 | Import-Module -DisableNameChecking $PSScriptRoot\..\lib\take-own.psm1 12 | 13 | Write-Output "Kill OneDrive process" 14 | taskkill.exe /F /IM "OneDrive.exe" 15 | taskkill.exe /F /IM "explorer.exe" 16 | 17 | Write-Output "Remove OneDrive" 18 | if (Test-Path "$env:systemroot\System32\OneDriveSetup.exe") { 19 | & "$env:systemroot\System32\OneDriveSetup.exe" /uninstall 20 | } 21 | if (Test-Path "$env:systemroot\SysWOW64\OneDriveSetup.exe") { 22 | & "$env:systemroot\SysWOW64\OneDriveSetup.exe" /uninstall 23 | } 24 | 25 | Write-Output "Removing OneDrive leftovers" 26 | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "$env:localappdata\Microsoft\OneDrive" 27 | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "$env:programdata\Microsoft OneDrive" 28 | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "$env:systemdrive\OneDriveTemp" 29 | # check if directory is empty before removing: 30 | If ((Get-ChildItem "$env:userprofile\OneDrive" -Recurse | Measure-Object).Count -eq 0) { 31 | Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "$env:userprofile\OneDrive" 32 | } 33 | 34 | Write-Output "Disable OneDrive via Group Policies" 35 | force-mkdir "HKLM:\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows\OneDrive" 36 | Set-ItemProperty "HKLM:\SOFTWARE\Wow6432Node\Policies\Microsoft\Windows\OneDrive" "DisableFileSyncNGSC" 1 37 | 38 | Write-Output "Remove Onedrive from explorer sidebar" 39 | New-PSDrive -PSProvider "Registry" -Root "HKEY_CLASSES_ROOT" -Name "HKCR" 40 | mkdir -Force "HKCR:\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}" 41 | Set-ItemProperty "HKCR:\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}" "System.IsPinnedToNameSpaceTree" 0 42 | mkdir -Force "HKCR:\Wow6432Node\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}" 43 | Set-ItemProperty "HKCR:\Wow6432Node\CLSID\{018D5C66-4533-4307-9B53-224DE2ED1FE6}" "System.IsPinnedToNameSpaceTree" 0 44 | Remove-PSDrive "HKCR" 45 | 46 | # Thank you Matthew Israelsson 47 | Write-Output "Removing run hook for new users" 48 | reg load "hku\Default" "C:\Users\Default\NTUSER.DAT" 49 | reg delete "HKEY_USERS\Default\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "OneDriveSetup" /f 50 | reg unload "hku\Default" 51 | 52 | Write-Output "Removing startmenu entry" 53 | Remove-Item -Force -ErrorAction SilentlyContinue "$env:userprofile\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\OneDrive.lnk" 54 | 55 | Write-Output "Removing scheduled task" 56 | Get-ScheduledTask -TaskPath '\' -TaskName 'OneDrive*' -ea SilentlyContinue | Unregister-ScheduledTask -Confirm:$false 57 | 58 | Write-Output "Restarting explorer" 59 | Start-Process "explorer.exe" 60 | 61 | Write-Output "Waiting for explorer to complete loading" 62 | Start-Sleep 10 # Consider if this sleep is always necessary or could be shorter/conditional 63 | 64 | Write-Output "Removing additional OneDrive leftovers" 65 | foreach ($item in (Get-ChildItem "$env:WinDir\WinSxS\*onedrive*")) { 66 | Takeown-Folder $item.FullName 67 | Remove-Item -Recurse -Force $item.FullName 68 | } 69 | Write-Output "Bloatynosy NueEx can confirm the uninstallation of the OneDrive app." -------------------------------------------------------------------------------- /CFixer/Helpers/OSHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.ObjectModel; 3 | using System.Management.Automation; 4 | using System.Threading.Tasks; 5 | using Microsoft.Win32; 6 | 7 | namespace OSHelper 8 | { 9 | internal class OSHelper 10 | { 11 | public static async Task GetWindowsVersion() 12 | { 13 | return await Task.Run(() => 14 | { 15 | try 16 | { 17 | using (PowerShell ps = PowerShell.Create()) 18 | { 19 | ps.AddScript("Get-CimInstance -ClassName Win32_OperatingSystem"); 20 | var results = ps.Invoke(); 21 | 22 | foreach (var result in results) 23 | { 24 | if (result == null) continue; 25 | 26 | string caption = result.Properties["Caption"]?.Value?.ToString(); 27 | string version = result.Properties["Version"]?.Value?.ToString(); 28 | string build = result.Properties["BuildNumber"]?.Value?.ToString(); 29 | 30 | string displayVersion = Registry.GetValue( 31 | @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", 32 | "DisplayVersion", "")?.ToString(); 33 | 34 | // UBR = Update Build Revision 35 | string ubr = Registry.GetValue( 36 | @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", 37 | "UBR", 0)?.ToString(); 38 | 39 | bool isInsider = false; 40 | string ring = null; 41 | 42 | using (var insiderKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\UpdateOrchestrator")) 43 | { 44 | if (insiderKey != null) 45 | { 46 | object enabled = insiderKey.GetValue("EnableInsiderBuilds"); 47 | if (enabled != null && Convert.ToInt32(enabled) == 1) 48 | { 49 | isInsider = true; 50 | ring = insiderKey.GetValue("Ring")?.ToString(); 51 | } 52 | } 53 | } 54 | 55 | string osName = caption?.Contains("Windows 11") == true ? "Windows 11" : 56 | caption?.Contains("Windows 10") == true ? "Windows 10" : 57 | caption ?? "Unknown OS"; 58 | 59 | string fullBuild = !string.IsNullOrEmpty(build) && !string.IsNullOrEmpty(ubr) 60 | ? $"{build}.{ubr}" 61 | : build ?? "unknown"; 62 | 63 | string insiderInfo = isInsider ? $" (Insider: {ring})" : ""; 64 | 65 | return $"{osName} {displayVersion}{insiderInfo} (Build {fullBuild})"; 66 | } 67 | } 68 | } 69 | catch (Exception ex) 70 | { 71 | return $"OS info unavailable: {ex.Message}"; 72 | } 73 | 74 | return "OS not supported"; 75 | }); 76 | } 77 | } 78 | } -------------------------------------------------------------------------------- /CFixer/Helpers/Logger.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Drawing; 3 | using System.Windows.Forms; 4 | 5 | /// 6 | /// A simple logger class to log messages to a RichTextBox. 7 | /// 8 | public static class Logger 9 | { 10 | /// 11 | /// The RichTextBox control to which log messages are written. 12 | /// 13 | public static RichTextBox OutputBox; 14 | 15 | private static readonly Font DefaultFont = new Font("Tahoma", 8.25f, FontStyle.Regular); 16 | 17 | /// 18 | /// Writes a message with an optional log level and custom font. 19 | /// 20 | /// The message to display. 21 | /// The log level (e.g., Info, Warning, Error). 22 | /// An optional font for the message. 23 | public static void Log(string message, LogLevel level = LogLevel.Info, Font customFont = null) 24 | { 25 | if (OutputBox == null) return; 26 | 27 | if (OutputBox.InvokeRequired) 28 | { 29 | OutputBox.Invoke(new Action(() => LogInternal(message, level, customFont))); 30 | } 31 | else 32 | { 33 | LogInternal(message, level, customFont); 34 | } 35 | } 36 | 37 | /// 38 | /// Internal method to append text to the RichTextBox with formatting. 39 | /// 40 | private static void LogInternal(string message, LogLevel level, Font customFont = null) 41 | { 42 | // string prefix = $"[{DateTime.Now:HH:mm:ss}] [{level}] "; 43 | string fullMessage = message + Environment.NewLine; 44 | 45 | // Set color based on log level 46 | Color color; 47 | switch (level) 48 | { 49 | case LogLevel.Warning: 50 | color = Color.OrangeRed; 51 | break; 52 | 53 | case LogLevel.Error: 54 | color = Color.Red; 55 | break; 56 | 57 | case LogLevel.Custom: 58 | color = Color.Magenta; // for plugins and other custom messages 59 | break; 60 | 61 | default: 62 | color = Color.Black; 63 | break; 64 | } 65 | 66 | // Append formatted message 67 | OutputBox.SelectionStart = OutputBox.TextLength; 68 | OutputBox.SelectionLength = 0; 69 | OutputBox.SelectionColor = color; 70 | OutputBox.SelectionFont = customFont ?? DefaultFont; // use custom font if provided, otherwise use default 71 | OutputBox.AppendText(fullMessage); 72 | 73 | // Reset selection to default 74 | OutputBox.SelectionColor = OutputBox.ForeColor; // reset color 75 | OutputBox.SelectionFont = DefaultFont; // reset font 76 | OutputBox.ScrollToCaret(); // scroll to the end 77 | } 78 | 79 | /// 80 | /// Clears the log output. 81 | /// 82 | public static void Clear() 83 | { 84 | if (OutputBox == null || OutputBox.IsDisposed) 85 | return; 86 | 87 | if (OutputBox.InvokeRequired) 88 | { 89 | OutputBox.Invoke(new Action(Clear)); 90 | return; 91 | } 92 | 93 | OutputBox.Clear(); 94 | OutputBox.SelectionColor = Color.Black; 95 | } 96 | } 97 | 98 | /// 99 | /// Log level types used to define message severity. 100 | /// 101 | public enum LogLevel 102 | { 103 | Info, 104 | Warning, 105 | Error, 106 | Custom 107 | } -------------------------------------------------------------------------------- /CFixer/app.manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 54 | 55 | 56 | 57 | true 58 | true 59 | 60 | 61 | 62 | 63 | 64 | 78 | 79 | 80 | -------------------------------------------------------------------------------- /plugins/plugins_manifest.txt: -------------------------------------------------------------------------------- 1 | [ChrisTitusApp] 2 | description=Chris Titus Tech's Windows Utility - Install Programs, Tweaks, Fixes, and Updates 3 | url=https://raw.githubusercontent.com/builtbybel/Crapfixer/refs/heads/main/plugins/ChrisTitusApp.ps1 4 | 5 | [Create Restore Point] 6 | description=Creates a system restore point to allow recovery before major changes are applied. 7 | url=https://raw.githubusercontent.com/builtbybel/Crapfixer/refs/heads/main/plugins/Create Restore Point.ps1 8 | 9 | [Remove default apps] 10 | description=Removes preinstalled Windows default apps to declutter the system. 11 | url=https://raw.githubusercontent.com/builtbybel/Crapfixer/refs/heads/main/plugins/Remove default apps.ps1 12 | 13 | [Remove Windows AI] 14 | description=Disables and removes AI-related features and integrations in Windows. 15 | Developer: zoicware | Web: https://github.com/zoicware/RemoveWindowsAI 16 | url=https://raw.githubusercontent.com/builtbybel/Crapfixer/refs/heads/main/plugins/Remove Windows AI.ps1 17 | 18 | [Restart Explorer] 19 | description=Restarts the Windows Explorer process to apply changes or recover from crashes. 20 | url=https://raw.githubusercontent.com/builtbybel/Crapfixer/refs/heads/main/plugins/Restart Explorer.ps1 21 | 22 | [Restore all built-in apps] 23 | description=Restores all removed default Windows apps to their original state. 24 | url=https://raw.githubusercontent.com/builtbybel/Crapfixer/refs/heads/main/plugins/Restore all built-in apps.ps1 25 | 26 | [Uninstall OneDrive] 27 | description=Completely uninstalls Microsoft OneDrive from the system. 28 | url=https://raw.githubusercontent.com/builtbybel/Crapfixer/refs/heads/main/plugins/Uninstall OneDrive.ps1 29 | 30 | [CFEnhancer] 31 | description=Enhanced bloatware detection list used instead of the internal signature. If present in the plugins folder, it overrides the built-in detection mechanism. 32 | Use * or *.* to show all apps on your system. 33 | Use "!"AppName to whitelist apps (exclude from detection). 34 | url=https://raw.githubusercontent.com/builtbybel/Crapfixer/refs/heads/main/plugins/CFEnhancer.txt 35 | 36 | [Disable Snap Assist Flyout (NX)] 37 | description=Disables the Snap Assist feature when hovering over window maximize buttons. Can be re-enabled anytime. 38 | url=https://raw.githubusercontent.com/builtbybel/Crapfixer/refs/heads/main/plugins/Disable Snap Assist Flyout (NX).ps1 39 | 40 | [File Extensions Visibility (NX)] 41 | description=Hides or shows known file extensions and super hidden files in File Explorer. Changes can be reversed. 42 | url=https://raw.githubusercontent.com/builtbybel/Crapfixer/refs/heads/main/plugins/File Extensions Visibility (NX).ps1 43 | 44 | [Shutdown Time (NX)] 45 | description=Adjusts shutdown wait times for apps and background processes to speed up shutdown. Fully reversible. 46 | url=https://raw.githubusercontent.com/builtbybel/Crapfixer/refs/heads/main/plugins/Shutdown Time (NX).ps1 47 | 48 | [User Account Control (NX)] 49 | description=Enables or disables User Account Control (UAC). Recommended for advanced users only. Can be reverted anytime. 50 | url=https://raw.githubusercontent.com/builtbybel/Crapfixer/refs/heads/main/plugins/User Account Control (NX).ps1 51 | 52 | [Remove Edit with Clipchamp (NX)] 53 | description=Removes the 'Edit with Clipchamp' option from the context menu for media files. 54 | url=https://raw.githubusercontent.com/builtbybel/Crapfixer/refs/heads/main/plugins/Remove Edit with Clipchamp (NX).ps1 55 | 56 | [Remove Edit with Notepad (NX)] 57 | description=Removes the 'Edit in Notepad' option from the context menu for supported file types. 58 | url=https://raw.githubusercontent.com/builtbybel/Crapfixer/refs/heads/main/plugins/Remove Edit with Notepad (NX).ps1 59 | 60 | [Remove Edit with Photos (NX)] 61 | description=Removes the 'Edit with Photos' option from the context menu for image files. 62 | url=https://raw.githubusercontent.com/builtbybel/Crapfixer/refs/heads/main/plugins/Remove Edit with Photos (NX).ps1 63 | 64 | [Remove Ask Copilot (NX)] 65 | description=Removes the 'Ask Copilot' option from the context menu for files and folders. 66 | url=https://raw.githubusercontent.com/builtbybel/Crapfixer/refs/heads/main/plugins/Remove Ask Copilot (NX).ps1 67 | -------------------------------------------------------------------------------- /CFixer/Features/UI/DarkMode.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using CrapFixer; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Personalization 7 | { 8 | internal class AppDarkMode : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize"; 11 | private const string valueName = "AppsUseLightTheme"; 12 | private const int recommendedValue = 0; 13 | 14 | public override string GetFeatureDetails() 15 | { 16 | return $"{keyName} | Value: {valueName} | Recommended: {recommendedValue} (Dark mode – preferred for a modern look, but up to you)"; 17 | } 18 | 19 | public override string ID() 20 | { 21 | return "Enable Dark Mode for Apps"; 22 | } 23 | 24 | public override string Info() 25 | { 26 | return "This feature enables Dark Mode for apps in Windows 11."; 27 | } 28 | 29 | public override Task CheckFeature() 30 | { 31 | return Task.FromResult( 32 | Utils.IntEquals(keyName, valueName, recommendedValue) 33 | ); 34 | } 35 | 36 | public override Task DoFeature() 37 | { 38 | try 39 | { 40 | Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord); 41 | return Task.FromResult(true); 42 | } 43 | catch (Exception ex) 44 | { 45 | Logger.Log("Error in AppDarkMode: " + ex.Message, LogLevel.Error); 46 | } 47 | 48 | return Task.FromResult(false); 49 | } 50 | 51 | public override bool UndoFeature() 52 | { 53 | try 54 | { 55 | Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord); 56 | return true; 57 | } 58 | catch (Exception ex) 59 | { 60 | Logger.Log("Error in AppDarkMode (Undo): " + ex.Message, LogLevel.Error); 61 | } 62 | 63 | return false; 64 | } 65 | } 66 | 67 | internal class SystemDarkMode : FeatureBase 68 | { 69 | private const string keyName = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize"; 70 | private const string valueName = "SystemUsesLightTheme"; 71 | private const int recommendedValue = 0; 72 | 73 | public override string GetFeatureDetails() 74 | { 75 | return $"{keyName} | Value: {valueName} | Suggestion: {recommendedValue} (Dark mode – easy on the eyes, but totally your call)"; 76 | } 77 | 78 | public override string ID() 79 | { 80 | return "Enable Dark Mode for System"; 81 | } 82 | 83 | public override string Info() 84 | { 85 | return "This feature enables Dark Mode for Windows system UI (e.g., taskbar, start menu)."; 86 | } 87 | 88 | public override Task CheckFeature() 89 | { 90 | return Task.FromResult( 91 | Utils.IntEquals(keyName, valueName, recommendedValue) 92 | ); 93 | } 94 | 95 | public override Task DoFeature() 96 | { 97 | try 98 | { 99 | Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord); 100 | Utils.RestartExplorer(); // Restart Explorer to apply changes 101 | return Task.FromResult(true); 102 | } 103 | catch (Exception ex) 104 | { 105 | Logger.Log("Error in SystemDarkMode: " + ex.Message, LogLevel.Error); 106 | } 107 | 108 | return Task.FromResult(false); 109 | } 110 | 111 | public override bool UndoFeature() 112 | { 113 | try 114 | { 115 | Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord); 116 | Utils.RestartExplorer(); // Restart Explorer to apply changes 117 | return true; 118 | } 119 | catch (Exception ex) 120 | { 121 | Logger.Log("Error in SystemDarkMode (Undo): " + ex.Message, LogLevel.Error); 122 | } 123 | 124 | return false; 125 | } 126 | } 127 | } 128 | -------------------------------------------------------------------------------- /CFixer/Views/SettingsView.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Net; 6 | using System.Windows.Forms; 7 | 8 | namespace CFixer.Views 9 | { 10 | public partial class SettingsView : UserControl 11 | { 12 | public SettingsView() 13 | { 14 | InitializeComponent(); 15 | LoadSettings(); 16 | CheckIfIconsInstalled(); 17 | } 18 | 19 | /// 20 | /// Collects and saves all relevant checkbox settings to the INI file. 21 | /// 22 | public void SaveSettings() 23 | { 24 | var settings = new Dictionary 25 | { 26 | { nameof(checkSaveToINI), checkSaveToINI.Checked }, 27 | }; 28 | 29 | IniStateManager.SaveViewSettings("SETTINGS", settings); 30 | } 31 | 32 | /// 33 | /// Loads checkbox settings from the INI file and applies them to the view. 34 | /// 35 | public void LoadSettings() 36 | { 37 | var settings = IniStateManager.LoadViewSettings("SETTINGS"); 38 | checkSaveToINI.Checked = settings.GetValueOrDefault(nameof(checkSaveToINI), false); 39 | } 40 | 41 | private void SettingsView_Leave(object sender, EventArgs e) 42 | { 43 | SaveSettings(); 44 | } 45 | 46 | private void CheckIfIconsInstalled() 47 | { 48 | string iconFolder = Path.Combine(Application.StartupPath, "icons"); 49 | string[] requiredIcons = { "fixer.png", "options.png", "restore.png" }; 50 | 51 | bool allIconsExist = requiredIcons.All(icon => File.Exists(Path.Combine(iconFolder, icon))); 52 | 53 | checkInstallIcons.Enabled = !allIconsExist; 54 | } 55 | 56 | private async void checkInstallIcons_CheckedChanged(object sender, EventArgs e) 57 | { 58 | var result = MessageBox.Show( 59 | "By default, buttons have no icons to reduce app size. Enable this to download and display navigation icons." + 60 | "\nWould you like to install it now?", 61 | "Icons Pack Detected", 62 | MessageBoxButtons.YesNo, 63 | MessageBoxIcon.Information 64 | ); 65 | 66 | if (result == DialogResult.Yes) 67 | { 68 | try 69 | { 70 | string iconFolder = Path.Combine(Application.StartupPath, "icons"); 71 | if (!Directory.Exists(iconFolder)) 72 | Directory.CreateDirectory(iconFolder); 73 | 74 | string[] iconFiles = new string[] 75 | { 76 | "fixer.png", 77 | "options.png", 78 | "restore.png" 79 | }; 80 | 81 | string baseUrl = "https://raw.githubusercontent.com/builtbybel/CrapFixer/main/icons/"; 82 | 83 | using (var wc = new WebClient()) 84 | { 85 | foreach (string fileName in iconFiles) 86 | { 87 | string url = baseUrl + fileName; 88 | string localPath = Path.Combine(iconFolder, fileName); 89 | await wc.DownloadFileTaskAsync(new Uri(url), localPath); 90 | } 91 | } 92 | 93 | MessageBox.Show( 94 | "All icons have been successfully installed in the 'icons' folder!\n\n💖 Love CrapFixer? Consider supporting me with a small donation to keep this tool alive and improving!", 95 | "Icons Installed", 96 | MessageBoxButtons.OK, 97 | MessageBoxIcon.Information 98 | ); 99 | 100 | // Restart the application to apply changes 101 | Application.Restart(); 102 | } 103 | catch (Exception ex) 104 | { 105 | MessageBox.Show("❌ An error occurred while downloading the icons:\n" + ex.Message, 106 | "Download Failed", 107 | MessageBoxButtons.OK, 108 | MessageBoxIcon.Error); 109 | } 110 | } 111 | } 112 | } 113 | } -------------------------------------------------------------------------------- /CFixer/Features/Issues/WingetUpgrade.cs: -------------------------------------------------------------------------------- 1 | using CrapFixer; 2 | using System; 3 | using System.Diagnostics; 4 | using System.Drawing; 5 | using System.Threading.Tasks; 6 | 7 | namespace Settings.System 8 | { 9 | internal class WingetUpgradeAll : FeatureBase 10 | { 11 | public override string GetFeatureDetails() 12 | { 13 | return "winget upgrade --include-unknown"; 14 | } 15 | 16 | public override string ID() 17 | { 18 | return "Winget App Updates"; 19 | } 20 | 21 | public override string Info() 22 | { 23 | return "Automatically searches for available app updates using the Windows package manager 'winget' and installs them in a new Windows Terminal window. It runs 'winget upgrade --include-unknown' to list all available updates, including manually installed apps, and then 'winget upgrade --all --include-unknown' to install them. No manual interaction is required."; 24 | } 25 | 26 | public override async Task CheckFeature() 27 | { 28 | Logger.Log("📦 Checking all available updates via winget...", LogLevel.Warning); 29 | Logger.Log("This may take a while, please be patient.", LogLevel.Warning); 30 | 31 | try 32 | { 33 | string output = await ExecuteCommand("winget upgrade --include-unknown" ); 34 | 35 | Logger.Log("Winget upgrade check:\n" + output, LogLevel.Info, new Font("Cascadia Mono", 8.25f)); 36 | 37 | return output.ToLower().Contains("available"); 38 | } 39 | catch (Exception ex) 40 | { 41 | Logger.Log("Winget check failed: " + ex.Message, LogLevel.Error); 42 | return false; 43 | } 44 | } 45 | 46 | public override Task DoFeature() 47 | { 48 | return Task.Factory.StartNew(() => 49 | { 50 | try 51 | { 52 | LaunchInTerminal("winget upgrade --all --include-unknown"); 53 | return true; 54 | } 55 | catch (Exception ex) 56 | { 57 | Logger.Log("Failed to run winget upgrade: " + ex.Message, LogLevel.Error); 58 | return false; 59 | } 60 | }); 61 | } 62 | 63 | public override bool UndoFeature() 64 | { 65 | Logger.Log("Winget upgrades cannot be undone.", LogLevel.Warning); 66 | return false; 67 | } 68 | 69 | private void LaunchInTerminal(string command) 70 | { 71 | var startInfo = new ProcessStartInfo 72 | { 73 | FileName = "wt.exe", 74 | Arguments = "-w 0 nt -p \"Windows PowerShell\" powershell -NoExit -Command \"" + command + "\"", 75 | UseShellExecute = true 76 | }; 77 | 78 | Process.Start(startInfo); 79 | } 80 | 81 | private Task ExecuteCommand(string command) 82 | { 83 | var tcs = new TaskCompletionSource(); 84 | 85 | try 86 | { 87 | var startInfo = new ProcessStartInfo 88 | { 89 | FileName = "cmd.exe", 90 | Arguments = "/c " + command, 91 | UseShellExecute = false, 92 | RedirectStandardOutput = true, 93 | RedirectStandardError = true, 94 | CreateNoWindow = true 95 | }; 96 | 97 | var process = new Process(); 98 | process.StartInfo = startInfo; 99 | 100 | string output = ""; 101 | 102 | process.OutputDataReceived += (sender, args) => 103 | { 104 | if (args.Data != null) 105 | output += args.Data + Environment.NewLine; 106 | }; 107 | 108 | process.EnableRaisingEvents = true; 109 | process.Exited += (sender, args) => 110 | { 111 | tcs.TrySetResult(output); 112 | process.Dispose(); 113 | }; 114 | 115 | process.Start(); 116 | process.BeginOutputReadLine(); 117 | } 118 | catch (Exception ex) 119 | { 120 | tcs.TrySetException(ex); 121 | } 122 | 123 | return tcs.Task; 124 | } 125 | } 126 | } -------------------------------------------------------------------------------- /docs/log-analyzer/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CrapFixer Log Analyzer 6 | 105 | 106 | 107 | 108 |
109 |

🧠 CrapFixer Log Analyzer

110 |
111 | GitHub 112 | PayPal 115 | Ko-fi 116 |
117 |
118 | 119 | 120 |
121 |

How it works:

122 |
    123 |
  1. Run the analysis in CrapFixer and copy the full log.
  2. 124 |
  3. Paste it into the box below.
  4. 125 |
  5. Click Analyze to get results.
  6. 126 |
127 | 128 | 129 | 130 | 131 | 132 |
133 | 134 | 135 | 136 | 137 | 138 |
139 | 140 | 141 |
142 |
143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | -------------------------------------------------------------------------------- /CFixer/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 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 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace CFixer.Properties { 12 | using System; 13 | 14 | 15 | /// 16 | /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. 17 | /// 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 | /// 36 | /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. 37 | /// 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("CFixer.Properties.Resources", typeof(Resources).Assembly); 43 | resourceMan = temp; 44 | } 45 | return resourceMan; 46 | } 47 | } 48 | 49 | /// 50 | /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle 51 | /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. 52 | /// 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 | /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. 65 | /// 66 | internal static System.Drawing.Bitmap AppIcon { 67 | get { 68 | object obj = ResourceManager.GetObject("AppIcon", resourceCulture); 69 | return ((System.Drawing.Bitmap)(obj)); 70 | } 71 | } 72 | 73 | /// 74 | /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. 75 | /// 76 | internal static System.Drawing.Bitmap AppIcon32 { 77 | get { 78 | object obj = ResourceManager.GetObject("AppIcon32", resourceCulture); 79 | return ((System.Drawing.Bitmap)(obj)); 80 | } 81 | } 82 | 83 | /// 84 | /// Sucht eine lokalisierte Zeichenfolge, die Solitaire,CandyCrush,Netflix, Facebook,Twitter,Instagram,TikTok,Spotify, Skype,OneNote,OneDrive, Mail, Calendar, Weather,News,Maps, Groove, Movies,TV, Phone, Camera,Feedback,FeedbackHub, GetHelp,GetStarted,Messaging,Office,Paint3D,Print3D,StickyNotes,Wallet,YourPhone,3DViewer,Alarms,VoiceRecorder,ToDo,Whiteboard,ZuneMusic,ZuneVideo,3DViewer, DevHome, Copilot,MicrosoftPCManager ähnelt. 85 | /// 86 | internal static string PredefinedApps { 87 | get { 88 | return ResourceManager.GetString("PredefinedApps", resourceCulture); 89 | } 90 | } 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /CFixer/Views/SettingsView.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace CFixer.Views 2 | { 3 | partial class SettingsView 4 | { 5 | /// 6 | /// Erforderliche Designervariable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Verwendete Ressourcen bereinigen. 12 | /// 13 | /// True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False. 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 Komponenten-Designer generierter Code 24 | 25 | /// 26 | /// Erforderliche Methode für die Designerunterstützung. 27 | /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.checkSaveToINI = new System.Windows.Forms.CheckBox(); 32 | this.checkBox2 = new System.Windows.Forms.CheckBox(); 33 | this.button1 = new System.Windows.Forms.Button(); 34 | this.checkInstallIcons = new System.Windows.Forms.CheckBox(); 35 | this.SuspendLayout(); 36 | // 37 | // checkSaveToINI 38 | // 39 | this.checkSaveToINI.AutoSize = true; 40 | this.checkSaveToINI.Location = new System.Drawing.Point(15, 48); 41 | this.checkSaveToINI.Name = "checkSaveToINI"; 42 | this.checkSaveToINI.Size = new System.Drawing.Size(148, 17); 43 | this.checkSaveToINI.TabIndex = 0; 44 | this.checkSaveToINI.Text = "Save all settings to INI file"; 45 | this.checkSaveToINI.UseVisualStyleBackColor = true; 46 | // 47 | // checkBox2 48 | // 49 | this.checkBox2.Checked = true; 50 | this.checkBox2.CheckState = System.Windows.Forms.CheckState.Checked; 51 | this.checkBox2.Enabled = false; 52 | this.checkBox2.Location = new System.Drawing.Point(15, 71); 53 | this.checkBox2.Name = "checkBox2"; 54 | this.checkBox2.Size = new System.Drawing.Size(236, 35); 55 | this.checkBox2.TabIndex = 1; 56 | this.checkBox2.Text = "Activate Plugins for PowerShell Tooling (Super Plugins)"; 57 | this.checkBox2.UseVisualStyleBackColor = true; 58 | // 59 | // button1 60 | // 61 | this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 62 | | System.Windows.Forms.AnchorStyles.Right))); 63 | this.button1.BackColor = System.Drawing.Color.WhiteSmoke; 64 | this.button1.FlatAppearance.BorderColor = System.Drawing.Color.Gainsboro; 65 | this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat; 66 | this.button1.Location = new System.Drawing.Point(15, 10); 67 | this.button1.Name = "button1"; 68 | this.button1.Padding = new System.Windows.Forms.Padding(20, 0, 0, 0); 69 | this.button1.Size = new System.Drawing.Size(594, 25); 70 | this.button1.TabIndex = 2; 71 | this.button1.Text = "Basic settings"; 72 | this.button1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; 73 | this.button1.UseVisualStyleBackColor = false; 74 | // 75 | // checkInstallIcons 76 | // 77 | this.checkInstallIcons.AutoSize = true; 78 | this.checkInstallIcons.Location = new System.Drawing.Point(15, 112); 79 | this.checkInstallIcons.Name = "checkInstallIcons"; 80 | this.checkInstallIcons.Size = new System.Drawing.Size(265, 17); 81 | this.checkInstallIcons.TabIndex = 4; 82 | this.checkInstallIcons.Text = "Download optional icons to enhance navigation UI"; 83 | this.checkInstallIcons.UseVisualStyleBackColor = true; 84 | this.checkInstallIcons.CheckedChanged += new System.EventHandler(this.checkInstallIcons_CheckedChanged); 85 | // 86 | // SettingsView 87 | // 88 | this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); 89 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; 90 | this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(251)))), ((int)(((byte)(251)))), ((int)(((byte)(251))))); 91 | this.Controls.Add(this.checkInstallIcons); 92 | this.Controls.Add(this.button1); 93 | this.Controls.Add(this.checkBox2); 94 | this.Controls.Add(this.checkSaveToINI); 95 | this.Name = "SettingsView"; 96 | this.Size = new System.Drawing.Size(625, 395); 97 | this.Leave += new System.EventHandler(this.SettingsView_Leave); 98 | this.ResumeLayout(false); 99 | this.PerformLayout(); 100 | 101 | } 102 | 103 | #endregion 104 | 105 | private System.Windows.Forms.CheckBox checkSaveToINI; 106 | private System.Windows.Forms.CheckBox checkBox2; 107 | private System.Windows.Forms.Button button1; 108 | private System.Windows.Forms.CheckBox checkInstallIcons; 109 | } 110 | } 111 | -------------------------------------------------------------------------------- /CFixer/Features/FeatureLoader.cs: -------------------------------------------------------------------------------- 1 | using Settings.Ads; 2 | using Settings.AI; 3 | using Settings.Edge; 4 | using Settings.Gaming; 5 | using Settings.Issues; 6 | using Settings.Personalization; 7 | using Settings.Privacy; 8 | using Settings.System; 9 | using Settings.UI; 10 | using System.Collections.Generic; 11 | 12 | namespace Features 13 | { 14 | public static class FeatureLoader 15 | { 16 | public static List Load() 17 | { 18 | return new List 19 | { 20 | new FeatureNode("Issues") 21 | { 22 | Children = 23 | { 24 | new FeatureNode(new BasicCleanup()), 25 | new FeatureNode(new WingetUpgradeAll()) { DefaultChecked = false }, 26 | } 27 | }, 28 | 29 | new FeatureNode("System") 30 | { 31 | Children = 32 | { 33 | new FeatureNode(new BSODDetails()), 34 | new FeatureNode(new VerboseStatus()), 35 | new FeatureNode(new SpeedUpShutdown()), 36 | new FeatureNode(new NetworkThrottling()), 37 | new FeatureNode(new SystemResponsiveness()), 38 | new FeatureNode(new MenuShowDelay()), 39 | new FeatureNode(new TaskbarEndTask()), 40 | } 41 | }, 42 | 43 | new FeatureNode("MS Edge") 44 | { 45 | Children = 46 | { 47 | new FeatureNode(new BrowserSignin()), 48 | new FeatureNode(new DefaultTopSites()), 49 | new FeatureNode(new DefautBrowserSetting()), 50 | new FeatureNode(new EdgeCollections()), 51 | new FeatureNode(new EdgeShoppingAssistant()), 52 | new FeatureNode(new FirstRunExperience()), 53 | new FeatureNode(new GamerMode()), 54 | new FeatureNode(new HubsSidebar()), 55 | new FeatureNode(new ImportOnEachLaunch()), 56 | new FeatureNode(new StartupBoost()), 57 | new FeatureNode(new TabPageQuickLinks()), 58 | new FeatureNode(new UserFeedback()), 59 | } 60 | }, 61 | 62 | new FeatureNode("UI") 63 | { 64 | Children = 65 | { 66 | new FeatureNode(new FullContextMenus()), 67 | new FeatureNode(new LockScreen()), 68 | new FeatureNode(new SearchboxTaskbarMode()), 69 | new FeatureNode(new ShowOrHideMostUsedApps()), 70 | new FeatureNode(new ShowTaskViewButton()), 71 | new FeatureNode(new DisableSearchBoxSuggestions()), 72 | new FeatureNode(new DisableBingSearch()), 73 | new FeatureNode(new StartLayout()), 74 | new FeatureNode(new TaskbarAlignment()), 75 | new FeatureNode(new Transparency()), 76 | new FeatureNode(new AppDarkMode()) { DefaultChecked = false }, 77 | new FeatureNode(new SystemDarkMode()) { DefaultChecked = false }, 78 | new FeatureNode(new DisableSnapAssistFlyout()), 79 | } 80 | }, 81 | 82 | new FeatureNode("Gaming") 83 | { 84 | Children = 85 | { 86 | new FeatureNode(new GameDVR()), 87 | new FeatureNode(new PowerThrottling()), 88 | new FeatureNode(new VisualFX()), 89 | } 90 | }, 91 | 92 | new FeatureNode("Privacy") 93 | { 94 | Children = 95 | { 96 | new FeatureNode(new ActivityHistory()), 97 | new FeatureNode(new LocationTracking()), 98 | new FeatureNode(new PrivacyExperience()), 99 | new FeatureNode(new Telemetry()), 100 | } 101 | }, 102 | 103 | new FeatureNode("Ads") 104 | { 105 | Children = 106 | { 107 | new FeatureNode(new FileExplorerAds()), 108 | new FeatureNode(new FinishSetupAds()), 109 | new FeatureNode(new LockScreenAds()), 110 | new FeatureNode(new PersonalizedAds()), 111 | new FeatureNode(new SettingsAds()), 112 | new FeatureNode(new StartmenuAds()), 113 | new FeatureNode(new TailoredExperiences()), 114 | new FeatureNode(new TipsAndSuggestions()), 115 | new FeatureNode(new WelcomeExperienceAds()), 116 | } 117 | }, 118 | 119 | new FeatureNode("AI") 120 | { 121 | Children = 122 | { 123 | new FeatureNode(new CopilotTaskbar()), 124 | new FeatureNode(new Recall()), 125 | new FeatureNode(new ClickToDo()) { DefaultChecked = false }, 126 | } 127 | }, 128 | }; 129 | } 130 | } 131 | } -------------------------------------------------------------------------------- /CFixer/Views/AboutView.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | -------------------------------------------------------------------------------- /CFixer/Views/OptionsView.resx: -------------------------------------------------------------------------------- 1 | 2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | --------------------------------------------------------------------------------