├── .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 |
--------------------------------------------------------------------------------