├── .gitattributes ├── .gitignore ├── Flyby11-deprecated ├── CpuCheckNative │ ├── CpuCheckNative.rc │ ├── CpuCheckNative.vcxproj │ ├── CpuCheckNative.vcxproj.filters │ ├── PopcntCheck.cpp │ ├── dllmain.cpp │ ├── framework.h │ ├── pch.cpp │ ├── pch.h │ └── resource.h ├── Flyby11.sln └── Flyby11 │ ├── App.config │ ├── AppIcon.ico │ ├── AppIcon.png │ ├── CanIUpgradeView.Designer.cs │ ├── CanIUpgradeView.cs │ ├── CanIUpgradeView.resx │ ├── ClippyUI.Designer.cs │ ├── ClippyUI.cs │ ├── ClippyUI.resx │ ├── CompatibilityForm.Designer.cs │ ├── CompatibilityForm.cs │ ├── CompatibilityForm.resx │ ├── FAQHandler.cs │ ├── Flyby11.csproj │ ├── IsoHandler.cs │ ├── Locales │ ├── Strings.Designer.cs │ ├── Strings.ar.resx │ ├── Strings.cs-CZ.resx │ ├── Strings.de.resx │ ├── Strings.fr.resx │ ├── Strings.he.resx │ ├── Strings.hu.resx │ ├── Strings.it.resx │ ├── Strings.ja.resx │ ├── Strings.ko.resx │ ├── Strings.nl.resx │ ├── Strings.pl.resx │ ├── Strings.pt-BR.resx │ ├── Strings.resx │ ├── Strings.sv-SE.resx │ ├── Strings.tr.resx │ └── Strings.zh-CN.resx │ ├── Logger.cs │ ├── MainForm.Designer.cs │ ├── MainForm.cs │ ├── MainForm.resx │ ├── ProblemsForm.Designer.cs │ ├── ProblemsForm.cs │ ├── ProblemsForm.resx │ ├── Program.cs │ ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings │ ├── SwitchView.cs │ └── app.manifest ├── Flyby11 ├── CpuCheck.cpp ├── Flyby11.vcxproj ├── Flyby11.vcxproj.filters ├── dllmain.cpp ├── framework.h ├── pch.cpp └── pch.h ├── Flyoobe.Extensions ├── Developer Essentials.ps1 ├── EXTENSIONS.md ├── Gaming tweaks.ps1 ├── Microsoft Defender maintenance.ps1 ├── Network Tools.ps1 ├── Power Actions.ps1 └── Write-an-Extension.md ├── Flyoobe.ToolSpot-deprecated ├── Flyoobe.Spot.sln └── Flyoobe.ToolSpot │ ├── App.config │ ├── Flyoobe.Spot.csproj │ ├── MainForm.Designer.cs │ ├── MainForm.cs │ ├── MainForm.resx │ ├── Program.cs │ ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings │ └── app.manifest ├── Flyoobe.sln ├── Flyoobe ├── AboutForm.Designer.cs ├── AboutForm.cs ├── AboutForm.resx ├── App.config ├── AppIcon.ico ├── AppIcon.png ├── Features │ ├── AI │ │ ├── ClickToDo.cs │ │ ├── CopilotTaskbar.cs │ │ └── Recall.cs │ ├── Ads │ │ ├── FileExlorerAds.cs │ │ ├── FinishSetupAds.cs │ │ ├── LockScreenAds.cs │ │ ├── PersonalizedAds.cs │ │ ├── SettingsAds.cs │ │ ├── StartmenuAds.cs │ │ ├── TailoredExperiences.cs │ │ ├── TipsAndSuggestions.cs │ │ └── WelcomeExperienceAds.cs │ ├── Edge │ │ ├── BrowserSignin.cs │ │ ├── DefaultTopSites.cs │ │ ├── DefautBrowserSetting.cs │ │ ├── EdgeCollections.cs │ │ ├── EdgeShoppingAssistant.cs │ │ ├── FirstRunExperience.cs │ │ ├── GamerMode.cs │ │ ├── HubsSidebar.cs │ │ ├── ImportOnEachLaunch.cs │ │ ├── StartupBoost.cs │ │ ├── TabPageQuickLinks.cs │ │ └── UserFeedback.cs │ ├── FeatureBase.cs │ ├── FeatureLoader.cs │ ├── FeatureManager.cs │ ├── FeatureNode.cs │ ├── Gaming │ │ ├── GameDVR.cs │ │ ├── PowerThrotteling.cs │ │ └── VisualFX.cs │ ├── Issues │ │ ├── BasicCleanup.cs │ │ └── WingetUpgrade.cs │ ├── Privacy │ │ ├── ActivityHistory.cs │ │ ├── LocationTracking.cs │ │ ├── PrivacyExperience.cs │ │ └── Telemetry.cs │ ├── System │ │ ├── BSODDetails.cs │ │ ├── Hibernation.cs │ │ ├── MenuShowDelay.cs │ │ ├── NetworkThrottling.cs │ │ ├── SpeedUpShutdown.cs │ │ ├── SystemResponsiveness.cs │ │ ├── TaskbarEndTask.cs │ │ └── VerboseStatus.cs │ └── UI │ │ ├── BingSearch.cs │ │ ├── FullContextMenus.cs │ │ ├── SearchBoxSuggestions.cs │ │ ├── SearchboxTaskbarMode.cs │ │ ├── ShowOrHideMostUsedApps.cs │ │ ├── ShowTaskViewButton.cs │ │ ├── SnapAssistFlyout.cs │ │ ├── StartLayout.cs │ │ ├── Transparency.cs │ │ └── WLockScreen.cs ├── Flyoobe.csproj ├── Helper │ ├── CopilotHelper.cs │ ├── Logger.cs │ └── Utils.cs ├── IView.cs ├── InstallView │ ├── BackupDriversProvider.cs │ ├── BootMenuInfoProvider.cs │ ├── InPlaceRepairProvider.cs │ ├── InstallControlView.Designer.cs │ ├── InstallControlView.cs │ ├── InstallControlView.resx │ ├── InstallProviders.cs │ ├── MctProvider.cs │ ├── MountIsoProvider.cs │ ├── NativeResetProvider.cs │ ├── RebootToUefiProvider.cs │ ├── RufusProvider.cs │ ├── RunSetupFromIsoProvider.cs │ ├── ToolHelper.cs │ └── VentoyProvider.cs ├── LogForm.Designer.cs ├── LogForm.cs ├── LogForm.resx ├── MainForm.Designer.cs ├── MainForm.cs ├── MainForm.resx ├── Program.cs ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings ├── ToolHubView │ ├── ToolHubControlView.Designer.cs │ ├── ToolHubControlView.cs │ ├── ToolHubControlView.resx │ ├── ToolHubDefinition.cs │ ├── ToolHubHelper.cs │ ├── ToolHubItemControl.Designer.cs │ ├── ToolHubItemControl.cs │ ├── ToolHubItemControl.resx │ └── ToolHubUrlDialog.cs ├── UpgradeView │ ├── EsuEnrollmentHandler.cs │ ├── IsoHandler.cs │ ├── UpgradeControlView.Designer.cs │ ├── UpgradeControlView.cs │ └── UpgradeControlView.resx ├── ViewNavigator.cs ├── Views │ ├── AccountControlView.Designer.cs │ ├── AccountControlView.cs │ ├── AccountControlView.resx │ ├── AiControlView.Designer.cs │ ├── AiControlView.cs │ ├── AiControlView.resx │ ├── AppsControlView.Designer.cs │ ├── AppsControlView.cs │ ├── AppsControlView.resx │ ├── DefaultsControlView.Designer.cs │ ├── DefaultsControlView.cs │ ├── DefaultsControlView.resx │ ├── DeviceControlView.Designer.cs │ ├── DeviceControlView.cs │ ├── DeviceControlView.resx │ ├── ExperienceControlView.Designer.cs │ ├── ExperienceControlView.cs │ ├── ExperienceControlView.resx │ ├── HomeControlView.cs │ ├── HomeControlView.resx │ ├── InstallerControlView.Designer.cs │ ├── InstallerControlView.cs │ ├── InstallerControlView.resx │ ├── NetworkControlView.Designer.cs │ ├── NetworkControlView.cs │ ├── NetworkControlView.resx │ ├── PersonalizationControlView.Designer.cs │ ├── PersonalizationControlView.cs │ ├── PersonalizationControlView.resx │ ├── UpdatesControlView.Designer.cs │ ├── UpdatesControlView.cs │ └── UpdatesControlView.resx ├── app.manifest └── assetCopilot.png ├── LICENSE ├── README.md └── assets ├── Flyoobe_Profile_Community.txt └── Info.md /.gitattributes: -------------------------------------------------------------------------------- 1 | *.c linguist-language=C 2 | *.h linguist-language=C 3 | *.cpp linguist-language=C++ 4 | *.cc linguist-language=C++ 5 | *.hpp linguist-language=C++ 6 | -------------------------------------------------------------------------------- /Flyby11-deprecated/CpuCheckNative/CpuCheckNative.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/builtbybel/Flyoobe/a4a9a346ae338aca69451561dc32266defb01428/Flyby11-deprecated/CpuCheckNative/CpuCheckNative.rc -------------------------------------------------------------------------------- /Flyby11-deprecated/CpuCheckNative/CpuCheckNative.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Headerdateien 20 | 21 | 22 | Headerdateien 23 | 24 | 25 | Headerdateien 26 | 27 | 28 | 29 | 30 | Quelldateien 31 | 32 | 33 | Quelldateien 34 | 35 | 36 | Quelldateien 37 | 38 | 39 | 40 | 41 | Ressourcendateien 42 | 43 | 44 | -------------------------------------------------------------------------------- /Flyby11-deprecated/CpuCheckNative/PopcntCheck.cpp: -------------------------------------------------------------------------------- 1 | #include "pch.h" 2 | #include 3 | 4 | extern "C" __declspec(dllexport) bool __cdecl HasPopcnt() 5 | { 6 | int cpuInfo[4] = { 0 }; 7 | 8 | // Get CPU info by calling __cpuid, which fills the cpuInfo array with CPU feature flags 9 | __cpuid(cpuInfo, 1); 10 | 11 | // Check if the processor supports SSE4.2 (bit 20 of the ECX register) 12 | bool hasSSE42 = (cpuInfo[2] & (1 << 20)) != 0; 13 | 14 | // Check if the processor supports POPCNT (bit 23 of the ECX register) 15 | bool hasPOPCNT = (cpuInfo[2] & (1 << 23)) != 0; 16 | 17 | // POPCNT is the critical instruction for Windows 11 upgrade compatibility!! 18 | // If both SSE4.2 and POPCNT are supported, yeah we can return true; otherwise, false 19 | return hasSSE42 && hasPOPCNT; 20 | } 21 | -------------------------------------------------------------------------------- /Flyby11-deprecated/CpuCheckNative/dllmain.cpp: -------------------------------------------------------------------------------- 1 | // dllmain.cpp : Definiert den Einstiegspunkt für die DLL-Anwendung. 2 | #include "pch.h" 3 | 4 | BOOL APIENTRY DllMain( HMODULE hModule, 5 | DWORD ul_reason_for_call, 6 | LPVOID lpReserved 7 | ) 8 | { 9 | switch (ul_reason_for_call) 10 | { 11 | case DLL_PROCESS_ATTACH: 12 | case DLL_THREAD_ATTACH: 13 | case DLL_THREAD_DETACH: 14 | case DLL_PROCESS_DETACH: 15 | break; 16 | } 17 | return TRUE; 18 | } 19 | 20 | -------------------------------------------------------------------------------- /Flyby11-deprecated/CpuCheckNative/framework.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define WIN32_LEAN_AND_MEAN // Selten verwendete Komponenten aus Windows-Headern ausschließen 4 | // Windows-Headerdateien 5 | #include 6 | -------------------------------------------------------------------------------- /Flyby11-deprecated/CpuCheckNative/pch.cpp: -------------------------------------------------------------------------------- 1 | // pch.cpp: Quelldatei, die dem vorkompilierten Header entspricht 2 | 3 | #include "pch.h" 4 | 5 | // Bei der Verwendung vorkompilierter Header ist diese Quelldatei für eine erfolgreiche Kompilierung erforderlich. 6 | -------------------------------------------------------------------------------- /Flyby11-deprecated/CpuCheckNative/pch.h: -------------------------------------------------------------------------------- 1 | // pch.h: Dies ist eine vorkompilierte Headerdatei. 2 | // Die unten aufgeführten Dateien werden nur einmal kompiliert, um die Buildleistung für zukünftige Builds zu verbessern. 3 | // Dies wirkt sich auch auf die IntelliSense-Leistung aus, Codevervollständigung und viele Features zum Durchsuchen von Code eingeschlossen. 4 | // Die hier aufgeführten Dateien werden jedoch ALLE neu kompiliert, wenn mindestens eine davon zwischen den Builds aktualisiert wird. 5 | // Fügen Sie hier keine Dateien hinzu, die häufig aktualisiert werden sollen, da sich so der Leistungsvorteil ins Gegenteil verkehrt. 6 | 7 | #ifndef PCH_H 8 | #define PCH_H 9 | 10 | // Fügen Sie hier Header hinzu, die vorkompiliert werden sollen. 11 | #include "framework.h" 12 | 13 | #endif //PCH_H 14 | -------------------------------------------------------------------------------- /Flyby11-deprecated/CpuCheckNative/resource.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/builtbybel/Flyoobe/a4a9a346ae338aca69451561dc32266defb01428/Flyby11-deprecated/CpuCheckNative/resource.h -------------------------------------------------------------------------------- /Flyby11-deprecated/Flyby11.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.12.35527.113 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Flyby11", "Flyby11\Flyby11.csproj", "{503AF34B-7544-4C43-A099-2B948C3FF49A}" 7 | EndProject 8 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CpuCheckNative", "CpuCheckNative\CpuCheckNative.vcxproj", "{A2038E07-E21F-4B05-B811-3052A2B014BC}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Debug|x64 = Debug|x64 14 | Debug|x86 = Debug|x86 15 | Release|Any CPU = Release|Any CPU 16 | Release|x64 = Release|x64 17 | Release|x86 = Release|x86 18 | EndGlobalSection 19 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 20 | {503AF34B-7544-4C43-A099-2B948C3FF49A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 21 | {503AF34B-7544-4C43-A099-2B948C3FF49A}.Debug|Any CPU.Build.0 = Debug|Any CPU 22 | {503AF34B-7544-4C43-A099-2B948C3FF49A}.Debug|x64.ActiveCfg = Debug|Any CPU 23 | {503AF34B-7544-4C43-A099-2B948C3FF49A}.Debug|x64.Build.0 = Debug|Any CPU 24 | {503AF34B-7544-4C43-A099-2B948C3FF49A}.Debug|x86.ActiveCfg = Debug|Any CPU 25 | {503AF34B-7544-4C43-A099-2B948C3FF49A}.Debug|x86.Build.0 = Debug|Any CPU 26 | {503AF34B-7544-4C43-A099-2B948C3FF49A}.Release|Any CPU.ActiveCfg = Release|Any CPU 27 | {503AF34B-7544-4C43-A099-2B948C3FF49A}.Release|Any CPU.Build.0 = Release|Any CPU 28 | {503AF34B-7544-4C43-A099-2B948C3FF49A}.Release|x64.ActiveCfg = Release|Any CPU 29 | {503AF34B-7544-4C43-A099-2B948C3FF49A}.Release|x64.Build.0 = Release|Any CPU 30 | {503AF34B-7544-4C43-A099-2B948C3FF49A}.Release|x86.ActiveCfg = Release|Any CPU 31 | {503AF34B-7544-4C43-A099-2B948C3FF49A}.Release|x86.Build.0 = Release|Any CPU 32 | {A2038E07-E21F-4B05-B811-3052A2B014BC}.Debug|Any CPU.ActiveCfg = Debug|x64 33 | {A2038E07-E21F-4B05-B811-3052A2B014BC}.Debug|Any CPU.Build.0 = Debug|x64 34 | {A2038E07-E21F-4B05-B811-3052A2B014BC}.Debug|x64.ActiveCfg = Debug|x64 35 | {A2038E07-E21F-4B05-B811-3052A2B014BC}.Debug|x64.Build.0 = Debug|x64 36 | {A2038E07-E21F-4B05-B811-3052A2B014BC}.Debug|x86.ActiveCfg = Debug|Win32 37 | {A2038E07-E21F-4B05-B811-3052A2B014BC}.Debug|x86.Build.0 = Debug|Win32 38 | {A2038E07-E21F-4B05-B811-3052A2B014BC}.Release|Any CPU.ActiveCfg = Release|x64 39 | {A2038E07-E21F-4B05-B811-3052A2B014BC}.Release|Any CPU.Build.0 = Release|x64 40 | {A2038E07-E21F-4B05-B811-3052A2B014BC}.Release|x64.ActiveCfg = Release|x64 41 | {A2038E07-E21F-4B05-B811-3052A2B014BC}.Release|x64.Build.0 = Release|x64 42 | {A2038E07-E21F-4B05-B811-3052A2B014BC}.Release|x86.ActiveCfg = Release|Win32 43 | {A2038E07-E21F-4B05-B811-3052A2B014BC}.Release|x86.Build.0 = Release|Win32 44 | EndGlobalSection 45 | GlobalSection(SolutionProperties) = preSolution 46 | HideSolutionNode = FALSE 47 | EndGlobalSection 48 | EndGlobal 49 | -------------------------------------------------------------------------------- /Flyby11-deprecated/Flyby11/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Flyby11-deprecated/Flyby11/AppIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/builtbybel/Flyoobe/a4a9a346ae338aca69451561dc32266defb01428/Flyby11-deprecated/Flyby11/AppIcon.ico -------------------------------------------------------------------------------- /Flyby11-deprecated/Flyby11/AppIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/builtbybel/Flyoobe/a4a9a346ae338aca69451561dc32266defb01428/Flyby11-deprecated/Flyby11/AppIcon.png -------------------------------------------------------------------------------- /Flyby11-deprecated/Flyby11/CompatibilityForm.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace Flyby11 2 | { 3 | partial class CompatibilityForm 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, 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 Windows Form Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | this.SuspendLayout(); 32 | // 33 | // CompatibilityForm 34 | // 35 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 36 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 37 | this.AutoScroll = true; 38 | this.ClientSize = new System.Drawing.Size(530, 304); 39 | this.Name = "CompatibilityForm"; 40 | this.ShowIcon = false; 41 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 42 | this.ResumeLayout(false); 43 | 44 | } 45 | 46 | #endregion 47 | } 48 | } -------------------------------------------------------------------------------- /Flyby11-deprecated/Flyby11/Logger.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Drawing; 3 | using System.Linq; 4 | using System.Windows.Forms; 5 | 6 | namespace Flyby11 7 | { 8 | public class Logger 9 | { 10 | private MainForm mainForm; 11 | 12 | public Logger(MainForm mainForm) 13 | { 14 | this.mainForm = mainForm ?? throw new ArgumentNullException(nameof(mainForm)); 15 | } 16 | 17 | // Log method for a single string 18 | public void Log(string message, Color color, float fontSize = 10.5f) 19 | { 20 | if (mainForm.InvokeRequired) 21 | { 22 | mainForm.Invoke(new Action(() => Log(message, color, fontSize))); 23 | return; 24 | } 25 | 26 | 27 | AppendMessageToConversation(message, color, fontSize); // Append message to conversation 28 | } 29 | 30 | private void AppendMessageToConversation(string message, Color color, float fontSize) 31 | { 32 | Label statusLabel = mainForm.Controls.Find("statusLabel", true).FirstOrDefault() as Label; 33 | 34 | if (statusLabel != null) 35 | { 36 | statusLabel.Text = ""; 37 | statusLabel.Text += "\r\n" + message; 38 | statusLabel.ForeColor = color; 39 | statusLabel.Font = new Font(statusLabel.Font.FontFamily, fontSize); 40 | statusLabel.TextAlign = ContentAlignment.MiddleCenter; 41 | } 42 | } 43 | 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /Flyby11-deprecated/Flyby11/ProblemsForm.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | using System.Windows.Forms; 5 | 6 | namespace Flyby11 7 | { 8 | public partial class ProblemsForm : Form 9 | { 10 | private readonly Dictionary _issues = new Dictionary() 11 | { 12 | {"Can't upgrade to Windows 11 – Error 0x80888002","https://github.com/builtbybel/Flyby11/discussions/135"}, 13 | { "Upgrading without losing all programs and settings", "https://github.com/builtbybel/Flyby11/discussions/54"}, 14 | { "Upgrade Driver issue 0xC1900101", "https://github.com/builtbybel/Flyby11/issues/157"}, 15 | { "We are enable to complete your request at this time", "https://github.com/builtbybel/Flyby11/issues/158"}, 16 | { "Upgrade succeeded, but future updates not possible ", "https://github.com/builtbybel/Flyby11/discussions/144"}, 17 | { "We couldn't install Windows Server - We've set your PC back the way it was Error 0xC1900101 - 0x20017", "https://github.com/builtbybel/Flyby11/issues/103 "}, 18 | { "Mounting ISO fails", "https://github.com/builtbybel/Flyby11/issues/156"}, 19 | { "Can't find your issue? Browse the community discussions for help", "https://github.com/builtbybel/Flyby11/discussions"}, 20 | }; 21 | 22 | public ProblemsForm() 23 | { 24 | InitializeComponent(); 25 | } 26 | 27 | private void ProblemsForm_Load(object sender, EventArgs e) 28 | { 29 | foreach (var kv in _issues) 30 | { 31 | dataGridViewIssues.Rows.Add(kv.Key, "Details…"); 32 | } 33 | } 34 | 35 | private void dataGridViewIssues_CellContentClick(object sender, DataGridViewCellEventArgs e) 36 | { 37 | if (dataGridViewIssues.Columns[e.ColumnIndex] is DataGridViewLinkColumn && 38 | e.RowIndex >= 0) 39 | { 40 | var code = dataGridViewIssues.Rows[e.RowIndex].Cells["ErrorCode"].Value.ToString(); 41 | if (_issues.TryGetValue(code, out var url)) 42 | { 43 | System.Diagnostics.Process.Start(new ProcessStartInfo 44 | { 45 | FileName = url, 46 | UseShellExecute = true 47 | }); 48 | } 49 | } 50 | } 51 | } 52 | } -------------------------------------------------------------------------------- /Flyby11-deprecated/Flyby11/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Forms; 6 | 7 | namespace Flyby11 8 | { 9 | internal static class Program 10 | { 11 | /// 12 | /// Der Haupteinstiegspunkt für die Anwendung. 13 | /// 14 | [STAThread] 15 | static void Main() 16 | { 17 | Application.EnableVisualStyles(); 18 | Application.SetCompatibleTextRenderingDefault(false); 19 | Application.Run(new MainForm()); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Flyby11-deprecated/Flyby11/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("Flyby11")] 9 | [assembly: AssemblyDescription("Bypassing Windows 11 hardware requirements")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("A Belim app creation")] 12 | [assembly: AssemblyProduct("Flyby11")] 13 | [assembly: AssemblyCopyright("Copyright © 2025 A Belim app creation")] 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("503af34b-7544-4c43-a099-2b948c3ff49a")] 24 | 25 | // Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: 26 | // 27 | // Hauptversion 28 | // Nebenversion 29 | // Buildnummer 30 | // Revision 31 | // 32 | [assembly: AssemblyVersion("3.10.510")] 33 | [assembly: AssemblyFileVersion("3.10.510")] 34 | -------------------------------------------------------------------------------- /Flyby11-deprecated/Flyby11/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 Flyby11.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 | public 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 | public 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("Flyby11.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 | public static global::System.Globalization.CultureInfo Culture { 55 | get { 56 | return resourceCulture; 57 | } 58 | set { 59 | resourceCulture = value; 60 | } 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /Flyby11-deprecated/Flyby11/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 Flyby11.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.12.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Flyby11-deprecated/Flyby11/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Flyby11-deprecated/Flyby11/SwitchView.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Forms; 2 | 3 | namespace Views 4 | { 5 | public static class SwitchView 6 | { 7 | public static Control PreviousView { get; private set; } 8 | public static Control DefaultView { get; set; } // Store the default view (panelMain) 9 | 10 | // Switch to a new view 11 | public static void SetView(Control newView, Panel targetPanel) 12 | { 13 | // If there's already a view in the panel, save it as PreviousView 14 | if (targetPanel.Controls.Count > 0) 15 | { 16 | // Only save the previous view if it's not the default view (panelMain) 17 | if (PreviousView == null) 18 | { 19 | PreviousView = targetPanel.Controls[0]; // Store current view as PreviousView 20 | } 21 | } 22 | 23 | newView.Dock = DockStyle.Fill; 24 | targetPanel.Controls.Clear(); 25 | targetPanel.Controls.Add(newView); // Add new view to the panel 26 | } 27 | 28 | // Go back to the previous view 29 | public static void GoBack(Panel targetPanel) 30 | { 31 | if (PreviousView != null) 32 | { 33 | targetPanel.Controls.Clear(); // Clear the current view 34 | targetPanel.Controls.Add(PreviousView); // Add the previous view back 35 | PreviousView.Dock = DockStyle.Fill; 36 | PreviousView = null; // Reset PreviousView after returning to it 37 | } 38 | else if (DefaultView != null) 39 | { 40 | // If there's no PreviousView, return to the default (panelMain) 41 | targetPanel.Controls.Clear(); 42 | targetPanel.Controls.Add(DefaultView); 43 | DefaultView.Dock = DockStyle.Fill; 44 | } 45 | } 46 | } 47 | } -------------------------------------------------------------------------------- /Flyby11-deprecated/Flyby11/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 | true 57 | true 58 | 59 | 60 | 61 | 62 | 63 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /Flyby11/CpuCheck.cpp: -------------------------------------------------------------------------------- 1 | // CpuCheck.cpp 2 | #include "pch.h" 3 | #include 4 | 5 | extern "C" __declspec(dllexport) bool __cdecl HasPopcnt() 6 | { 7 | int cpuInfo[4] = { 0 }; 8 | __cpuid(cpuInfo, 1); 9 | // Check if the processor supports SSE4.2 (bit 20 of the ECX register) 10 | bool hasSSE42 = (cpuInfo[2] & (1 << 20)) != 0; 11 | // Check if the processor supports POPCNT (bit 23 of the ECX register) 12 | bool hasPOPCNT = (cpuInfo[2] & (1 << 23)) != 0; 13 | 14 | return hasSSE42 && hasPOPCNT; 15 | } 16 | -------------------------------------------------------------------------------- /Flyby11/Flyby11.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Headerdateien 20 | 21 | 22 | Headerdateien 23 | 24 | 25 | 26 | 27 | Quelldateien 28 | 29 | 30 | Quelldateien 31 | 32 | 33 | Quelldateien 34 | 35 | 36 | -------------------------------------------------------------------------------- /Flyby11/dllmain.cpp: -------------------------------------------------------------------------------- 1 | // dllmain.cpp : Definiert den Einstiegspunkt für die DLL-Anwendung. 2 | #include "pch.h" 3 | 4 | BOOL APIENTRY DllMain( HMODULE hModule, 5 | DWORD ul_reason_for_call, 6 | LPVOID lpReserved 7 | ) 8 | { 9 | switch (ul_reason_for_call) 10 | { 11 | case DLL_PROCESS_ATTACH: 12 | case DLL_THREAD_ATTACH: 13 | case DLL_THREAD_DETACH: 14 | case DLL_PROCESS_DETACH: 15 | break; 16 | } 17 | return TRUE; 18 | } 19 | 20 | -------------------------------------------------------------------------------- /Flyby11/framework.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define WIN32_LEAN_AND_MEAN // Selten verwendete Komponenten aus Windows-Headern ausschließen 4 | // Windows-Headerdateien 5 | #include 6 | -------------------------------------------------------------------------------- /Flyby11/pch.cpp: -------------------------------------------------------------------------------- 1 | // pch.cpp: Quelldatei, die dem vorkompilierten Header entspricht 2 | 3 | #include "pch.h" 4 | 5 | // Bei der Verwendung vorkompilierter Header ist diese Quelldatei für eine erfolgreiche Kompilierung erforderlich. 6 | -------------------------------------------------------------------------------- /Flyby11/pch.h: -------------------------------------------------------------------------------- 1 | // pch.h: Dies ist eine vorkompilierte Headerdatei. 2 | // Die unten aufgeführten Dateien werden nur einmal kompiliert, um die Buildleistung für zukünftige Builds zu verbessern. 3 | // Dies wirkt sich auch auf die IntelliSense-Leistung aus, Codevervollständigung und viele Features zum Durchsuchen von Code eingeschlossen. 4 | // Die hier aufgeführten Dateien werden jedoch ALLE neu kompiliert, wenn mindestens eine davon zwischen den Builds aktualisiert wird. 5 | // Fügen Sie hier keine Dateien hinzu, die häufig aktualisiert werden sollen, da sich so der Leistungsvorteil ins Gegenteil verkehrt. 6 | 7 | #ifndef PCH_H 8 | #define PCH_H 9 | 10 | // Fügen Sie hier Header hinzu, die vorkompiliert werden sollen. 11 | #include "framework.h" 12 | 13 | #endif //PCH_H 14 | -------------------------------------------------------------------------------- /Flyoobe.Extensions/Developer Essentials.ps1: -------------------------------------------------------------------------------- 1 | # Developer Essentials – Quick access to developer tools and features 2 | # Host: console 3 | # Options: Enable Developer Mode; Install WSL; Open Windows Features (silent); Open Device Manager (silent) 4 | 5 | param([string]$choice) 6 | 7 | switch ($choice) { 8 | "Enable Developer Mode" { 9 | Write-Output "Enabling Developer Mode..." 10 | reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock" /t REG_DWORD /f /v "AllowDevelopmentWithoutDevLicense" /d 1 11 | Write-Output "✔ Developer Mode enabled." 12 | } 13 | 14 | "Install WSL" { 15 | Write-Output "Installing Windows Subsystem for Linux..." 16 | Start-Process "wsl.exe" -ArgumentList "--install" -Verb runAs 17 | } 18 | 19 | "Open Windows Features" { 20 | Write-Output "Opening Windows Features dialog..." 21 | Start-Process "optionalfeatures.exe" 22 | } 23 | 24 | "Open Device Manager" { 25 | Write-Output "Opening Device Manager..." 26 | Start-Process "devmgmt.msc" 27 | } 28 | 29 | default { 30 | Write-Output "Unknown option: $choice" 31 | } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /Flyoobe.Extensions/EXTENSIONS.md: -------------------------------------------------------------------------------- 1 | # Flyoobe Extensions 2 | 3 | Here you can find community extensions for Flyoobe. 4 | Copy the provided `.ps1` raw link and install it via the **Get Extensions → Install from URL** option in the app. 5 | 6 | --- 7 | ## ⚡ Power Actions 8 | **Description:** Control Windows power and session actions directly from Flyoobe. 9 | **Options:** 10 | - Restart Explorer 11 | - Restart PC 12 | - Shutdown PC 13 | - Log off 14 | - Sleep 15 | - Hibernate 16 | 17 | 🔗 [Raw script link](https://raw.githubusercontent.com/builtbybel/Flyoobe/refs/heads/main/Flyoobe.Extensions/Power%20Actions.ps1) 18 | 19 | --- 20 | ## 🛠 Developer Essentials 21 | **Description:** Quick access to developer tools and features (Dev Mode, WSL, Windows Features, Device Manager). 22 | **Options:** 23 | - Enable Developer Mode 24 | - Install WSL 25 | - Open Windows Features 26 | - Open Device Manager 27 | 28 | 🔗 [Raw script link](https://raw.githubusercontent.com/builtbybel/Flyoobe/refs/heads/main/Flyoobe.Extensions/Developer%20Essentials.ps1) 29 | 30 | ## 🌐 Network Tools 31 | **Description:** Common network troubleshooting actions (DNS flush, Winsock reset, connections, ping). 32 | **Options:** 33 | - Flush DNS 34 | - Reset Winsock 35 | - Show active connections 36 | - Test Ping (8.8.8.8) 37 | 38 | 🔗 [Raw script link](https://raw.githubusercontent.com/builtbybel/Flyoobe/refs/heads/main/Flyoobe.Extensions/Network%20Tools.ps1) 39 | 40 | --- 41 | 42 | ## 🛡 Microsoft Defender Maintenance 43 | **Description:** Update Defender signatures, repair definitions, or check Defender status. 44 | **Options:** 45 | - Update signatures 46 | - Repair definitions and update 47 | - Show Defender status 48 | 49 | 🔗 [Raw script link](https://raw.githubusercontent.com/builtbybel/Flyoobe/refs/heads/main/Flyoobe.Extensions/Microsoft%20Defender%20maintenance.ps1) 50 | 51 | --- 52 | 53 | ## 🎮 Gaming Tweaks 54 | **Description:** Optimize Windows 11 for gaming (Game Mode, HAGS, Power Plans, DVR). 55 | **Options:** 56 | - Enable Game Mode 57 | - Disable Game Mode 58 | - Toggle Hardware GPU Scheduling 59 | - Switch Power Plans 60 | - Disable Game DVR 61 | - Clear Shader Cache 62 | 63 | 🔗 [Raw script link](https://raw.githubusercontent.com/builtbybel/Flyoobe/refs/heads/main/Flyoobe.Extensions/Gaming%20tweaks.ps1) 64 | 65 | --- 66 | 67 | -------------------------------------------------------------------------------- /Flyoobe.Extensions/Gaming tweaks.ps1: -------------------------------------------------------------------------------- 1 | # Description: Gaming Tweaks – optimize Windows 11 for games 2 | # Host: console 3 | # Options: Enable Game Mode; Disable Game Mode; Toggle Hardware GPU Scheduling; Switch Power Plans; Disable Game DVR; Clear Shader Cache 4 | 5 | param([string]$choice) 6 | 7 | function Is-Admin { 8 | $id = [Security.Principal.WindowsIdentity]::GetCurrent() 9 | $pr = New-Object Security.Principal.WindowsPrincipal($id) 10 | return $pr.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) 11 | } 12 | 13 | switch ($choice) { 14 | 15 | "Enable Game Mode" { 16 | Write-Output "✔ Enabling Game Mode..." 17 | Set-ItemProperty -Path "HKCU:\Software\Microsoft\GameBar" -Name "AllowAutoGameMode" -Value 1 18 | } 19 | 20 | "Disable Game Mode" { 21 | Write-Output "✔ Disabling Game Mode..." 22 | Set-ItemProperty -Path "HKCU:\Software\Microsoft\GameBar" -Name "AllowAutoGameMode" -Value 0 23 | } 24 | 25 | "Toggle Hardware GPU Scheduling" { 26 | if (-not (Is-Admin)) { 27 | Write-Output "✘ Requires Administrator. Please run Flyoobe as Admin." 28 | break 29 | } 30 | 31 | $path = "HKLM:\SYSTEM\CurrentControlSet\Control\GraphicsDrivers" 32 | $val = (Get-ItemProperty -Path $path -Name HwSchMode -ErrorAction SilentlyContinue).HwSchMode 33 | if ($val -eq 2) { 34 | Set-ItemProperty -Path $path -Name HwSchMode -Value 1 -Type DWord 35 | Write-Output "✔ Hardware GPU Scheduling disabled (restart required)." 36 | } else { 37 | Set-ItemProperty -Path $path -Name HwSchMode -Value 2 -Type DWord 38 | Write-Output "✔ Hardware GPU Scheduling enabled (restart required)." 39 | } 40 | } 41 | 42 | "Switch Power Plans" { 43 | Write-Output "Available power plans:" 44 | powercfg /list 45 | 46 | Write-Output "" 47 | Write-Output "Use one of these commands to switch manually:" 48 | Write-Output " - Balanced: powercfg /setactive SCHEME_BALANCED" 49 | Write-Output " - High Performance: powercfg /setactive SCHEME_MIN" 50 | Write-Output " - Ultimate Performance: powercfg /setactive SCHEME_MAX" 51 | } 52 | 53 | "Disable Game DVR" { 54 | Write-Output "✔ Disabling Game DVR..." 55 | Set-ItemProperty -Path "HKCU:\System\GameConfigStore" -Name "GameDVR_Enabled" -Value 0 56 | Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\GameDVR" -Name "AppCaptureEnabled" -Value 0 57 | } 58 | 59 | "Clear Shader Cache" { 60 | $cache = "$env:LOCALAPPDATA\D3DSCache" 61 | if (Test-Path $cache) { 62 | Write-Output "✔ Clearing shader cache..." 63 | Remove-Item "$cache\*" -Force -Recurse -ErrorAction SilentlyContinue 64 | } else { 65 | Write-Output "ℹ Shader cache folder not found." 66 | } 67 | } 68 | 69 | default { 70 | Write-Output "✘ Unknown option: $choice" 71 | } 72 | } 73 | 74 | Write-Output "`nDone. Some changes may require restart to take effect." 75 | -------------------------------------------------------------------------------- /Flyoobe.Extensions/Microsoft Defender maintenance.ps1: -------------------------------------------------------------------------------- 1 | # Microsoft Defender maintenance (update signatures, repair, show status) 2 | # Host: console 3 | # Options: Update signatures; Repair definitions and update; Show Defender status 4 | 5 | param([string]$choice) 6 | 7 | function Get-MpCmdPath { 8 | $candidates = @( 9 | "$env:ProgramFiles\Windows Defender\MpCmdRun.exe", 10 | "$env:ProgramFiles\Microsoft Defender\MpCmdRun.exe" 11 | ) 12 | foreach ($p in $candidates) { if (Test-Path $p) { return $p } } 13 | return $null 14 | } 15 | 16 | function Is-Admin { 17 | $id = [Security.Principal.WindowsIdentity]::GetCurrent() 18 | $pr = New-Object Security.Principal.WindowsPrincipal($id) 19 | return $pr.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) 20 | } 21 | 22 | function Show-Status { 23 | try { 24 | $s = Get-MpComputerStatus 25 | Write-Output "=== Microsoft Defender Status ===" 26 | Write-Output ("Engine version: {0}" -f $s.AMEngineVersion) 27 | Write-Output ("Platform version: {0}" -f $s.AMProductVersion) 28 | Write-Output ("AV signature version: {0}" -f $s.AntivirusSignatureVersion) 29 | Write-Output ("AV signature last update: {0}" -f $s.AntivirusSignatureLastUpdated) 30 | Write-Output ("AS signature version: {0}" -f $s.AntispywareSignatureVersion) 31 | Write-Output ("Real-time protection: {0}" -f $s.RealTimeProtectionEnabled) 32 | Write-Output ("NIS enabled: {0}" -f $s.NISEnabled) 33 | Write-Output ("Service enabled: {0}" -f $s.AMServiceEnabled) 34 | } catch { 35 | Write-Output "✘ Failed to read Defender status: $($_.Exception.Message)" 36 | } 37 | } 38 | 39 | switch ($choice) { 40 | 41 | "Update signatures" { 42 | if (-not (Is-Admin)) { 43 | Write-Output "ℹ Tip: Run as Administrator for the most reliable results." 44 | } 45 | 46 | try { 47 | # Primary: PowerShell cmdlet 48 | Update-MpSignature -ErrorAction Stop 49 | Write-Output "✔ Signatures updated via Update-MpSignature." 50 | } catch { 51 | # Fallback: MpCmdRun 52 | $mp = Get-MpCmdPath 53 | if ($mp) { 54 | Write-Output "↻ Falling back to MpCmdRun.exe ..." 55 | & $mp -SignatureUpdate | Out-String | Write-Output 56 | } else { 57 | Write-Output "✘ MpCmdRun.exe not found and Update-MpSignature failed." 58 | } 59 | } 60 | 61 | Show-Status 62 | } 63 | 64 | "Repair definitions and update" { 65 | if (-not (Is-Admin)) { 66 | Write-Output "✘ Please run this action as Administrator (required to reset definitions)." 67 | break 68 | } 69 | 70 | $mp = Get-MpCmdPath 71 | if (-not $mp) { 72 | Write-Output "✘ MpCmdRun.exe not found." 73 | break 74 | } 75 | 76 | try { 77 | Write-Output "↻ Removing all definitions (repair) ..." 78 | & $mp -RemoveDefinitions -All | Out-String | Write-Output 79 | } catch { 80 | Write-Output "✘ Failed to remove definitions: $($_.Exception.Message)" 81 | } 82 | 83 | try { 84 | Write-Output "↻ Updating signatures ..." 85 | Update-MpSignature -ErrorAction Stop 86 | Write-Output "✔ Signatures updated." 87 | } catch { 88 | Write-Output "↻ Fallback: MpCmdRun signature update ..." 89 | & $mp -SignatureUpdate | Out-String | Write-Output 90 | } 91 | 92 | Show-Status 93 | } 94 | 95 | "Show Defender status" { 96 | Show-Status 97 | } 98 | 99 | default { 100 | Write-Output "✘ Unknown option: $choice" 101 | } 102 | } 103 | -------------------------------------------------------------------------------- /Flyoobe.Extensions/Network Tools.ps1: -------------------------------------------------------------------------------- 1 | # Network Tools – Common network troubleshooting actions 2 | # Host: console 3 | # Options: Flush DNS; Reset Winsock; Show active connections; Test Ping (8.8.8.8) 4 | 5 | param([string]$choice) 6 | 7 | switch ($choice) { 8 | "Flush DNS" { 9 | Write-Output "Flushing DNS cache..." 10 | ipconfig /flushdns 11 | } 12 | 13 | "Reset Winsock" { 14 | Write-Output "Resetting Winsock..." 15 | netsh winsock reset 16 | } 17 | 18 | "Show active connections" { 19 | Write-Output "Active TCP connections:" 20 | netstat -ano 21 | } 22 | 23 | "Test Ping (8.8.8.8)" { 24 | Write-Output "Pinging Google DNS..." 25 | ping 8.8.8.8 26 | } 27 | 28 | default { 29 | Write-Output "Unknown option: $choice" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Flyoobe.Extensions/Power Actions.ps1: -------------------------------------------------------------------------------- 1 | # Power Actions – Restart Explorer, Restart, Shutdown, Logoff, Sleep, Hibernate 2 | # Host: silent 3 | # Options: Restart Explorer; Restart PC; Shutdown PC; Log off; Sleep; Hibernate 4 | 5 | param([string]$choice) 6 | 7 | switch ($choice) { 8 | 9 | "Restart Explorer" { 10 | Write-Output "Restarting Explorer..." 11 | Stop-Process -Name explorer -Force 12 | Start-Process explorer.exe 13 | } 14 | 15 | "Restart PC" { 16 | Write-Output "Restarting computer..." 17 | Restart-Computer -Force 18 | } 19 | 20 | "Shutdown PC" { 21 | Write-Output "Shutting down computer..." 22 | Stop-Computer -Force 23 | } 24 | 25 | "Log off" { 26 | Write-Output "Logging off current user..." 27 | shutdown.exe /l 28 | } 29 | 30 | "Sleep" { 31 | Write-Output "Putting system to sleep..." 32 | rundll32.exe powrprof.dll,SetSuspendState 0,1,0 33 | } 34 | 35 | "Hibernate" { 36 | Write-Output "Hibernating system..." 37 | rundll32.exe powrprof.dll,SetSuspendState Hibernate 38 | } 39 | 40 | default { 41 | Write-Output "Unknown option: $choice" 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Flyoobe.Extensions/Write-an-Extension.md: -------------------------------------------------------------------------------- 1 | # 🆕 Setup Extensions: Host + Options Support 2 | 3 | The **Setup Extensions** system now supports extended script metadata in the header. 4 | This allows script authors to define dropdown menus and control how the script is executed. 5 | 6 | --- 7 | 8 | ## ✅ New Metadata Parameters 9 | 10 | ### `# Description: ` 11 | - Short, user-friendly description of what the script does. 12 | - Displayed in the Extensions page below the title. 13 | 14 | ### `# Host: embedded | console | log` 15 | - **embedded** = run inside OOBE, output is captured and shown in the app. 16 | - **console** = run in an external PowerShell window with `-NoExit`. 17 | - **log** = Runs inside Flyoobe's live Log Viewer (App-Settings > Notifications) and writes messages to the internal notification logger. 18 | - **Default:** `embedded` (if not specified). 19 | 20 | ### `# Options: value1; value2; value3; ...` 21 | - Defines multiple selectable actions for a single script. 22 | - A dropdown is automatically shown in the Extensions page. 23 | - The selected value is passed to the script as `$choice`. 24 | 25 | --- 26 | 27 | ## 📄 Example Script Header 28 | 29 | ```powershell 30 | # Description: File Explorer tweaks 31 | # Host: embedded 32 | # Options: Show file extensions; Hide file extensions; Open This PC 33 | 34 | param([string]$choice) 35 | switch ($choice) { 36 | "Show file extensions" { ... } 37 | "Hide file extensions" { ... } 38 | "Open This PC" { ... } 39 | } 40 | -------------------------------------------------------------------------------- /Flyoobe.ToolSpot-deprecated/Flyoobe.Spot.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.14.36414.22 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Flyoobe.Spot", "Flyoobe.ToolSpot\Flyoobe.Spot.csproj", "{1133824D-6F42-48D4-8F18-A93AB7403DB7}" 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 | {1133824D-6F42-48D4-8F18-A93AB7403DB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {1133824D-6F42-48D4-8F18-A93AB7403DB7}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {1133824D-6F42-48D4-8F18-A93AB7403DB7}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {1133824D-6F42-48D4-8F18-A93AB7403DB7}.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 = {B22B36E3-C594-46AF-AF57-3C03B2F97541} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /Flyoobe.ToolSpot-deprecated/Flyoobe.ToolSpot/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Flyoobe.ToolSpot-deprecated/Flyoobe.ToolSpot/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Forms; 6 | 7 | namespace Flyoobe.ToolSpot 8 | { 9 | internal static class Program 10 | { 11 | /// 12 | /// Der Haupteinstiegspunkt für die Anwendung. 13 | /// 14 | [STAThread] 15 | static void Main() 16 | { 17 | Application.EnableVisualStyles(); 18 | Application.SetCompatibleTextRenderingDefault(false); 19 | Application.Run(new MainForm()); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Flyoobe.ToolSpot-deprecated/Flyoobe.ToolSpot/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("Spot")] 9 | [assembly: AssemblyDescription("Flyoobe Spot")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Builtbybel")] 12 | [assembly: AssemblyProduct("Flyoobe Spot")] 13 | [assembly: AssemblyCopyright("Copyright © 2025")] 14 | [assembly: AssemblyTrademark("A Belim app creation")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly 18 | // für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von 19 | // COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen. 20 | [assembly: ComVisible(false)] 21 | 22 | // Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird 23 | [assembly: Guid("1133824d-6f42-48d4-8f18-a93ab7403db7")] 24 | 25 | // Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: 26 | // 27 | // Hauptversion 28 | // Nebenversion 29 | // Buildnummer 30 | // Revision 31 | // 32 | [assembly: AssemblyVersion("0.2.0.0")] 33 | [assembly: AssemblyFileVersion("0.2.0.0")] 34 | -------------------------------------------------------------------------------- /Flyoobe.ToolSpot-deprecated/Flyoobe.ToolSpot/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 Flyoobe.Spot.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("Flyoobe.Spot.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 | -------------------------------------------------------------------------------- /Flyoobe.ToolSpot-deprecated/Flyoobe.ToolSpot/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 Flyoobe.Spot.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 | -------------------------------------------------------------------------------- /Flyoobe.ToolSpot-deprecated/Flyoobe.ToolSpot/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Flyoobe.ToolSpot-deprecated/Flyoobe.ToolSpot/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 | -------------------------------------------------------------------------------- /Flyoobe.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.14.36221.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Flyoobe", "Flyoobe\Flyoobe.csproj", "{50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}" 7 | EndProject 8 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Flyby11", "Flyby11\Flyby11.vcxproj", "{7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Debug|x64 = Debug|x64 14 | Debug|x86 = Debug|x86 15 | Release|Any CPU = Release|Any CPU 16 | Release|x64 = Release|x64 17 | Release|x86 = Release|x86 18 | EndGlobalSection 19 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 20 | {50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 21 | {50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Debug|Any CPU.Build.0 = Debug|Any CPU 22 | {50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Debug|x64.ActiveCfg = Debug|Any CPU 23 | {50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Debug|x64.Build.0 = Debug|Any CPU 24 | {50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Debug|x86.ActiveCfg = Debug|Any CPU 25 | {50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Debug|x86.Build.0 = Debug|Any CPU 26 | {50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Release|Any CPU.ActiveCfg = Release|Any CPU 27 | {50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Release|Any CPU.Build.0 = Release|Any CPU 28 | {50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Release|x64.ActiveCfg = Release|Any CPU 29 | {50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Release|x64.Build.0 = Release|Any CPU 30 | {50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Release|x86.ActiveCfg = Release|Any CPU 31 | {50CA0D4D-45AD-4E03-BFC5-64FFF4CDA36C}.Release|x86.Build.0 = Release|Any CPU 32 | {7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Debug|Any CPU.ActiveCfg = Debug|x64 33 | {7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Debug|Any CPU.Build.0 = Debug|x64 34 | {7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Debug|x64.ActiveCfg = Debug|x64 35 | {7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Debug|x64.Build.0 = Debug|x64 36 | {7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Debug|x86.ActiveCfg = Debug|Win32 37 | {7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Debug|x86.Build.0 = Debug|Win32 38 | {7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Release|Any CPU.ActiveCfg = Release|x64 39 | {7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Release|Any CPU.Build.0 = Release|x64 40 | {7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Release|x64.ActiveCfg = Release|x64 41 | {7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Release|x64.Build.0 = Release|x64 42 | {7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Release|x86.ActiveCfg = Release|Win32 43 | {7A2DD9D3-5D3D-46E8-976A-51A6304CCF45}.Release|x86.Build.0 = Release|Win32 44 | EndGlobalSection 45 | GlobalSection(SolutionProperties) = preSolution 46 | HideSolutionNode = FALSE 47 | EndGlobalSection 48 | GlobalSection(ExtensibilityGlobals) = postSolution 49 | SolutionGuid = {263B972C-E7F5-43F6-AF4B-9C138C57DEDB} 50 | EndGlobalSection 51 | EndGlobal 52 | -------------------------------------------------------------------------------- /Flyoobe/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Flyoobe/AppIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/builtbybel/Flyoobe/a4a9a346ae338aca69451561dc32266defb01428/Flyoobe/AppIcon.ico -------------------------------------------------------------------------------- /Flyoobe/AppIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/builtbybel/Flyoobe/a4a9a346ae338aca69451561dc32266defb01428/Flyoobe/AppIcon.png -------------------------------------------------------------------------------- /Flyoobe/Features/AI/ClickToDo.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 4 | using System.Threading.Tasks; 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 | public override string ID() 26 | { 27 | return "Disable Click to Do (Only Copilot+ PCs)"; 28 | } 29 | 30 | public override string Info() 31 | { 32 | 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."; 33 | } 34 | 35 | public override string SupportedOS() => "Windows 11"; 36 | public override bool IsRecommended => true; 37 | 38 | public override Task CheckFeature() 39 | { 40 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 41 | } 42 | 43 | public override Task DoFeature() 44 | { 45 | try 46 | { 47 | Registry.SetValue(keyName, valueName, recommendedValue, RegistryValueKind.DWord); 48 | return Task.FromResult(true); 49 | } 50 | catch (Exception ex) 51 | { 52 | Logger.Log("Error disabling Click to Do: " + ex.Message, LogLevel.Error); 53 | return Task.FromResult(false); 54 | } 55 | } 56 | 57 | public override bool UndoFeature() 58 | { 59 | try 60 | { 61 | Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord); 62 | return true; 63 | } 64 | catch (Exception ex) 65 | { 66 | Logger.Log("Error re-enabling Click to Do: " + ex.Message, LogLevel.Error); 67 | return false; 68 | } 69 | } 70 | } 71 | } -------------------------------------------------------------------------------- /Flyoobe/Features/AI/CopilotTaskbar.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 string SupportedOS() => "Windows 11"; 30 | public override bool IsRecommended => true; 31 | 32 | public override Task CheckFeature() 33 | { 34 | return Task.FromResult(Utils.IntEquals(keyName, valueName, 1)); 35 | } 36 | 37 | public override Task DoFeature() 38 | { 39 | try 40 | { 41 | Registry.SetValue(keyName, valueName, recommendedValue, 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, 0, 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 | } -------------------------------------------------------------------------------- /Flyoobe/Features/AI/Recall.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 | public override string ID() 20 | { 21 | return "Turn off Recall in Windows 11"; 22 | } 23 | 24 | public override string Info() 25 | { 26 | return "This will remove Recall from Windows 11 24H2"; 27 | } 28 | 29 | public override string SupportedOS() => "Windows 11"; 30 | public override bool IsRecommended => true; 31 | 32 | public override Task CheckFeature() 33 | { 34 | // Check if reg key exists 35 | object value = Registry.GetValue(keyName, valueName, null); 36 | if (value == null) 37 | { 38 | // Key does not exist, turn off feature 39 | return Task.FromResult(false); 40 | } 41 | 42 | // Key exists, check if value is desired value 43 | return Task.FromResult((int)value == recommendedValue); 44 | } 45 | 46 | public override Task DoFeature() 47 | { 48 | try 49 | { 50 | Registry.SetValue(keyName, valueName, recommendedValue, Microsoft.Win32.RegistryValueKind.DWord); 51 | Logger.Log("You've even disabled system-wide Snapshots for all users now.", LogLevel.Info); 52 | return Task.FromResult(true); 53 | } 54 | catch (Exception ex) 55 | { 56 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 57 | } 58 | 59 | return Task.FromResult(false); 60 | } 61 | 62 | public override bool UndoFeature() 63 | { 64 | try 65 | { 66 | Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 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 | } -------------------------------------------------------------------------------- /Flyoobe/Features/Ads/FileExlorerAds.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 ID() 15 | { 16 | return "Disable File Explorer Ads"; 17 | } 18 | 19 | public override string Info() 20 | { 21 | return "This feature will disable ads in File Explorer."; 22 | } 23 | 24 | public override string SupportedOS() => "Windows 11"; 25 | public override bool IsRecommended => true; 26 | 27 | public override string GetFeatureDetails() 28 | { 29 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 30 | } 31 | 32 | public override Task CheckFeature() 33 | { 34 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 35 | } 36 | 37 | public override Task DoFeature() 38 | { 39 | try 40 | { 41 | Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord); 42 | Logger.Log("File Explorer Ads disabled", LogLevel.Info); 43 | return Task.FromResult(true); 44 | } 45 | catch (Exception ex) 46 | { 47 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 48 | } 49 | 50 | return Task.FromResult(false); 51 | } 52 | 53 | public override bool UndoFeature() 54 | { 55 | try 56 | { 57 | Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord); 58 | Logger.Log("File Explorer Ads enabled", LogLevel.Info); 59 | return true; 60 | } 61 | catch (Exception ex) 62 | { 63 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 64 | } 65 | 66 | return false; 67 | } 68 | } 69 | } -------------------------------------------------------------------------------- /Flyoobe/Features/Ads/FinishSetupAds.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 SupportedOS() => "Windows 11"; 19 | public override bool IsRecommended => true; 20 | 21 | public override string GetFeatureDetails() 22 | { 23 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 24 | } 25 | 26 | public override Task CheckFeature() 27 | { 28 | return 29 | Task.FromResult(Utils.IntEquals(keyName, valueName, 0)); 30 | } 31 | 32 | public override Task DoFeature() 33 | { 34 | try 35 | { 36 | Registry.SetValue(keyName, valueName, 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 | 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 | } -------------------------------------------------------------------------------- /Flyoobe/Features/Ads/LockScreenAds.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 SupportedOS() => "Windows 11"; 20 | public override bool IsRecommended => true; 21 | 22 | public override string GetFeatureDetails() 23 | { 24 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 25 | } 26 | 27 | public override Task CheckFeature() 28 | { 29 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue) && 30 | Utils.IntEquals(keyName, valueName2, 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 | 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, Microsoft.Win32.RegistryValueKind.DWord); 56 | Registry.SetValue(keyName, valueName2, 1, Microsoft.Win32.RegistryValueKind.DWord); 57 | 58 | return true; 59 | } 60 | catch (Exception ex) 61 | { 62 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 63 | } 64 | 65 | return false; 66 | } 67 | } 68 | } -------------------------------------------------------------------------------- /Flyoobe/Features/Ads/PersonalizedAds.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 SupportedOS() => "Windows 11"; 19 | public override bool IsRecommended => true; 20 | 21 | public override string GetFeatureDetails() 22 | { 23 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 24 | } 25 | 26 | public override Task CheckFeature() 27 | { 28 | return Task.FromResult(Utils.IntEquals(keyName, valueName, 0)); 29 | } 30 | 31 | public override Task DoFeature() 32 | { 33 | try 34 | { 35 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 36 | 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(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 52 | 53 | return true; 54 | } 55 | catch (Exception ex) 56 | { 57 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 58 | } 59 | 60 | return false; 61 | } 62 | } 63 | } -------------------------------------------------------------------------------- /Flyoobe/Features/Ads/SettingsAds.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 SupportedOS() => "Windows 11"; 22 | public override bool IsRecommended => true; 23 | 24 | public override string GetFeatureDetails() 25 | { 26 | return $"{keyName} | Value: {valueName} + {valueName2} + {valueName3} | Recommended Value: {recommendedValue}"; 27 | } 28 | 29 | public override Task CheckFeature() 30 | { 31 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue) && 32 | Utils.IntEquals(keyName, valueName2, recommendedValue) && 33 | Utils.IntEquals(keyName, valueName3, recommendedValue) 34 | ); 35 | } 36 | 37 | public override Task DoFeature() 38 | { 39 | try 40 | { 41 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 42 | Registry.SetValue(keyName, valueName2, 0, Microsoft.Win32.RegistryValueKind.DWord); 43 | Registry.SetValue(keyName, valueName3, 0, Microsoft.Win32.RegistryValueKind.DWord); 44 | 45 | return Task.FromResult(true); 46 | } 47 | catch (Exception ex) 48 | { 49 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 50 | } 51 | 52 | return Task.FromResult(false); 53 | } 54 | 55 | public override bool UndoFeature() 56 | { 57 | try 58 | { 59 | Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 60 | Registry.SetValue(keyName, valueName2, 1, Microsoft.Win32.RegistryValueKind.DWord); 61 | Registry.SetValue(keyName, valueName3, 1, Microsoft.Win32.RegistryValueKind.DWord); 62 | 63 | return true; 64 | } 65 | catch (Exception ex) 66 | { 67 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 68 | } 69 | 70 | return false; 71 | } 72 | } 73 | } -------------------------------------------------------------------------------- /Flyoobe/Features/Ads/StartmenuAds.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 string SupportedOS() => "Windows 11"; 30 | public override bool IsRecommended => true; 31 | 32 | public override Task CheckFeature() 33 | { 34 | return Task.FromResult( 35 | Utils.IntEquals(keyName, valueName, recommendedValue) 36 | ); 37 | } 38 | 39 | public override Task DoFeature() 40 | { 41 | try 42 | { 43 | Registry.SetValue(keyName, valueName, 0, 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, valueName, 1, RegistryValueKind.DWord); 59 | return true; 60 | } 61 | catch (Exception ex) 62 | { 63 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 64 | } 65 | 66 | return false; 67 | } 68 | } 69 | } -------------------------------------------------------------------------------- /Flyoobe/Features/Ads/TailoredExperiences.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 string SupportedOS() => "Windows 11"; 30 | public override bool IsRecommended => true; 31 | 32 | public override Task CheckFeature() 33 | { 34 | return Task.FromResult( 35 | Utils.IntEquals(keyName, valueName, recommendedValue) 36 | ); 37 | } 38 | 39 | public override Task DoFeature() 40 | { 41 | try 42 | { 43 | Registry.SetValue(keyName, valueName, 0, 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, valueName, 1, RegistryValueKind.DWord); 59 | return true; 60 | } 61 | catch (Exception ex) 62 | { 63 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 64 | } 65 | 66 | return false; 67 | } 68 | } 69 | } -------------------------------------------------------------------------------- /Flyoobe/Features/Ads/TipsAndSuggestions.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 SupportedOS() => "Windows 11"; 19 | public override bool IsRecommended => true; 20 | 21 | public override string GetFeatureDetails() 22 | { 23 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 24 | } 25 | 26 | public override Task CheckFeature() 27 | { 28 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue) 29 | ); 30 | } 31 | 32 | public override Task DoFeature() 33 | { 34 | try 35 | { 36 | Registry.SetValue(keyName, valueName, 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 | 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 | } -------------------------------------------------------------------------------- /Flyoobe/Features/Ads/WelcomeExperienceAds.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 SupportedOS() => "Windows 11"; 19 | public override bool IsRecommended => true; 20 | 21 | public override string GetFeatureDetails() 22 | { 23 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 24 | } 25 | 26 | public override Task CheckFeature() 27 | { 28 | return Task.FromResult(Utils.IntEquals(keyName, valueName, 0)); 29 | } 30 | 31 | public override Task DoFeature() 32 | { 33 | try 34 | { 35 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 36 | 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(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 52 | 53 | return true; 54 | } 55 | catch (Exception ex) 56 | { 57 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 58 | } 59 | 60 | return false; 61 | } 62 | } 63 | } -------------------------------------------------------------------------------- /Flyoobe/Features/Edge/BrowserSignin.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 string SupportedOS() => "Windows 10, Windows 11"; 24 | public override bool IsRecommended => false; 25 | 26 | public override Task CheckFeature() 27 | { 28 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 29 | } 30 | 31 | public override Task DoFeature() 32 | { 33 | try 34 | { 35 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 36 | 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(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 52 | 53 | return true; 54 | } 55 | catch (Exception ex) 56 | { 57 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 58 | } 59 | 60 | return false; 61 | } 62 | } 63 | } -------------------------------------------------------------------------------- /Flyoobe/Features/Edge/DefaultTopSites.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 string SupportedOS() => "Windows 10, Windows 11"; 24 | public override bool IsRecommended => false; 25 | 26 | public override Task CheckFeature() 27 | { 28 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 29 | } 30 | 31 | public override Task DoFeature() 32 | { 33 | try 34 | { 35 | Registry.SetValue(keyName, valueName, recommendedValue, Microsoft.Win32.RegistryValueKind.DWord); 36 | 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(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 52 | 53 | return true; 54 | } 55 | catch (Exception ex) 56 | { 57 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 58 | } 59 | 60 | return false; 61 | } 62 | } 63 | } -------------------------------------------------------------------------------- /Flyoobe/Features/Edge/DefautBrowserSetting.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 string SupportedOS() => "Windows 10, Windows 11"; 24 | public override bool IsRecommended => false; 25 | 26 | public override Task CheckFeature() 27 | { 28 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 29 | } 30 | 31 | public override Task DoFeature() 32 | { 33 | try 34 | { 35 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 36 | 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(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 52 | 53 | return true; 54 | } 55 | catch (Exception ex) 56 | { 57 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 58 | } 59 | 60 | return false; 61 | } 62 | } 63 | } -------------------------------------------------------------------------------- /Flyoobe/Features/Edge/EdgeCollections.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 SupportedOS() => "Windows 10, Windows 11"; 19 | public override bool IsRecommended => false; 20 | 21 | public override string GetFeatureDetails() 22 | { 23 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 24 | } 25 | 26 | public override Task CheckFeature() 27 | { 28 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 29 | } 30 | 31 | public override Task DoFeature() 32 | { 33 | try 34 | { 35 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 36 | 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(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 52 | 53 | return true; 54 | } 55 | catch (Exception ex) 56 | { 57 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 58 | } 59 | 60 | return false; 61 | } 62 | } 63 | } -------------------------------------------------------------------------------- /Flyoobe/Features/Edge/EdgeShoppingAssistant.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 string SupportedOS() => "Windows 10, Windows 11"; 24 | public override bool IsRecommended => false; 25 | 26 | public override Task CheckFeature() 27 | { 28 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 29 | } 30 | 31 | public override Task DoFeature() 32 | { 33 | try 34 | { 35 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 36 | 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(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 52 | 53 | return true; 54 | } 55 | catch (Exception ex) 56 | { 57 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 58 | } 59 | 60 | return false; 61 | } 62 | } 63 | } -------------------------------------------------------------------------------- /Flyoobe/Features/Edge/FirstRunExperience.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 string SupportedOS() => "Windows 10, Windows 11"; 24 | public override bool IsRecommended => true; 25 | 26 | public override Task CheckFeature() 27 | { 28 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 29 | } 30 | 31 | public override Task DoFeature() 32 | { 33 | try 34 | { 35 | Registry.SetValue(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 36 | 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(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 52 | 53 | return true; 54 | } 55 | catch (Exception ex) 56 | { 57 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 58 | } 59 | 60 | return false; 61 | } 62 | } 63 | } -------------------------------------------------------------------------------- /Flyoobe/Features/Edge/GamerMode.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 string SupportedOS() => "Windows 10, Windows 11"; 24 | public override bool IsRecommended => true; 25 | 26 | public override Task CheckFeature() 27 | { 28 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 29 | } 30 | 31 | public override Task DoFeature() 32 | { 33 | try 34 | { 35 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 36 | 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(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 52 | 53 | return true; 54 | } 55 | catch (Exception ex) 56 | { 57 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 58 | } 59 | 60 | return false; 61 | } 62 | } 63 | } -------------------------------------------------------------------------------- /Flyoobe/Features/Edge/HubsSidebar.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 string SupportedOS() => "Windows 10, Windows 11"; 24 | public override bool IsRecommended => false; 25 | 26 | public override Task CheckFeature() 27 | { 28 | return Task.FromResult(Utils.IntEquals(keyName, valueName, 0)); 29 | } 30 | 31 | public override Task DoFeature() 32 | { 33 | try 34 | { 35 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 36 | 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(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 52 | 53 | return true; 54 | } 55 | catch (Exception ex) 56 | { 57 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 58 | } 59 | 60 | return false; 61 | } 62 | } 63 | } -------------------------------------------------------------------------------- /Flyoobe/Features/Edge/ImportOnEachLaunch.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 string SupportedOS() => "Windows 10, Windows 11"; 24 | public override bool IsRecommended => true; 25 | 26 | public override Task CheckFeature() 27 | { 28 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 29 | } 30 | 31 | public override Task DoFeature() 32 | { 33 | try 34 | { 35 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 36 | 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(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 52 | 53 | return true; 54 | } 55 | catch (Exception ex) 56 | { 57 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 58 | } 59 | 60 | return false; 61 | } 62 | } 63 | } -------------------------------------------------------------------------------- /Flyoobe/Features/Edge/StartupBoost.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 string SupportedOS() => "Windows 10, Windows 11"; 24 | public override bool IsRecommended => true; 25 | 26 | public override Task CheckFeature() 27 | { 28 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 29 | } 30 | 31 | public override Task DoFeature() 32 | { 33 | try 34 | { 35 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 36 | 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(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 52 | 53 | return true; 54 | } 55 | catch (Exception ex) 56 | { 57 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 58 | } 59 | 60 | return false; 61 | } 62 | } 63 | } -------------------------------------------------------------------------------- /Flyoobe/Features/Edge/TabPageQuickLinks.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 string SupportedOS() => "Windows 10, Windows 11"; 24 | public override bool IsRecommended => false; 25 | 26 | public override Task CheckFeature() 27 | { 28 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 29 | } 30 | 31 | public override Task DoFeature() 32 | { 33 | try 34 | { 35 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 36 | 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(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 52 | 53 | return true; 54 | } 55 | catch (Exception ex) 56 | { 57 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 58 | } 59 | 60 | return false; 61 | } 62 | } 63 | } -------------------------------------------------------------------------------- /Flyoobe/Features/Edge/UserFeedback.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 string SupportedOS() => "Windows 10, Windows 11"; 24 | public override bool IsRecommended => true; 25 | 26 | public override Task CheckFeature() 27 | { 28 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 29 | } 30 | 31 | public override Task DoFeature() 32 | { 33 | try 34 | { 35 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 36 | 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(keyName, valueName, 1, Microsoft.Win32.RegistryValueKind.DWord); 52 | 53 | return true; 54 | } 55 | catch (Exception ex) 56 | { 57 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 58 | } 59 | 60 | return false; 61 | } 62 | } 63 | } -------------------------------------------------------------------------------- /Flyoobe/Features/FeatureBase.cs: -------------------------------------------------------------------------------- 1 | using System.Threading.Tasks; 2 | 3 | namespace Flyoobe 4 | { 5 | public abstract class FeatureBase 6 | { 7 | public abstract string ID(); 8 | 9 | public abstract string Info(); 10 | 11 | public abstract string GetFeatureDetails(); 12 | 13 | public abstract string SupportedOS(); 14 | 15 | public abstract Task CheckFeature(); 16 | 17 | public abstract Task DoFeature(); 18 | 19 | public abstract bool UndoFeature(); 20 | 21 | public abstract bool IsRecommended { get; } 22 | } 23 | } -------------------------------------------------------------------------------- /Flyoobe/Features/FeatureManager.cs: -------------------------------------------------------------------------------- 1 | using Features; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace Flyoobe 7 | { 8 | /// 9 | /// Manages all available features and categories. 10 | /// Provides methods to query, apply, and undo tweaks. 11 | /// 12 | public class FeatureManager 13 | { 14 | // List of all loaded features (root nodes with category and children) 15 | public List AllFeatures { get; private set; } 16 | 17 | public FeatureManager() 18 | { 19 | // Load features from loader once during construction 20 | AllFeatures = FeatureLoader.Load(); 21 | } 22 | 23 | /// 24 | /// Returns all available top-level categories. 25 | /// 26 | public List GetCategories() 27 | { 28 | return AllFeatures.Select(f => f.Category).ToList(); 29 | } 30 | 31 | /// 32 | /// Returns all tweaks under a specific category. 33 | /// 34 | public List GetFeaturesByCategory(string category) 35 | { 36 | return AllFeatures.FirstOrDefault(f => f.Category == category)?.Children ?? new List(); 37 | } 38 | 39 | /// 40 | /// Applies (executes) a selected tweak asynchronously. 41 | /// 42 | public async Task ApplyFeature(FeatureNode node) 43 | { 44 | return await node.Feature.DoFeature(); 45 | } 46 | 47 | /// 48 | /// Undoes a tweak if supported. 49 | /// 50 | public bool UndoFeature(FeatureNode node) 51 | { 52 | return node.Feature.UndoFeature(); 53 | } 54 | 55 | /// 56 | /// Returns the short informational description of the feature. 57 | /// 58 | public string GetFeatureInfo(FeatureNode node) 59 | { 60 | return node.Feature?.Info() ?? ""; 61 | } 62 | 63 | /// 64 | /// Checks if the tweak is currently enabled (active). 65 | /// 66 | public async Task IsEnabled(FeatureNode node) 67 | { 68 | return await node.Feature.CheckFeature(); 69 | } 70 | 71 | /// 72 | /// Collects all features from all categories that are marked as "Recommended" 73 | /// Use quick settings option. 74 | /// 75 | public List GetAllRecommendedFeatures() 76 | { 77 | var recommended = new List(); 78 | foreach (var categoryNode in AllFeatures) 79 | { 80 | foreach (var featureNode in categoryNode.Children) 81 | { 82 | if (featureNode.Feature.IsRecommended) 83 | { 84 | recommended.Add(featureNode); 85 | } 86 | } 87 | } 88 | return recommended; 89 | } 90 | 91 | 92 | 93 | } 94 | } -------------------------------------------------------------------------------- /Flyoobe/Features/FeatureNode.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Flyoobe 4 | { 5 | public class FeatureNode 6 | { 7 | public string Category { get; set; } 8 | public FeatureBase Feature { get; set; } 9 | public List Children { get; set; } = new List(); 10 | 11 | public FeatureNode(string category) 12 | { 13 | Category = category; 14 | } 15 | 16 | public FeatureNode(FeatureBase feature) 17 | { 18 | Feature = feature; 19 | } 20 | 21 | public override string ToString() 22 | { 23 | return Feature?.ID() ?? Category; 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /Flyoobe/Features/Gaming/GameDVR.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 string SupportedOS() => "Windows 10, Windows 11"; 35 | public override bool IsRecommended => false; 36 | 37 | public override Task CheckFeature() 38 | { 39 | return Task.FromResult(Utils.IntEquals(keyName, valueName, 0) && 40 | Utils.IntEquals(keyName, valueName2, 2) && 41 | Utils.IntEquals(keyName2, valueName3, 0)); 42 | } 43 | 44 | public override Task DoFeature() 45 | { 46 | try 47 | { 48 | Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord); 49 | Registry.SetValue(keyName, valueName2, 2, RegistryValueKind.DWord); 50 | Registry.SetValue(keyName2, valueName3, 0, RegistryValueKind.DWord); 51 | 52 | return Task.FromResult(true); 53 | } 54 | catch (Exception ex) 55 | { 56 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 57 | } 58 | 59 | return Task.FromResult(false); 60 | } 61 | 62 | public override bool UndoFeature() 63 | { 64 | try 65 | { 66 | Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord); 67 | Registry.SetValue(keyName, valueName2, 0, RegistryValueKind.DWord); 68 | Registry.SetValue(keyName2, valueName3, 1, RegistryValueKind.DWord); 69 | 70 | return true; 71 | } 72 | catch (Exception ex) 73 | { 74 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 75 | } 76 | 77 | return false; 78 | } 79 | } 80 | } -------------------------------------------------------------------------------- /Flyoobe/Features/Gaming/PowerThrotteling.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 string SupportedOS() => "Windows 10, Windows 11"; 30 | public override bool IsRecommended => false; 31 | 32 | public override Task CheckFeature() 33 | { 34 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 35 | } 36 | 37 | public override Task DoFeature() 38 | { 39 | try 40 | { 41 | Registry.SetValue(keyName, valueName, recommendedValue, Microsoft.Win32.RegistryValueKind.DWord); 42 | 43 | return Task.FromResult(true); 44 | } 45 | catch (Exception ex) 46 | { 47 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 48 | } 49 | 50 | return Task.FromResult(false); 51 | } 52 | 53 | public override bool UndoFeature() 54 | { 55 | try 56 | { 57 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 58 | 59 | return true; 60 | } 61 | catch (Exception ex) 62 | { 63 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 64 | } 65 | 66 | return false; 67 | } 68 | } 69 | } -------------------------------------------------------------------------------- /Flyoobe/Features/Gaming/VisualFX.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 "Turns off visual effects like animations and shadows in Windows to boost performance."; 27 | } 28 | 29 | public override string SupportedOS() => "Windows 10, Windows 11"; 30 | public override bool IsRecommended => true; 31 | 32 | public override Task CheckFeature() 33 | { 34 | return Task.FromResult(Utils.IntEquals(keyName, valueName, 0)); 35 | } 36 | 37 | public override Task DoFeature() 38 | { 39 | try 40 | { 41 | Registry.SetValue(keyName, valueName, 0, Microsoft.Win32.RegistryValueKind.DWord); 42 | 43 | return Task.FromResult(true); 44 | } 45 | catch (Exception ex) 46 | { 47 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 48 | } 49 | 50 | return Task.FromResult(false); 51 | } 52 | 53 | public override bool UndoFeature() 54 | { 55 | try 56 | { 57 | Registry.SetValue(keyName, valueName, 2, Microsoft.Win32.RegistryValueKind.DWord); 58 | 59 | return true; 60 | } 61 | catch (Exception ex) 62 | { 63 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 64 | } 65 | 66 | return false; 67 | } 68 | } 69 | } -------------------------------------------------------------------------------- /Flyoobe/Features/Privacy/ActivityHistory.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Privacy 7 | { 8 | internal class ActivityHistory : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\System"; 11 | private const string valueName = "PublishUserActivities"; 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 SupportedOS() => "Windows 11"; 25 | public override bool IsRecommended => false; 26 | 27 | public override string Info() 28 | { 29 | return "Disable activity history (prevents Windows from tracking and storing your activity)"; 30 | } 31 | 32 | public override Task CheckFeature() 33 | { 34 | return Task.FromResult( 35 | Utils.IntEquals(keyName, valueName, recommendedValue) 36 | ); 37 | } 38 | 39 | public override Task DoFeature() 40 | { 41 | try 42 | { 43 | Registry.SetValue(keyName, valueName, 0, 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, valueName, 1, 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 | } -------------------------------------------------------------------------------- /Flyoobe/Features/Privacy/LocationTracking.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Privacy 7 | { 8 | internal class LocationTracking : FeatureBase 9 | { 10 | private const string keyName = @"HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\LocationAndSensors"; 11 | private const string valueName = "DisableLocation"; 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 location tracking"; 22 | } 23 | 24 | public override string SupportedOS() => "Windows 11"; 25 | public override bool IsRecommended => true; 26 | 27 | public override string Info() 28 | { 29 | return "Disable location tracking (prevents Windows from accessing your location)"; 30 | } 31 | 32 | public override Task CheckFeature() 33 | { 34 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 35 | } 36 | 37 | public override Task DoFeature() 38 | { 39 | try 40 | { 41 | Registry.SetValue(keyName, valueName, recommendedValue, 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, 0, RegistryValueKind.DWord); 57 | 58 | return true; 59 | } 60 | catch (Exception ex) 61 | { 62 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 63 | } 64 | 65 | return false; 66 | } 67 | } 68 | } -------------------------------------------------------------------------------- /Flyoobe/Features/Privacy/PrivacyExperience.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 SupportedOS() => "Windows 11"; 19 | public override bool IsRecommended => true; 20 | 21 | public override string GetFeatureDetails() 22 | { 23 | return $"{keyName} | Value: {valueName} | Recommended Value: {recommendedValue}"; 24 | } 25 | 26 | public override Task CheckFeature() 27 | { 28 | bool result = !Utils.IntEquals(keyName, valueName, recommendedValue); 29 | return Task.FromResult(result); 30 | } 31 | 32 | public override Task DoFeature() 33 | { 34 | try 35 | { 36 | Registry.SetValue(keyName, valueName, 1, 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, 0, Microsoft.Win32.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 | } -------------------------------------------------------------------------------- /Flyoobe/Features/Privacy/Telemetry.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 SupportedOS() => "Windows 10, Windows 11"; 18 | public override bool IsRecommended => true; 19 | 20 | public override string GetFeatureDetails() 21 | { 22 | return $"{dataCollection} | {diagTrack}"; 23 | } 24 | 25 | public override Task CheckFeature() 26 | { 27 | return Task.FromResult( 28 | Utils.IntEquals(dataCollection, "AllowTelemetry", 0) && 29 | Utils.IntEquals(diagTrack, "Start", 4) 30 | 31 | ); 32 | } 33 | 34 | public override Task DoFeature() 35 | { 36 | try 37 | { 38 | Registry.SetValue(dataCollection, "AllowTelemetry", 0, RegistryValueKind.DWord); 39 | Registry.SetValue(diagTrack, "Start", 4, RegistryValueKind.DWord); 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(dataCollection, "AllowTelemetry", 1, RegistryValueKind.DWord); 55 | Registry.SetValue(diagTrack, "Start", 2, 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 | } -------------------------------------------------------------------------------- /Flyoobe/Features/System/BSODDetails.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 SupportedOS() => "Windows 10, Windows 11"; 26 | public override bool IsRecommended => false; 27 | 28 | public override string Info() 29 | { 30 | return "This method displays the full classic BSOD with technical error details instead of the simplified sad face version."; 31 | } 32 | 33 | public override Task CheckFeature() 34 | { 35 | return Task.FromResult( 36 | Utils.IntEquals(keyName, valueName1, recommendedValue) && 37 | Utils.IntEquals(keyName, valueName2, recommendedValue) 38 | ); 39 | } 40 | 41 | public override Task DoFeature() 42 | { 43 | try 44 | { 45 | Registry.SetValue(keyName, valueName1, recommendedValue, RegistryValueKind.DWord); 46 | Registry.SetValue(keyName, valueName2, recommendedValue, RegistryValueKind.DWord); 47 | return Task.FromResult(true); 48 | } 49 | catch (Exception ex) 50 | { 51 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 52 | } 53 | 54 | return Task.FromResult(false); 55 | } 56 | 57 | public override bool UndoFeature() 58 | { 59 | try 60 | { 61 | Registry.SetValue(keyName, valueName1, 0, RegistryValueKind.DWord); 62 | Registry.SetValue(keyName, valueName2, 0, RegistryValueKind.DWord); 63 | return true; 64 | } 65 | catch (Exception ex) 66 | { 67 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 68 | } 69 | 70 | return false; 71 | } 72 | } 73 | } -------------------------------------------------------------------------------- /Flyoobe/Features/System/MenuShowDelay.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 string SupportedOS() => "Windows 10, Windows 11"; 30 | public override bool IsRecommended => false; 31 | 32 | public override Task CheckFeature() 33 | { 34 | return Task.FromResult(Utils.StringEquals(keyName, valueName, recommendedValue)); 35 | } 36 | 37 | public override Task DoFeature() 38 | { 39 | try 40 | { 41 | Registry.SetValue(keyName, valueName, recommendedValue, RegistryValueKind.String); 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, "400", RegistryValueKind.String); // Default is 400 on Windows 11 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 | } -------------------------------------------------------------------------------- /Flyoobe/Features/System/NetworkThrottling.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 string SupportedOS() => "Windows 10, Windows 11"; 30 | public override bool IsRecommended => false; 31 | 32 | public override Task CheckFeature() 33 | { 34 | return Task.FromResult(Utils.IntEquals(keyName, valueName, unchecked((int)0xFFFFFFFF))); 35 | } 36 | 37 | public override Task DoFeature() 38 | { 39 | try 40 | { 41 | Registry.SetValue(keyName, valueName, unchecked((int)0xFFFFFFFF), 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, 10, RegistryValueKind.DWord); // Default is 10 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 | } -------------------------------------------------------------------------------- /Flyoobe/Features/System/SpeedUpShutdown.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 string SupportedOS() => "Windows 10, Windows 11"; 30 | public override bool IsRecommended => false; 31 | 32 | public override Task CheckFeature() 33 | { 34 | return Task.FromResult( 35 | Utils.StringEquals(keyName, valueName, recommendedValue) 36 | ); 37 | } 38 | 39 | public override Task DoFeature() 40 | { 41 | try 42 | { 43 | Registry.SetValue(keyName, valueName, recommendedValue, RegistryValueKind.String); 44 | return Task.FromResult(true); 45 | } 46 | catch (Exception ex) 47 | { 48 | Logger.Log("Error in SpeedUpShutdown: " + 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, valueName, "5000", RegistryValueKind.String); // Default value 59 | return true; 60 | } 61 | catch (Exception ex) 62 | { 63 | Logger.Log("Error in SpeedUpShutdown (Undo): " + ex.Message, LogLevel.Error); 64 | } 65 | 66 | return false; 67 | } 68 | } 69 | } -------------------------------------------------------------------------------- /Flyoobe/Features/System/SystemResponsiveness.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 string SupportedOS() => "Windows 10, Windows 11"; 30 | public override bool IsRecommended => false; 31 | 32 | public override Task CheckFeature() 33 | { 34 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 35 | } 36 | 37 | public override Task DoFeature() 38 | { 39 | try 40 | { 41 | Registry.SetValue(keyName, valueName, recommendedValue, 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, 20, RegistryValueKind.DWord); // Default is typically 20 on Windows 11 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 | } -------------------------------------------------------------------------------- /Flyoobe/Features/System/TaskbarEndTask.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 string SupportedOS() => "Windows 11"; 30 | public override bool IsRecommended => true; 31 | 32 | public override Task CheckFeature() 33 | { 34 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 35 | } 36 | 37 | public override Task DoFeature() 38 | { 39 | try 40 | { 41 | Registry.SetValue(keyName, valueName, recommendedValue, RegistryValueKind.DWord); 42 | return Task.FromResult(true); 43 | } 44 | catch (Exception ex) 45 | { 46 | Logger.Log("Failed to enable End Task: " + 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, 0, RegistryValueKind.DWord); 57 | return true; 58 | } 59 | catch (Exception ex) 60 | { 61 | Logger.Log("Failed to disable End Task: " + ex.Message, LogLevel.Error); 62 | } 63 | 64 | return false; 65 | } 66 | } 67 | } -------------------------------------------------------------------------------- /Flyoobe/Features/System/VerboseStatus.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 string SupportedOS() => "Windows 10, Windows 11"; 30 | public override bool IsRecommended => false; 31 | 32 | public override Task CheckFeature() 33 | { 34 | return Task.FromResult( 35 | Utils.IntEquals(keyName, valueName, recommendedValue) 36 | ); 37 | } 38 | 39 | public override Task DoFeature() 40 | { 41 | try 42 | { 43 | Registry.SetValue(keyName, valueName, 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, valueName, 0, 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 | } -------------------------------------------------------------------------------- /Flyoobe/Features/UI/BingSearch.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 4 | using System.Threading.Tasks; 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 string SupportedOS() => "Windows 10, Windows 11"; 30 | public override bool IsRecommended => true; 31 | 32 | public override Task CheckFeature() 33 | { 34 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 35 | } 36 | 37 | public override Task DoFeature() 38 | { 39 | try 40 | { 41 | Registry.SetValue(keyName, valueName, recommendedValue, RegistryValueKind.DWord); 42 | return Task.FromResult(true); 43 | } 44 | catch (Exception ex) 45 | { 46 | Logger.Log("Error in DisableBingSearch: " + ex.Message, LogLevel.Error); 47 | return Task.FromResult(false); 48 | } 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 undoing DisableBingSearch: " + ex.Message, LogLevel.Error); 61 | return false; 62 | } 63 | } 64 | } 65 | } -------------------------------------------------------------------------------- /Flyoobe/Features/UI/FullContextMenus.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 string SupportedOS() => "Windows 11"; 28 | public override bool IsRecommended => false; 29 | 30 | public override Task CheckFeature() 31 | { 32 | try 33 | { 34 | object value = Registry.GetValue(keyName, "", null); 35 | return Task.FromResult(value != null); // Return true if value is not null 36 | } 37 | catch (Exception ex) 38 | { 39 | Logger.Log("Error occurred while checking: " + ex.Message, LogLevel.Error); 40 | return Task.FromResult(false); 41 | } 42 | } 43 | 44 | public override Task DoFeature() 45 | { 46 | try 47 | { 48 | Registry.SetValue(keyName, "", "", RegistryValueKind.String); 49 | return Task.FromResult(true); 50 | } 51 | catch (Exception ex) 52 | { 53 | Logger.Log("Error occurred while enabling: " + ex.Message, LogLevel.Error); 54 | return Task.FromResult(false); 55 | } 56 | } 57 | 58 | public override bool UndoFeature() 59 | { 60 | try 61 | { 62 | Registry.CurrentUser.DeleteSubKeyTree(@"Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}", false); 63 | return true; 64 | } 65 | catch (Exception ex) 66 | { 67 | Logger.Log("Error occurred while disabling: " + ex.Message, LogLevel.Error); 68 | return false; 69 | } 70 | } 71 | } 72 | } -------------------------------------------------------------------------------- /Flyoobe/Features/UI/SearchBoxSuggestions.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 string SupportedOS() => "Windows 11"; 30 | public override bool IsRecommended => true; 31 | 32 | public override Task CheckFeature() 33 | { 34 | return Task.FromResult(Utils.IntEquals(keyName, valueName, recommendedValue)); 35 | } 36 | 37 | public override Task DoFeature() 38 | { 39 | try 40 | { 41 | Registry.SetValue(keyName, valueName, recommendedValue, RegistryValueKind.DWord); 42 | return Task.FromResult(true); 43 | } 44 | catch (Exception ex) 45 | { 46 | Logger.Log("Error in DisableSearchBoxSuggestions: " + ex.Message, LogLevel.Error); 47 | return Task.FromResult(false); 48 | } 49 | } 50 | 51 | public override bool UndoFeature() 52 | { 53 | try 54 | { 55 | Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord); // 0 = Enable suggestions 56 | return true; 57 | } 58 | catch (Exception ex) 59 | { 60 | Logger.Log("Error undoing DisableSearchBoxSuggestions: " + ex.Message, LogLevel.Error); 61 | return false; 62 | } 63 | } 64 | } 65 | } -------------------------------------------------------------------------------- /Flyoobe/Features/UI/SearchboxTaskbarMode.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 string SupportedOS() => "Windows 11"; 30 | public override bool IsRecommended => false; 31 | 32 | public override Task CheckFeature() 33 | { 34 | return Task.FromResult( 35 | Utils.IntEquals(keyName, valueName, recommendedValue) 36 | ); 37 | } 38 | 39 | public override Task DoFeature() 40 | { 41 | try 42 | { 43 | Registry.SetValue(keyName, valueName, 0, 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, valueName, 2, RegistryValueKind.DWord); 59 | return true; 60 | } 61 | catch (Exception ex) 62 | { 63 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 64 | } 65 | 66 | return false; 67 | } 68 | } 69 | } -------------------------------------------------------------------------------- /Flyoobe/Features/UI/ShowOrHideMostUsedApps.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 string SupportedOS() => "Windows 11"; 30 | public override bool IsRecommended => false; 31 | 32 | public override Task CheckFeature() 33 | { 34 | return Task.FromResult( 35 | Utils.IntEquals(keyName, valueName, recommendedValue) 36 | ); 37 | } 38 | 39 | public override Task DoFeature() 40 | { 41 | try 42 | { 43 | Registry.SetValue(keyName, valueName, 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, valueName, 1, RegistryValueKind.DWord); 59 | return true; 60 | } 61 | catch (Exception ex) 62 | { 63 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 64 | } 65 | 66 | return false; 67 | } 68 | } 69 | } -------------------------------------------------------------------------------- /Flyoobe/Features/UI/ShowTaskViewButton.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 string SupportedOS() => "Windows 11"; 30 | public override bool IsRecommended => false; 31 | 32 | public override Task CheckFeature() 33 | { 34 | return Task.FromResult( 35 | Utils.IntEquals(keyName, valueName, recommendedValue) 36 | ); 37 | } 38 | 39 | public override Task DoFeature() 40 | { 41 | try 42 | { 43 | Registry.SetValue(keyName, valueName, 0, 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, valueName, 1, RegistryValueKind.DWord); 59 | return true; 60 | } 61 | catch (Exception ex) 62 | { 63 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 64 | } 65 | 66 | return false; 67 | } 68 | } 69 | } -------------------------------------------------------------------------------- /Flyoobe/Features/UI/SnapAssistFlyout.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 string SupportedOS() => "Windows 11"; 30 | public override bool IsRecommended => false; 31 | 32 | public override Task CheckFeature() 33 | { 34 | return Task.FromResult( 35 | Utils.IntEquals(keyName, valueName, recommendedValue) 36 | ); 37 | } 38 | 39 | public override Task DoFeature() 40 | { 41 | try 42 | { 43 | Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord); 44 | return Task.FromResult(true); 45 | } 46 | catch (Exception ex) 47 | { 48 | Logger.Log("Error in DisableSnapAssistFlyout: " + 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, valueName, 1, RegistryValueKind.DWord); 59 | return true; 60 | } 61 | catch (Exception ex) 62 | { 63 | Logger.Log("Error in DisableSnapAssistFlyout (Undo): " + ex.Message, LogLevel.Error); 64 | } 65 | 66 | return false; 67 | } 68 | } 69 | } -------------------------------------------------------------------------------- /Flyoobe/Features/UI/StartLayout.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 string SupportedOS() => "Windows 11"; 30 | public override bool IsRecommended => false; 31 | 32 | public override Task CheckFeature() 33 | { 34 | return Task.FromResult( 35 | Utils.IntEquals(keyName, valueName, recommendedValue) 36 | ); 37 | } 38 | 39 | public override Task DoFeature() 40 | { 41 | try 42 | { 43 | Registry.SetValue(keyName, valueName, 1, 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, valueName, 0, RegistryValueKind.DWord); 59 | return true; 60 | } 61 | catch (Exception ex) 62 | { 63 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 64 | } 65 | 66 | return false; 67 | } 68 | } 69 | } -------------------------------------------------------------------------------- /Flyoobe/Features/UI/Transparency.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 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 | public override string ID() 20 | { 21 | return "Disable Transparency Effects"; 22 | } 23 | 24 | public override string Info() 25 | { 26 | return "This feature disables transparency effects for Start menu, taskbar, and other surfaces."; 27 | } 28 | 29 | public override string SupportedOS() => "Windows 11"; 30 | public override bool IsRecommended => false; 31 | 32 | public override Task CheckFeature() 33 | { 34 | return Task.FromResult( 35 | Utils.IntEquals(keyName, valueName, recommendedValue) 36 | ); 37 | } 38 | 39 | public override Task DoFeature() 40 | { 41 | try 42 | { 43 | Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord); 44 | return Task.FromResult(true); 45 | } 46 | catch (Exception ex) 47 | { 48 | Logger.Log("Error in DisableTransparency: " + 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, valueName, 1, RegistryValueKind.DWord); 59 | return true; 60 | } 61 | catch (Exception ex) 62 | { 63 | Logger.Log("Error in DisableTransparency (Undo): " + ex.Message, LogLevel.Error); 64 | } 65 | 66 | return false; 67 | } 68 | } 69 | } -------------------------------------------------------------------------------- /Flyoobe/Features/UI/WLockScreen.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using Flyoobe; 3 | using System; 4 | using System.Threading.Tasks; 5 | 6 | namespace Settings.Personalization 7 | { 8 | internal class WLockScreen : 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 string SupportedOS() => "Windows 10, Windows 11"; 30 | public override bool IsRecommended => false; 31 | 32 | public override Task CheckFeature() 33 | { 34 | bool result = !Utils.IntEquals(keyName, valueName, recommendedValue); 35 | return Task.FromResult(result); 36 | } 37 | 38 | public override Task DoFeature() 39 | { 40 | try 41 | { 42 | Registry.SetValue(keyName, valueName, 1, RegistryValueKind.DWord); 43 | return Task.FromResult(true); 44 | } 45 | catch (Exception ex) 46 | { 47 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 48 | } 49 | 50 | return Task.FromResult(false); 51 | } 52 | 53 | public override bool UndoFeature() 54 | { 55 | try 56 | { 57 | Registry.SetValue(keyName, valueName, 0, RegistryValueKind.DWord); 58 | return true; 59 | } 60 | catch (Exception ex) 61 | { 62 | Logger.Log("Code red in " + ex.Message, LogLevel.Error); 63 | } 64 | 65 | return false; 66 | } 67 | } 68 | } -------------------------------------------------------------------------------- /Flyoobe/Helper/CopilotHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.Drawing; 4 | using System.IO; 5 | using System.Windows.Forms; 6 | 7 | public static class CopilotHelper 8 | { 9 | // Path to the Copilot icon file 10 | private static readonly string IconPath = Path.Combine("app", "copilot.png"); 11 | 12 | 13 | // The Shell URI to launch the Copilot app 14 | private const string CopilotAppUri = "shell:AppsFolder\\Microsoft.Copilot_8wekyb3d8bbwe!App"; 15 | 16 | /// 17 | /// Loads and scales the Copilot icon if available. 18 | /// 19 | /// Base size for the icon 20 | /// Scaled icon image or null if icon file missing 21 | public static Image LoadScaledIcon(int baseSize) 22 | { 23 | if (!File.Exists(IconPath)) 24 | return null; 25 | 26 | using (var img = Image.FromFile(IconPath)) 27 | { 28 | int scaledSize = GetScaledIconSize(baseSize); 29 | return new Bitmap(img, new Size(scaledSize, scaledSize)); 30 | } 31 | } 32 | 33 | /// 34 | /// Calculates the scaled icon size based on current screen DPI. 35 | /// 36 | public static int GetScaledIconSize(int baseSize) 37 | { 38 | using (Graphics g = Graphics.FromHwnd(IntPtr.Zero)) 39 | return (int)(baseSize * (g.DpiX / 96f)); 40 | } 41 | 42 | /// 43 | /// Attempts to launch the Copilot app. 44 | /// 45 | public static void LaunchCopilot() 46 | { 47 | string appFolder = Path.Combine( 48 | Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), 49 | "Packages", 50 | "Microsoft.Copilot_8wekyb3d8bbwe" 51 | ); 52 | 53 | if (!Directory.Exists(appFolder)) 54 | { 55 | MessageBox.Show( 56 | "Copilot is currently unavailable. You're the captain now...", 57 | "Copilot Launch Failed", 58 | MessageBoxButtons.OK, 59 | MessageBoxIcon.Warning 60 | ); 61 | return; 62 | } 63 | 64 | Process.Start(new ProcessStartInfo 65 | { 66 | FileName = "explorer.exe", 67 | Arguments = CopilotAppUri, 68 | UseShellExecute = true 69 | }); 70 | } 71 | 72 | /// 73 | /// Sets up the Copilot button with the icon and tooltip. 74 | /// 75 | /// 76 | /// 77 | public static void SetupCopilotButton(Button btn, int iconBaseSize) 78 | { 79 | if (File.Exists(IconPath)) 80 | { 81 | btn.Visible = true; 82 | btn.Image = LoadScaledIcon(iconBaseSize); 83 | 84 | var tooltip = new ToolTip(); 85 | tooltip.SetToolTip(btn, "Ask Copilot"); 86 | } 87 | else 88 | { 89 | btn.Visible = false; 90 | } 91 | } 92 | } -------------------------------------------------------------------------------- /Flyoobe/Helper/Logger.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Diagnostics; 4 | using System.IO; 5 | using System.Reflection; 6 | 7 | namespace Flyoobe 8 | { 9 | public enum LogLevel 10 | { 11 | Info, 12 | Warning, 13 | Error 14 | } 15 | 16 | public static class Logger 17 | { 18 | // Event raised when a warning or error is logged 19 | public static event Action OnNotificationLogged; 20 | 21 | private static readonly List _logBuffer = new List(); 22 | private static readonly string _logFilePath; 23 | 24 | // Static constructor initializes the log file path 25 | static Logger() 26 | { 27 | string exeDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 28 | string appDirectory = Path.Combine(exeDirectory, "app"); 29 | _logFilePath = Path.Combine(appDirectory, "log.txt"); 30 | } 31 | 32 | /// 33 | /// Logs a message with timestamp and log level. 34 | /// Also appends the message to the log file. 35 | /// 36 | public static void Log(string message, LogLevel level = LogLevel.Info) 37 | { 38 | var timestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); 39 | var levelStr = level.ToString().ToUpper(); 40 | var logLine = $"[{timestamp}] [{levelStr}] {message}"; 41 | 42 | _logBuffer.Add(logLine); 43 | 44 | try 45 | { 46 | File.AppendAllText(_logFilePath, logLine + Environment.NewLine); 47 | } 48 | catch (Exception ex) 49 | { 50 | Debug.WriteLine($"Failed to write to log file: {ex.Message}"); 51 | } 52 | 53 | // Fire event if level is Warning or Error 54 | if (level == LogLevel.Warning || level == LogLevel.Error) 55 | { 56 | OnNotificationLogged?.Invoke(message, level); 57 | } 58 | } 59 | 60 | /// 61 | /// Returns the full log history stored in memory. 62 | /// 63 | public static string GetLog() 64 | { 65 | return string.Join(Environment.NewLine, _logBuffer); 66 | } 67 | } 68 | } -------------------------------------------------------------------------------- /Flyoobe/Helper/Utils.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Win32; 2 | using System; 3 | using System.Diagnostics; 4 | using System.Security.Principal; 5 | using System.Windows.Forms; 6 | 7 | namespace Flyoobe 8 | { 9 | internal static class Utils 10 | { 11 | private const string GitHubUrl = "https://github.com/builtbybel/Flyoobe"; 12 | 13 | /// 14 | /// Checks if a registry value equals a specified integer. 15 | /// 16 | public static bool IntEquals(string keyName, string valueName, int expectedValue) 17 | { 18 | try 19 | { 20 | object value = Registry.GetValue(keyName, valueName, null); 21 | return value is int intValue && intValue == expectedValue; 22 | } 23 | catch (Exception ex) 24 | { 25 | Logger.Log($"Registry check failed for {keyName}\\{valueName}: {ex.Message}", LogLevel.Error); 26 | return false; 27 | } 28 | } 29 | 30 | /// 31 | /// Checks if a registry value equals a specified string. 32 | /// 33 | public static bool StringEquals(string keyName, string valueName, string expectedValue) 34 | { 35 | try 36 | { 37 | object value = Registry.GetValue(keyName, valueName, null); 38 | return value is string strValue && strValue == expectedValue; 39 | } 40 | catch (Exception ex) 41 | { 42 | Logger.Log($"Registry check failed for {keyName}\\{valueName}: {ex.Message}", LogLevel.Error); 43 | return false; 44 | } 45 | } 46 | 47 | /// 48 | /// Checks if the application is running with administrative privileges. 49 | /// 50 | /// 51 | public static bool IsRunningAsAdmin() 52 | { 53 | using (var identity = WindowsIdentity.GetCurrent()) 54 | { 55 | var principal = new WindowsPrincipal(identity); 56 | return principal.IsInRole(WindowsBuiltInRole.Administrator); 57 | } 58 | } 59 | 60 | 61 | /// 62 | /// Detects if the current OS is Windows 11 or newer. 63 | /// 64 | public static bool DetectWindows11() 65 | { 66 | object buildObj = Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "CurrentBuildNumber", null); 67 | if (buildObj != null && int.TryParse(buildObj.ToString(), out int build)) 68 | { 69 | return build >= 22000; // Windows 11 starts at build 22000 70 | } 71 | return false; // If unable to detect, assume not Windows 11 72 | } 73 | } 74 | } -------------------------------------------------------------------------------- /Flyoobe/IView.cs: -------------------------------------------------------------------------------- 1 | /// 2 | /// Represents a view that can be refreshed and provides a display title. 3 | /// 4 | public interface IView 5 | { 6 | /// 7 | /// Refreshes the view to update its display or data. 8 | /// 9 | void RefreshView(); 10 | 11 | /// 12 | /// Gets the title of the view for display in the UI. 13 | /// 14 | string ViewTitle { get; } 15 | } -------------------------------------------------------------------------------- /Flyoobe/InstallView/InPlaceRepairProvider.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using System.Windows.Forms; 3 | 4 | namespace Flyoobe 5 | { 6 | // Runs setup.exe from a mounted Windows ISO with upgrade parameters. 7 | public sealed class InPlaceRepairProvider : IInstallProvider 8 | { 9 | public string Id => "inplace"; 10 | public string DisplayName => "Repair upgrade (keeps apps & files)"; 11 | public string HomepageUrl => null; 12 | public string DirectDownloadUrl => null; 13 | public string[] ExactExeNames => new[] { "setup.exe" }; // for documentation only 14 | public string[] WildcardExePatterns => System.Array.Empty(); 15 | public bool TypicallyNeedsIso => true; 16 | public bool IsExternalTool => false; 17 | public string Hint => 18 | "Starts Windows Setup from a mounted ISO in automatic repair mode. " + 19 | "This reinstalls Windows while keeping your apps, settings, and personal files. " + 20 | "Recommended if your system is broken but you want to keep everything."; 21 | 22 | public string ShowOptionsAndBuildArgs(IWin32Window owner, LastSelections last) 23 | { 24 | var setupPath = FindSetupExeOnMountedDrives(); 25 | if (setupPath == null) 26 | { 27 | MessageBox.Show(owner, "No 'setup.exe' found. Please mount a Windows ISO first.", 28 | "Setup not found", MessageBoxButtons.OK, MessageBoxIcon.Information); 29 | return null; 30 | } 31 | 32 | if (!ToolHelpers.Confirm(owner, "Start repair upgrade via setup.exe? The PC will restart during the process.")) 33 | return null; 34 | 35 | // Start directly and handle here 36 | ToolHelpers.Run(setupPath, "/auto upgrade /dynamicupdate enable", asAdmin: true); 37 | return null; // handled > host should not run anything else 38 | } 39 | 40 | private static string FindSetupExeOnMountedDrives() 41 | { 42 | try 43 | { 44 | foreach (var di in DriveInfo.GetDrives()) 45 | { 46 | if (di.DriveType == DriveType.CDRom || di.DriveType == DriveType.Removable || di.DriveType == DriveType.Fixed) 47 | { 48 | var p = Path.Combine(di.Name, "setup.exe"); 49 | if (File.Exists(p)) return p; 50 | } 51 | } 52 | } 53 | catch { } 54 | return null; 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /Flyoobe/InstallView/InstallProviders.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Forms; 2 | 3 | namespace Flyoobe 4 | { 5 | /// 6 | /// Shared "last selection" holder reused by providers (ISO/exe). 7 | /// 8 | public sealed class LastSelections 9 | { 10 | public string LastIsoPath { get; set; } 11 | public string LastExePath { get; set; } 12 | } 13 | 14 | /// 15 | /// Contract for install sources like Rufus, MCT, Ventoy, ... 16 | /// 17 | public interface IInstallProvider 18 | { 19 | string Id { get; } 20 | string DisplayName { get; } 21 | string HomepageUrl { get; } // may be null 22 | string DirectDownloadUrl { get; } // may be null 23 | string[] ExactExeNames { get; } // e.g. "rufus.exe" 24 | string[] WildcardExePatterns { get; } // e.g. "rufus*.exe" 25 | bool TypicallyNeedsIso { get; } // hint for UI 26 | bool IsExternalTool { get; } // if true > resolve/browse EXE; if false > launch by command name (no file picker) 27 | 28 | /// 29 | /// Short hint shown in the UI. 30 | /// 31 | string Hint { get; } 32 | 33 | /// 34 | /// Show provider-specific options dialog (if any) and build CLI args. 35 | /// Return null if user cancelled. 36 | /// 37 | string ShowOptionsAndBuildArgs(IWin32Window owner, LastSelections last); 38 | } 39 | } -------------------------------------------------------------------------------- /Flyoobe/InstallView/MountIsoProvider.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Forms; 2 | 3 | namespace Flyoobe 4 | { 5 | // Lets the user pick an ISO and mounts it via PowerShell (Mount-DiskImage). 6 | public sealed class MountIsoProvider : IInstallProvider 7 | { 8 | public string Id => "mountiso"; 9 | public string DisplayName => "Mount ISO… (built-in)"; 10 | public string HomepageUrl => null; 11 | public string DirectDownloadUrl => null; 12 | public string[] ExactExeNames => System.Array.Empty(); 13 | public string[] WildcardExePatterns => System.Array.Empty(); 14 | public bool TypicallyNeedsIso => false; 15 | public bool IsExternalTool => false; 16 | public string Hint => "Pick a Windows ISO and mount it using PowerShell."; 17 | 18 | public string ShowOptionsAndBuildArgs(IWin32Window owner, LastSelections last) 19 | { 20 | using (var ofd = new OpenFileDialog { Filter = "ISO files (*.iso)|*.iso|All files (*.*)|*.*" }) 21 | { 22 | if (ofd.ShowDialog(owner) != DialogResult.OK) return null; 23 | var isoPath = ofd.FileName; 24 | 25 | var ps = "-NoProfile -Command \"Mount-DiskImage -ImagePath '" + isoPath + "' -PassThru | Out-Null\""; 26 | if (!ToolHelpers.Run("powershell.exe", ps, asAdmin: true)) 27 | { 28 | MessageBox.Show(owner, "Could not mount ISO. Try manual mount via Explorer (Right-click → Mount).", 29 | "Mount failed", MessageBoxButtons.OK, MessageBoxIcon.Warning); 30 | } 31 | 32 | // remember last ISO for other providers (just optional) 33 | if (last != null) last.LastIsoPath = isoPath; 34 | } 35 | return null; // handled 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Flyoobe/InstallView/RebootToUefiProvider.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Forms; 3 | 4 | namespace Flyoobe 5 | { 6 | // Native provider to reboot directly into UEFI/BIOS setup using "shutdown.exe /r /fw /t 0". 7 | // If /fw is not supported on the machine, we offer a fallback to Recovery Settings (WinRE path to UEFI Firmware Settings). 8 | 9 | public sealed class RebootToUefiProvider : IInstallProvider 10 | { 11 | public string Id => "uefi-reboot"; 12 | public string DisplayName => "Reboot into UEFI firmware (BIOS)"; 13 | public string HomepageUrl => null; 14 | public string DirectDownloadUrl => null; 15 | public string[] ExactExeNames => new[] { "shutdown.exe" }; // informational 16 | public string[] WildcardExePatterns => Array.Empty(); 17 | public bool TypicallyNeedsIso => false; 18 | public bool IsExternalTool => false; 19 | 20 | public string Hint => 21 | "Restarts the PC straight into UEFI/BIOS setup (if supported by the firmware). " + 22 | "Useful to change boot order before a clean install."; 23 | 24 | public string ShowOptionsAndBuildArgs(IWin32Window owner, LastSelections last) 25 | { 26 | // Confirm with the user (explicit reboot). 27 | if (!ToolHelpers.Confirm(owner, 28 | "Reboot into UEFI/BIOS now? The PC will restart immediately.")) 29 | { 30 | return null; // canceled 31 | } 32 | 33 | // Try the native fast path first: /r /fw /t 0 34 | var ok = ToolHelpers.Run("shutdown.exe", "/r /fw /t 0", asAdmin: true); 35 | if (!ok) 36 | { 37 | // Not supported or blocked on this device > offer a fallback.... 38 | var choice = MessageBox.Show(owner, 39 | "Direct firmware reboot was not supported on this device.\r\n\r\n" + 40 | "Open Recovery settings so you can choose 'UEFI Firmware Settings' after a restart?", 41 | "UEFI reboot fallback", 42 | MessageBoxButtons.OKCancel, 43 | MessageBoxIcon.Information); 44 | 45 | if (choice == DialogResult.OK) 46 | { 47 | // Settings > System > Recovery (so we can go to Advanced startup > UEFI Firmware Settings) 48 | ToolHelpers.OpenUri("ms-settings:recovery"); 49 | } 50 | } 51 | 52 | // We handled everything here; host should not try to launch an external EXE. 53 | return null; 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /Flyoobe/InstallView/RunSetupFromIsoProvider.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using System.Windows.Forms; 3 | 4 | namespace Flyoobe 5 | { 6 | // Launches setup.exe from mounted ISO without parameters. 7 | public sealed class RunSetupFromIsoProvider : IInstallProvider 8 | { 9 | public string Id => "setupfromiso"; 10 | public string DisplayName => "Run Windows Setup from ISO (full wizard)"; 11 | public string HomepageUrl => null; 12 | public string DirectDownloadUrl => null; 13 | public string[] ExactExeNames => new[] { "setup.exe" }; 14 | public string[] WildcardExePatterns => System.Array.Empty(); 15 | public bool TypicallyNeedsIso => true; 16 | public bool IsExternalTool => false; 17 | public string Hint => 18 | "Opens the full Windows Setup wizard from a mounted ISO. " + 19 | "You can choose between Upgrade or Clean install and set partitions manually. " + 20 | "Recommended if you want complete control over the installation process."; 21 | 22 | public string ShowOptionsAndBuildArgs(IWin32Window owner, LastSelections last) 23 | { 24 | var setup = FindSetupExeOnMountedDrives(); 25 | if (setup == null) 26 | { 27 | MessageBox.Show(owner, "No mounted Windows ISO with 'setup.exe' found.", 28 | "Setup missing", MessageBoxButtons.OK, MessageBoxIcon.Information); 29 | return null; 30 | } 31 | 32 | if (!ToolHelpers.Confirm(owner, "Run setup.exe from the mounted ISO?")) 33 | return null; 34 | 35 | ToolHelpers.Run(setup, "", asAdmin: true); 36 | return null; 37 | } 38 | 39 | private static string FindSetupExeOnMountedDrives() 40 | { 41 | try 42 | { 43 | foreach (var di in DriveInfo.GetDrives()) 44 | { 45 | if (di.DriveType == DriveType.CDRom || di.DriveType == DriveType.Removable || di.DriveType == DriveType.Fixed) 46 | { 47 | var p = Path.Combine(di.Name, "setup.exe"); 48 | if (File.Exists(p)) return p; 49 | } 50 | } 51 | } 52 | catch { } 53 | return null; 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /Flyoobe/InstallView/VentoyProvider.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Forms; 2 | 3 | namespace Flyoobe 4 | { 5 | public sealed class VentoyProvider : IInstallProvider 6 | { 7 | public string Id => "ventoy"; 8 | public string DisplayName => "Ventoy"; 9 | public string HomepageUrl => "https://www.ventoy.net/en/download.html"; 10 | public string DirectDownloadUrl => null; // Ventoy ships as ZIP/installer, no stable EXE direct link 11 | public string[] ExactExeNames => new[] { "Ventoy2Disk.exe" }; 12 | public string[] WildcardExePatterns => new[] { "Ventoy*Disk*.exe" }; 13 | public bool IsExternalTool => true; // needs browsing/resolving 14 | public bool TypicallyNeedsIso => false; 15 | 16 | // Custom hint for the UI 17 | public string Hint => 18 | "Ventoy creates a USB drive where you can later copy multiple ISO files. " + 19 | "You don't need to select an ISO during setup."; 20 | 21 | // Add advanced CLI support!? 22 | public string ShowOptionsAndBuildArgs(IWin32Window owner, LastSelections last) 23 | { 24 | // Ventoy doesn't really use CLI args for normal installation. 25 | // Just launch the GUI and let the user configure inside. 26 | return string.Empty; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Flyoobe/LogForm.cs: -------------------------------------------------------------------------------- 1 | using System.Windows.Forms; 2 | 3 | namespace Flyoobe 4 | { 5 | public partial class LogForm : Form 6 | { 7 | public LogForm(string logText) 8 | { 9 | InitializeComponent(); 10 | richLog.Text = logText; 11 | richLog.SelectionStart = richLog.Text.Length; // Scroll to the end of the log 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /Flyoobe/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Reflection; 3 | using System.Windows.Forms; 4 | 5 | namespace Flyoobe 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 | } -------------------------------------------------------------------------------- /Flyoobe/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | // Allgemeine Informationen über eine Assembly werden über die folgenden 5 | // Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern, 6 | // die einer Assembly zugeordnet sind. 7 | [assembly: AssemblyTitle("Flyoobe")] 8 | [assembly: AssemblyDescription("Flyoobe")] 9 | [assembly: AssemblyConfiguration("")] 10 | [assembly: AssemblyCompany("A Belim app creation")] 11 | [assembly: AssemblyProduct("Flyoobe")] 12 | [assembly: AssemblyCopyright("Copyright © 2025")] 13 | [assembly: AssemblyTrademark("Builtbybel")] 14 | [assembly: AssemblyCulture("")] 15 | 16 | // Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly 17 | // für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von 18 | // COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen. 19 | [assembly: ComVisible(false)] 20 | 21 | // Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird 22 | [assembly: Guid("50ca0d4d-45ad-4e03-bfc5-64fff4cda36c")] 23 | 24 | // Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten: 25 | // 26 | // Hauptversion 27 | // Nebenversion 28 | // Buildnummer 29 | // Revision 30 | // 31 | [assembly: AssemblyVersion("1.10.357")] 32 | [assembly: AssemblyFileVersion("1.10.357")] -------------------------------------------------------------------------------- /Flyoobe/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 Flyoobe.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("Flyoobe.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 assetCopilot { 67 | get { 68 | object obj = ResourceManager.GetObject("assetCopilot", resourceCulture); 69 | return ((System.Drawing.Bitmap)(obj)); 70 | } 71 | } 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /Flyoobe/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 Flyoobe.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 | -------------------------------------------------------------------------------- /Flyoobe/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Flyoobe/ToolHubView/ToolHubDefinition.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Flyoobe.ToolHub 4 | { 5 | public class ToolHubDefinition 6 | { 7 | public string Title { get; } 8 | public string Description { get; } 9 | public string Icon { get; } 10 | public string ScriptPath { get; } 11 | public List Options { get; } = new List(); // Dropdown options 12 | public bool UseConsole { get; set; } = false; // Console host 13 | 14 | public ToolHubDefinition(string title, string description, string icon, string scriptPath) 15 | { 16 | Title = title; 17 | Description = description; 18 | Icon = icon; 19 | ScriptPath = scriptPath; 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /Flyoobe/ToolHubView/ToolHubUrlDialog.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.Windows.Forms; 4 | 5 | /// 6 | /// Dialog for entering a .ps1 URL to install an extension. 7 | /// Also provides a link to the community Extensions Store (GitHub). 8 | /// 9 | namespace Flyoobe.ToolHub 10 | { 11 | public class InputDialog : Form 12 | { 13 | private TextBox textBox; 14 | private Button btnOk; 15 | private Button btnCancel; 16 | private LinkLabel linkStore; 17 | 18 | public string InputText => textBox.Text; 19 | 20 | public InputDialog(string title, string prompt) 21 | { 22 | Text = title; 23 | FormBorderStyle = FormBorderStyle.FixedDialog; 24 | StartPosition = FormStartPosition.CenterParent; 25 | MinimizeBox = false; 26 | MaximizeBox = false; 27 | Width = 420; 28 | Height = 200; 29 | AutoSize = true; 30 | var lblPrompt = new Label 31 | { 32 | Left = 10, 33 | Top = 15, 34 | Width = 380, 35 | AutoSize = true, 36 | Text = prompt 37 | }; 38 | Controls.Add(lblPrompt); 39 | 40 | textBox = new TextBox 41 | { 42 | Left = 10, 43 | Top = 40, 44 | Width = 380, 45 | AutoSize = true, 46 | }; 47 | Controls.Add(textBox); 48 | 49 | // Store link 50 | linkStore = new LinkLabel 51 | { 52 | Left = 10, 53 | Top = 70, 54 | Width = 380, 55 | AutoSize = true, 56 | Text = "Browse Extensions Store (GitHub)" 57 | }; 58 | linkStore.LinkClicked += (s, e) => 59 | { 60 | Process.Start(new ProcessStartInfo 61 | { 62 | FileName = "https://github.com/builtbybel/Flyoobe/blob/main/Flyoobe.Extensions/EXTENSIONS.md", 63 | UseShellExecute = true 64 | }); 65 | }; 66 | Controls.Add(linkStore); 67 | 68 | btnOk = new Button 69 | { 70 | Text = "OK", 71 | Left = 220, 72 | Width = 70, 73 | Top = 110, 74 | AutoSize = true, 75 | DialogResult = DialogResult.OK 76 | }; 77 | Controls.Add(btnOk); 78 | 79 | btnCancel = new Button 80 | { 81 | Text = "Cancel", 82 | Left = 300, 83 | Width = 70, 84 | Top = 110, 85 | AutoSize = true, 86 | DialogResult = DialogResult.Cancel 87 | }; 88 | Controls.Add(btnCancel); 89 | 90 | AcceptButton = btnOk; 91 | CancelButton = btnCancel; 92 | } 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /Flyoobe/Views/AccountControlView.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.Security.Principal; 4 | using System.Windows.Forms; 5 | 6 | namespace Flyoobe 7 | { 8 | public partial class AccountControlView : UserControl, IView 9 | { 10 | public string ViewTitle => "Account"; 11 | 12 | public AccountControlView() 13 | 14 | { 15 | InitializeComponent(); 16 | assetViewInfo.Text = "\uE77B"; 17 | } 18 | 19 | private void btnCreateAccount_Click(object sender, EventArgs e) 20 | { 21 | if (!IsAdministrator()) 22 | { 23 | MessageBox.Show("You need to run the application as Administrator to create a local account.", "Insufficient Privileges", MessageBoxButtons.OK, MessageBoxIcon.Warning); 24 | return; 25 | } 26 | 27 | string username = textUsername.Text.Trim(); 28 | string password = textPassword.Text.Trim(); 29 | 30 | if (string.IsNullOrWhiteSpace(username) || string.IsNullOrWhiteSpace(password)) 31 | { 32 | MessageBox.Show("Please enter both username and password.", "Input Required", MessageBoxButtons.OK, MessageBoxIcon.Information); 33 | return; 34 | } 35 | 36 | CreateLocalAccount(username, password); 37 | } 38 | 39 | private bool IsAdministrator() 40 | { 41 | using (WindowsIdentity identity = WindowsIdentity.GetCurrent()) 42 | { 43 | var principal = new WindowsPrincipal(identity); 44 | return principal.IsInRole(WindowsBuiltInRole.Administrator); 45 | } 46 | } 47 | 48 | private void CreateLocalAccount(string username, string password) 49 | { 50 | string arguments = $"/c net user \"{username}\" \"{password}\" /add"; 51 | var processInfo = new ProcessStartInfo("cmd.exe", arguments) 52 | { 53 | Verb = "runas", 54 | CreateNoWindow = true, 55 | UseShellExecute = true 56 | }; 57 | 58 | try 59 | { 60 | Process.Start(processInfo); 61 | MessageBox.Show($"Local account '{username}' created successfully.", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information); 62 | RefreshView(); 63 | } 64 | catch (Exception ex) 65 | { 66 | MessageBox.Show($"Failed to create user: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 67 | } 68 | } 69 | 70 | 71 | private void linkOnlineAccount_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 72 | { 73 | Process.Start("ms-settings:emailandaccounts"); 74 | } 75 | 76 | private void btnCreateAccountWizard_Click(object sender, EventArgs e) 77 | { 78 | try 79 | { 80 | Process.Start("explorer.exe", "ms-cxh:localonly"); 81 | } 82 | catch (Exception ex) 83 | { 84 | MessageBox.Show($"Failed to open local account creation: {ex.Message}"); 85 | } 86 | } 87 | 88 | public void RefreshView() 89 | { 90 | textUsername.Text = 91 | textPassword.Text = ""; 92 | } 93 | } 94 | } -------------------------------------------------------------------------------- /Flyoobe/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 | true 57 | true 58 | 59 | 60 | 61 | 62 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /Flyoobe/assetCopilot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/builtbybel/Flyoobe/a4a9a346ae338aca69451561dc32266defb01428/Flyoobe/assetCopilot.png -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 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 | -------------------------------------------------------------------------------- /assets/Flyoobe_Profile_Community.txt: -------------------------------------------------------------------------------- 1 | # Pattern file for Flyoobe_Profile_Community.txt 2 | # ============================================================ 3 | # Define which apps to remove or ignore during scan. 4 | # Supports wildcards, exclusions, and future extensions. 5 | # ============================================================ 6 | 7 | # ------------------------------- 8 | # Wildcard Mode (Optional) 9 | # ------------------------------- 10 | # Uncomment below to flag ALL apps for review/removal. 11 | # Can be dangerous — use with a strong whitelist! 12 | # Format: * or *.* 13 | 14 | !*.* # Remove ! to enable global match 15 | 16 | # ------------------------------- 17 | # Bloatware patterns (To be checked) 18 | # ------------------------------- 19 | Solitaire 20 | CandyCrush 21 | Netflix 22 | TikTok 23 | Facebook 24 | Twitter 25 | Instagram 26 | Spotify 27 | Skype 28 | OneNote 29 | OneDrive 30 | Mail 31 | Calendar 32 | Weather 33 | News 34 | Maps 35 | Groove 36 | Movies 37 | TV 38 | Phone 39 | Feedback 40 | FeedbackHub 41 | GetStarted 42 | Messaging 43 | Office 44 | Paint3D 45 | Print3D 46 | StickyNotes 47 | Wallet 48 | YourPhone 49 | 3DViewer 50 | Alarms 51 | VoiceRecorder 52 | ToDo 53 | Whiteboard 54 | ZuneMusic 55 | ZuneVideo 56 | DevHome 57 | Copilot 58 | Clipchamp 59 | NarratorQucikStart 60 | OutlookForWindows 61 | MSTeams 62 | SoundRecorder 63 | HP 64 | Synaptics 65 | 66 | -------------------------------------------------------------------------------- /assets/Info.md: -------------------------------------------------------------------------------- 1 | 2 | --------------------------------------------------------------------------------