(); // 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 |
117 |
118 |
119 |
120 |
121 | How it works:
122 |
123 | - Run the analysis in CrapFixer and copy the full log.
124 | - Paste it into the box below.
125 | - Click Analyze to get results.
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 |
--------------------------------------------------------------------------------