mirror of
https://github.com/builtbybel/BloatyNosy.git
synced 2025-06-26 04:21:41 +02:00
More to add (just finished)
This commit is contained in:
parent
e99ec1c7d9
commit
26d90bd271
49
src/BloatyNosy.sln
Normal file
49
src/BloatyNosy.sln
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.1.32210.238
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BloatyNosy", "BloatyNosy\BloatyNosy.csproj", "{44CAFCEB-0F6D-487F-9F5F-63F230DBB069}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Debug|ARM = Debug|ARM
|
||||||
|
Debug|ARM64 = Debug|ARM64
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
Release|ARM = Release|ARM
|
||||||
|
Release|ARM64 = Release|ARM64
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{44CAFCEB-0F6D-487F-9F5F-63F230DBB069}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{44CAFCEB-0F6D-487F-9F5F-63F230DBB069}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{44CAFCEB-0F6D-487F-9F5F-63F230DBB069}.Debug|ARM.ActiveCfg = Debug|Any CPU
|
||||||
|
{44CAFCEB-0F6D-487F-9F5F-63F230DBB069}.Debug|ARM.Build.0 = Debug|Any CPU
|
||||||
|
{44CAFCEB-0F6D-487F-9F5F-63F230DBB069}.Debug|ARM64.ActiveCfg = Debug|Any CPU
|
||||||
|
{44CAFCEB-0F6D-487F-9F5F-63F230DBB069}.Debug|ARM64.Build.0 = Debug|Any CPU
|
||||||
|
{44CAFCEB-0F6D-487F-9F5F-63F230DBB069}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{44CAFCEB-0F6D-487F-9F5F-63F230DBB069}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{44CAFCEB-0F6D-487F-9F5F-63F230DBB069}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{44CAFCEB-0F6D-487F-9F5F-63F230DBB069}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{44CAFCEB-0F6D-487F-9F5F-63F230DBB069}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{44CAFCEB-0F6D-487F-9F5F-63F230DBB069}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{44CAFCEB-0F6D-487F-9F5F-63F230DBB069}.Release|ARM.ActiveCfg = Release|Any CPU
|
||||||
|
{44CAFCEB-0F6D-487F-9F5F-63F230DBB069}.Release|ARM.Build.0 = Release|Any CPU
|
||||||
|
{44CAFCEB-0F6D-487F-9F5F-63F230DBB069}.Release|ARM64.ActiveCfg = Release|Any CPU
|
||||||
|
{44CAFCEB-0F6D-487F-9F5F-63F230DBB069}.Release|ARM64.Build.0 = Release|Any CPU
|
||||||
|
{44CAFCEB-0F6D-487F-9F5F-63F230DBB069}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{44CAFCEB-0F6D-487F-9F5F-63F230DBB069}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{44CAFCEB-0F6D-487F-9F5F-63F230DBB069}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{44CAFCEB-0F6D-487F-9F5F-63F230DBB069}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {8E4625AD-7C1B-4CFB-8374-5F44D4508DBA}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
6
src/BloatyNosy/App.config
Normal file
6
src/BloatyNosy/App.config
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<configuration>
|
||||||
|
<startup>
|
||||||
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
|
||||||
|
</startup>
|
||||||
|
</configuration>
|
BIN
src/BloatyNosy/AppIcon.ico
Normal file
BIN
src/BloatyNosy/AppIcon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 66 KiB |
BIN
src/BloatyNosy/AppLogo.png
Normal file
BIN
src/BloatyNosy/AppLogo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.6 KiB |
239
src/BloatyNosy/BloatyNosy.csproj
Normal file
239
src/BloatyNosy/BloatyNosy.csproj
Normal file
@ -0,0 +1,239 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectGuid>{44CAFCEB-0F6D-487F-9F5F-63F230DBB069}</ProjectGuid>
|
||||||
|
<OutputType>WinExe</OutputType>
|
||||||
|
<RootNamespace>BloatyNosy</RootNamespace>
|
||||||
|
<AssemblyName>BloatyNosy</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
|
<Deterministic>true</Deterministic>
|
||||||
|
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||||
|
<PublishUrl>publish\</PublishUrl>
|
||||||
|
<Install>true</Install>
|
||||||
|
<InstallFrom>Disk</InstallFrom>
|
||||||
|
<UpdateEnabled>false</UpdateEnabled>
|
||||||
|
<UpdateMode>Foreground</UpdateMode>
|
||||||
|
<UpdateInterval>7</UpdateInterval>
|
||||||
|
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||||
|
<UpdatePeriodically>false</UpdatePeriodically>
|
||||||
|
<UpdateRequired>false</UpdateRequired>
|
||||||
|
<MapFileExtensions>true</MapFileExtensions>
|
||||||
|
<ApplicationRevision>0</ApplicationRevision>
|
||||||
|
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||||
|
<UseApplicationTrust>false</UseApplicationTrust>
|
||||||
|
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup />
|
||||||
|
<PropertyGroup>
|
||||||
|
<StartupObject />
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<ApplicationManifest>app.manifest</ApplicationManifest>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<ApplicationIcon>AppIcon.ico</ApplicationIcon>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\..\..\..\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0__31bf3856ad364e35\System.Management.Automation.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.Deployment" />
|
||||||
|
<Reference Include="System.Drawing" />
|
||||||
|
<Reference Include="System.Net.Http" />
|
||||||
|
<Reference Include="System.Windows.Forms" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="FeatureBase.cs" />
|
||||||
|
<Compile Include="FeatureNode.cs" />
|
||||||
|
<Compile Include="Features\Browser\GoogleChrome.cs" />
|
||||||
|
<Compile Include="Features\Browser\MozillaFirefox.cs" />
|
||||||
|
<Compile Include="Features\Desktop\AppsTheme.cs" />
|
||||||
|
<Compile Include="Features\Desktop\SnapAssistFlyout.cs" />
|
||||||
|
<Compile Include="Features\Desktop\Stickers.cs" />
|
||||||
|
<Compile Include="Features\Desktop\Transparency.cs" />
|
||||||
|
<Compile Include="Features\Desktop\Widgets.cs" />
|
||||||
|
<Compile Include="Features\Desktop\WidgetsR.cs" />
|
||||||
|
<Compile Include="Features\Desktop\WindowsTheme.cs" />
|
||||||
|
<Compile Include="Features\Explorer\FileExplorer.cs" />
|
||||||
|
<Compile Include="Features\Explorer\HiddenFileExt.cs" />
|
||||||
|
<Compile Include="Features\Explorer\HiddenFileFolder.cs" />
|
||||||
|
<Compile Include="Features\Recommendation\EnableWSL.cs" />
|
||||||
|
<Compile Include="Features\Gaming\GameDVR.cs" />
|
||||||
|
<Compile Include="Features\Gaming\PowerThrottling.cs" />
|
||||||
|
<Compile Include="Features\Gaming\VisualFX.cs" />
|
||||||
|
<Compile Include="Features\Privacy\Advertising.cs" />
|
||||||
|
<Compile Include="Features\Privacy\AppsAutoInstall.cs" />
|
||||||
|
<Compile Include="Features\Privacy\Biometrics.cs" />
|
||||||
|
<Compile Include="Features\Privacy\CompatibilityTelemetry.cs" />
|
||||||
|
<Compile Include="Features\Privacy\DiagnosticData.cs" />
|
||||||
|
<Compile Include="Features\Privacy\Feedback.cs" />
|
||||||
|
<Compile Include="Features\Privacy\LocationTracking.cs" />
|
||||||
|
<Compile Include="Features\Privacy\SuggestedContent.cs" />
|
||||||
|
<Compile Include="Features\Privacy\TailoredExperiences.cs" />
|
||||||
|
<Compile Include="Features\Privacy\Telemetry.cs" />
|
||||||
|
<Compile Include="Features\Privacy\WindowsTips.cs" />
|
||||||
|
<Compile Include="Features\Apps\StoreApps.cs" />
|
||||||
|
<Compile Include="Features\Apps\StoreAppsEngine.cs" />
|
||||||
|
<Compile Include="Features\System\FaxPrinter.cs" />
|
||||||
|
<Compile Include="Features\System\FullContextMenus.cs" />
|
||||||
|
<Compile Include="Features\System\OneDriveR.cs" />
|
||||||
|
<Compile Include="Features\System\RemoveW11Watermark.cs" />
|
||||||
|
<Compile Include="Features\System\TeamsAutostart.cs" />
|
||||||
|
<Compile Include="Features\System\TPMCheck.cs" />
|
||||||
|
<Compile Include="Features\System\XPSWriter.cs" />
|
||||||
|
<Compile Include="Features\Taskbar\MostUsedApps.cs" />
|
||||||
|
<Compile Include="Features\Taskbar\StartmenuLayout.cs" />
|
||||||
|
<Compile Include="Features\Taskbar\TaskbarChat.cs" />
|
||||||
|
<Compile Include="Features\Taskbar\TaskbarSearch.cs" />
|
||||||
|
<Compile Include="Features\Taskbar\TaskView.cs" />
|
||||||
|
<Compile Include="Helpers\ErrorHelper.cs" />
|
||||||
|
<Compile Include="Helpers\HelperTool.cs" />
|
||||||
|
<Compile Include="Helpers\OsHelper.cs" />
|
||||||
|
<Compile Include="ITreeNode.cs" />
|
||||||
|
<Compile Include="Helpers\RegistryHelper.cs" />
|
||||||
|
<Compile Include="MainForm.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="MainForm.Designer.cs">
|
||||||
|
<DependentUpon>MainForm.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Modules\Setup\Pages.cs" />
|
||||||
|
<Compile Include="Program.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<Compile Include="Views\AboutPageView.cs">
|
||||||
|
<SubType>UserControl</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Views\AboutPageView.Designer.cs">
|
||||||
|
<DependentUpon>AboutPageView.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Views\AppsPageView.cs">
|
||||||
|
<SubType>UserControl</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Views\AppsPageView.Designer.cs">
|
||||||
|
<DependentUpon>AppsPageView.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Modules\WinModder\ModsParser.cs" />
|
||||||
|
<Compile Include="Modules\WinModder\ModsManifest.cs" />
|
||||||
|
<Compile Include="Views\ModsPageView.cs">
|
||||||
|
<SubType>UserControl</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Views\ModsPageView.Designer.cs">
|
||||||
|
<DependentUpon>ModsPageView.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Views\PackagesPageView.cs">
|
||||||
|
<SubType>UserControl</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Views\PackagesPageView.Designer.cs">
|
||||||
|
<DependentUpon>PackagesPageView.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Helpers\WindowsHelper.cs" />
|
||||||
|
<Compile Include="Views\IModsPageView.cs">
|
||||||
|
<SubType>UserControl</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Views\IModsPageView.Designer.cs">
|
||||||
|
<DependentUpon>IModsPageView.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Views\SetupPageView.cs">
|
||||||
|
<SubType>UserControl</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Views\SetupPageView.Designer.cs">
|
||||||
|
<DependentUpon>SetupPageView.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<EmbeddedResource Include="MainForm.resx">
|
||||||
|
<DependentUpon>MainForm.cs</DependentUpon>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Properties\Resources.resx">
|
||||||
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<Compile Include="Properties\Resources.Designer.cs">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
</Compile>
|
||||||
|
<EmbeddedResource Include="Views\AboutPageView.resx">
|
||||||
|
<DependentUpon>AboutPageView.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Views\AppsPageView.resx">
|
||||||
|
<DependentUpon>AppsPageView.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Views\ModsPageView.resx">
|
||||||
|
<DependentUpon>ModsPageView.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Views\PackagesPageView.resx">
|
||||||
|
<DependentUpon>PackagesPageView.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Views\IModsPageView.resx">
|
||||||
|
<DependentUpon>IModsPageView.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Views\SetupPageView.resx">
|
||||||
|
<DependentUpon>SetupPageView.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<None Include="app.manifest" />
|
||||||
|
<None Include="Properties\Settings.settings">
|
||||||
|
<Generator>SettingsSingleFileGenerator</Generator>
|
||||||
|
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||||
|
</None>
|
||||||
|
<Compile Include="Properties\Settings.Designer.cs">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>Settings.settings</DependentUpon>
|
||||||
|
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||||
|
</Compile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="App.config" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="AppIcon.ico" />
|
||||||
|
<Content Include="Resources\systemApps.txt" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BootstrapperPackage Include=".NETFramework,Version=v4.8">
|
||||||
|
<Visible>False</Visible>
|
||||||
|
<ProductName>Microsoft .NET Framework 4.8 %28x86 und x64%29</ProductName>
|
||||||
|
<Install>true</Install>
|
||||||
|
</BootstrapperPackage>
|
||||||
|
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||||
|
<Visible>False</Visible>
|
||||||
|
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||||
|
<Install>false</Install>
|
||||||
|
</BootstrapperPackage>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup />
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
</Project>
|
13
src/BloatyNosy/BloatyNosy.csproj.user
Normal file
13
src/BloatyNosy/BloatyNosy.csproj.user
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<PublishUrlHistory />
|
||||||
|
<InstallUrlHistory />
|
||||||
|
<SupportUrlHistory />
|
||||||
|
<UpdateUrlHistory />
|
||||||
|
<BootstrapperUrlHistory />
|
||||||
|
<ErrorReportUrlHistory />
|
||||||
|
<FallbackCulture>de-DE</FallbackCulture>
|
||||||
|
<VerifyUploadedFiles>false</VerifyUploadedFiles>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
35
src/BloatyNosy/FeatureBase.cs
Normal file
35
src/BloatyNosy/FeatureBase.cs
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
namespace Features.Feature
|
||||||
|
{
|
||||||
|
public abstract class FeatureBase
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Name of Feature
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>The feature name</returns>
|
||||||
|
public abstract string ID();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Tooltip text of sssessments
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>The feature tooltip</returns>
|
||||||
|
public abstract string Info();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Checks whether Features should be applied
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>Returns true if the feature should be applied, false otherwise.</returns>
|
||||||
|
public abstract bool CheckFeature();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Do the Feature
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>Returns true if the feature was successfull, false otherwise.</returns>
|
||||||
|
public abstract bool DoFeature();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Undo the Feature
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>Returns true if the feature was successfull, false otherwise.</returns>
|
||||||
|
public abstract bool UndoFeature();
|
||||||
|
}
|
||||||
|
}
|
17
src/BloatyNosy/FeatureNode.cs
Normal file
17
src/BloatyNosy/FeatureNode.cs
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace Features.Feature
|
||||||
|
{
|
||||||
|
internal class FeatureNode : TreeNode
|
||||||
|
{
|
||||||
|
public FeatureBase Feature { get; }
|
||||||
|
|
||||||
|
public FeatureNode(FeatureBase feature)
|
||||||
|
{
|
||||||
|
Feature = feature;
|
||||||
|
Text = Feature.ID();
|
||||||
|
ToolTipText = Feature.Info();
|
||||||
|
Checked = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
24
src/BloatyNosy/ITreeNode.cs
Normal file
24
src/BloatyNosy/ITreeNode.cs
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace BloatyNosy.ITreeNode
|
||||||
|
{
|
||||||
|
public static class ITreeNode
|
||||||
|
{
|
||||||
|
public static IEnumerable<TreeNode> All(this TreeNodeCollection nodes)
|
||||||
|
{
|
||||||
|
if (nodes == null) throw new ArgumentNullException(nameof(nodes));
|
||||||
|
|
||||||
|
foreach (TreeNode n in nodes)
|
||||||
|
{
|
||||||
|
yield return n;
|
||||||
|
|
||||||
|
foreach (TreeNode child in n.Nodes.All())
|
||||||
|
{
|
||||||
|
yield return child;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
437
src/BloatyNosy/MainForm.Designer.cs
generated
Normal file
437
src/BloatyNosy/MainForm.Designer.cs
generated
Normal file
@ -0,0 +1,437 @@
|
|||||||
|
namespace BloatyNosy
|
||||||
|
{
|
||||||
|
partial class MainForm
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Erforderliche Designervariable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Verwendete Ressourcen bereinigen.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Vom Windows Form-Designer generierter Code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Erforderliche Methode für die Designerunterstützung.
|
||||||
|
/// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
this.components = new System.ComponentModel.Container();
|
||||||
|
this.pnlForm = new System.Windows.Forms.Panel();
|
||||||
|
this.pnlMain = new System.Windows.Forms.Panel();
|
||||||
|
this.lnkRunSetup = new System.Windows.Forms.LinkLabel();
|
||||||
|
this.btnAppOptions = new System.Windows.Forms.Button();
|
||||||
|
this.btnSettings = new System.Windows.Forms.Button();
|
||||||
|
this.label1 = new System.Windows.Forms.Label();
|
||||||
|
this.btnKebapMenu = new System.Windows.Forms.Button();
|
||||||
|
this.btnAnalyze = new System.Windows.Forms.Button();
|
||||||
|
this.lnkSubHeader = new System.Windows.Forms.LinkLabel();
|
||||||
|
this.progress = new System.Windows.Forms.ProgressBar();
|
||||||
|
this.lblTools = new System.Windows.Forms.Label();
|
||||||
|
this.cmbTools = new System.Windows.Forms.ComboBox();
|
||||||
|
this.lblHeader = new System.Windows.Forms.Label();
|
||||||
|
this.rtbLog = new System.Windows.Forms.RichTextBox();
|
||||||
|
this.tvwFeatures = new System.Windows.Forms.TreeView();
|
||||||
|
this.contextKebapMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||||
|
this.menuAdvanced = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.menuIgnoreLowLevelP = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.menuImportProfile = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.menuExportProfile = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.contextAppMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||||
|
this.menuFix = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.menuFixInfo = new System.Windows.Forms.ToolStripTextBox();
|
||||||
|
this.menuRestore = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.menuRestoreInfo = new System.Windows.Forms.ToolStripTextBox();
|
||||||
|
this.pnlForm.SuspendLayout();
|
||||||
|
this.pnlMain.SuspendLayout();
|
||||||
|
this.contextKebapMenu.SuspendLayout();
|
||||||
|
this.contextAppMenu.SuspendLayout();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// pnlForm
|
||||||
|
//
|
||||||
|
this.pnlForm.AutoScroll = true;
|
||||||
|
this.pnlForm.Controls.Add(this.pnlMain);
|
||||||
|
this.pnlForm.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.pnlForm.Location = new System.Drawing.Point(0, 0);
|
||||||
|
this.pnlForm.Name = "pnlForm";
|
||||||
|
this.pnlForm.Size = new System.Drawing.Size(1019, 801);
|
||||||
|
this.pnlForm.TabIndex = 0;
|
||||||
|
//
|
||||||
|
// pnlMain
|
||||||
|
//
|
||||||
|
this.pnlMain.AutoScroll = true;
|
||||||
|
this.pnlMain.Controls.Add(this.lnkRunSetup);
|
||||||
|
this.pnlMain.Controls.Add(this.btnAppOptions);
|
||||||
|
this.pnlMain.Controls.Add(this.btnSettings);
|
||||||
|
this.pnlMain.Controls.Add(this.label1);
|
||||||
|
this.pnlMain.Controls.Add(this.btnKebapMenu);
|
||||||
|
this.pnlMain.Controls.Add(this.btnAnalyze);
|
||||||
|
this.pnlMain.Controls.Add(this.lnkSubHeader);
|
||||||
|
this.pnlMain.Controls.Add(this.progress);
|
||||||
|
this.pnlMain.Controls.Add(this.lblTools);
|
||||||
|
this.pnlMain.Controls.Add(this.cmbTools);
|
||||||
|
this.pnlMain.Controls.Add(this.lblHeader);
|
||||||
|
this.pnlMain.Controls.Add(this.rtbLog);
|
||||||
|
this.pnlMain.Controls.Add(this.tvwFeatures);
|
||||||
|
this.pnlMain.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.pnlMain.Location = new System.Drawing.Point(0, 0);
|
||||||
|
this.pnlMain.Name = "pnlMain";
|
||||||
|
this.pnlMain.Size = new System.Drawing.Size(1019, 801);
|
||||||
|
this.pnlMain.TabIndex = 0;
|
||||||
|
//
|
||||||
|
// lnkRunSetup
|
||||||
|
//
|
||||||
|
this.lnkRunSetup.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.lnkRunSetup.AutoSize = true;
|
||||||
|
this.lnkRunSetup.Font = new System.Drawing.Font("Segoe UI Variable Text", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.lnkRunSetup.Location = new System.Drawing.Point(704, 764);
|
||||||
|
this.lnkRunSetup.Name = "lnkRunSetup";
|
||||||
|
this.lnkRunSetup.Size = new System.Drawing.Size(229, 15);
|
||||||
|
this.lnkRunSetup.TabIndex = 179;
|
||||||
|
this.lnkRunSetup.TabStop = true;
|
||||||
|
this.lnkRunSetup.Text = "I want to set up Windows 11 for the first time...";
|
||||||
|
this.lnkRunSetup.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lnkRunSetup_LinkClicked);
|
||||||
|
//
|
||||||
|
// btnAppOptions
|
||||||
|
//
|
||||||
|
this.btnAppOptions.AutoEllipsis = true;
|
||||||
|
this.btnAppOptions.BackColor = System.Drawing.Color.MediumVioletRed;
|
||||||
|
this.btnAppOptions.FlatAppearance.BorderSize = 0;
|
||||||
|
this.btnAppOptions.Font = new System.Drawing.Font("Segoe Fluent Icons", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.btnAppOptions.ForeColor = System.Drawing.Color.White;
|
||||||
|
this.btnAppOptions.Location = new System.Drawing.Point(350, 213);
|
||||||
|
this.btnAppOptions.Name = "btnAppOptions";
|
||||||
|
this.btnAppOptions.Size = new System.Drawing.Size(54, 42);
|
||||||
|
this.btnAppOptions.TabIndex = 178;
|
||||||
|
this.btnAppOptions.Text = "...";
|
||||||
|
this.btnAppOptions.UseVisualStyleBackColor = false;
|
||||||
|
this.btnAppOptions.Click += new System.EventHandler(this.btnAppOptions_Click);
|
||||||
|
//
|
||||||
|
// btnSettings
|
||||||
|
//
|
||||||
|
this.btnSettings.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.btnSettings.FlatAppearance.BorderSize = 0;
|
||||||
|
this.btnSettings.FlatAppearance.MouseOverBackColor = System.Drawing.Color.WhiteSmoke;
|
||||||
|
this.btnSettings.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||||
|
this.btnSettings.Font = new System.Drawing.Font("Segoe Fluent Icons", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.btnSettings.ForeColor = System.Drawing.Color.MediumVioletRed;
|
||||||
|
this.btnSettings.Location = new System.Drawing.Point(965, 751);
|
||||||
|
this.btnSettings.Name = "btnSettings";
|
||||||
|
this.btnSettings.Size = new System.Drawing.Size(42, 38);
|
||||||
|
this.btnSettings.TabIndex = 177;
|
||||||
|
this.btnSettings.Text = "...";
|
||||||
|
this.btnSettings.UseVisualStyleBackColor = true;
|
||||||
|
this.btnSettings.Click += new System.EventHandler(this.btnSettings_Click);
|
||||||
|
//
|
||||||
|
// label1
|
||||||
|
//
|
||||||
|
this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.label1.AutoEllipsis = true;
|
||||||
|
this.label1.Font = new System.Drawing.Font("Segoe UI Variable Text Semibold", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.label1.Location = new System.Drawing.Point(47, 49);
|
||||||
|
this.label1.Name = "label1";
|
||||||
|
this.label1.Size = new System.Drawing.Size(532, 43);
|
||||||
|
this.label1.TabIndex = 176;
|
||||||
|
this.label1.Text = "Welcome to the new era of Windows debloating";
|
||||||
|
//
|
||||||
|
// btnKebapMenu
|
||||||
|
//
|
||||||
|
this.btnKebapMenu.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.btnKebapMenu.FlatAppearance.BorderSize = 0;
|
||||||
|
this.btnKebapMenu.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||||
|
this.btnKebapMenu.Font = new System.Drawing.Font("Segoe Fluent Icons", 21.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.btnKebapMenu.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||||
|
this.btnKebapMenu.Location = new System.Drawing.Point(977, 0);
|
||||||
|
this.btnKebapMenu.Name = "btnKebapMenu";
|
||||||
|
this.btnKebapMenu.Size = new System.Drawing.Size(42, 38);
|
||||||
|
this.btnKebapMenu.TabIndex = 175;
|
||||||
|
this.btnKebapMenu.Text = "...";
|
||||||
|
this.btnKebapMenu.UseVisualStyleBackColor = true;
|
||||||
|
this.btnKebapMenu.Click += new System.EventHandler(this.btnMenu_Click);
|
||||||
|
//
|
||||||
|
// btnAnalyze
|
||||||
|
//
|
||||||
|
this.btnAnalyze.AutoEllipsis = true;
|
||||||
|
this.btnAnalyze.BackColor = System.Drawing.Color.MediumVioletRed;
|
||||||
|
this.btnAnalyze.FlatAppearance.BorderSize = 0;
|
||||||
|
this.btnAnalyze.Font = new System.Drawing.Font("Segoe UI Variable Text Semibold", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.btnAnalyze.ForeColor = System.Drawing.Color.White;
|
||||||
|
this.btnAnalyze.Location = new System.Drawing.Point(71, 213);
|
||||||
|
this.btnAnalyze.Name = "btnAnalyze";
|
||||||
|
this.btnAnalyze.Size = new System.Drawing.Size(286, 42);
|
||||||
|
this.btnAnalyze.TabIndex = 27;
|
||||||
|
this.btnAnalyze.Text = "Analyze";
|
||||||
|
this.btnAnalyze.UseVisualStyleBackColor = false;
|
||||||
|
this.btnAnalyze.Click += new System.EventHandler(this.btnAnalyze_Click);
|
||||||
|
//
|
||||||
|
// lnkSubHeader
|
||||||
|
//
|
||||||
|
this.lnkSubHeader.ActiveLinkColor = System.Drawing.Color.MediumVioletRed;
|
||||||
|
this.lnkSubHeader.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.lnkSubHeader.AutoEllipsis = true;
|
||||||
|
this.lnkSubHeader.Font = new System.Drawing.Font("Segoe UI Variable Text Semibold", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.lnkSubHeader.ForeColor = System.Drawing.Color.Black;
|
||||||
|
this.lnkSubHeader.ImeMode = System.Windows.Forms.ImeMode.NoControl;
|
||||||
|
this.lnkSubHeader.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
|
||||||
|
this.lnkSubHeader.LinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||||
|
this.lnkSubHeader.Location = new System.Drawing.Point(71, 679);
|
||||||
|
this.lnkSubHeader.Name = "lnkSubHeader";
|
||||||
|
this.lnkSubHeader.Size = new System.Drawing.Size(795, 18);
|
||||||
|
this.lnkSubHeader.TabIndex = 171;
|
||||||
|
this.lnkSubHeader.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lnkSubHeader_LinkClicked);
|
||||||
|
//
|
||||||
|
// progress
|
||||||
|
//
|
||||||
|
this.progress.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.progress.Location = new System.Drawing.Point(72, 285);
|
||||||
|
this.progress.Name = "progress";
|
||||||
|
this.progress.Size = new System.Drawing.Size(856, 5);
|
||||||
|
this.progress.TabIndex = 166;
|
||||||
|
this.progress.Visible = false;
|
||||||
|
//
|
||||||
|
// lblTools
|
||||||
|
//
|
||||||
|
this.lblTools.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||||
|
this.lblTools.AutoSize = true;
|
||||||
|
this.lblTools.Font = new System.Drawing.Font("Segoe UI Variable Text", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.lblTools.ForeColor = System.Drawing.Color.DeepPink;
|
||||||
|
this.lblTools.Location = new System.Drawing.Point(32, 749);
|
||||||
|
this.lblTools.Name = "lblTools";
|
||||||
|
this.lblTools.Size = new System.Drawing.Size(38, 30);
|
||||||
|
this.lblTools.TabIndex = 25;
|
||||||
|
this.lblTools.Text = "More\r\nApps!";
|
||||||
|
//
|
||||||
|
// cmbTools
|
||||||
|
//
|
||||||
|
this.cmbTools.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||||
|
this.cmbTools.BackColor = System.Drawing.Color.WhiteSmoke;
|
||||||
|
this.cmbTools.DropDownHeight = 200;
|
||||||
|
this.cmbTools.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.cmbTools.Font = new System.Drawing.Font("Segoe UI Variable Text Semiligh", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.cmbTools.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||||
|
this.cmbTools.FormattingEnabled = true;
|
||||||
|
this.cmbTools.IntegralHeight = false;
|
||||||
|
this.cmbTools.ItemHeight = 21;
|
||||||
|
this.cmbTools.Location = new System.Drawing.Point(75, 750);
|
||||||
|
this.cmbTools.Name = "cmbTools";
|
||||||
|
this.cmbTools.Size = new System.Drawing.Size(338, 29);
|
||||||
|
this.cmbTools.TabIndex = 19;
|
||||||
|
this.cmbTools.SelectedIndexChanged += new System.EventHandler(this.cmbTools_SelectedIndexChanged);
|
||||||
|
//
|
||||||
|
// lblHeader
|
||||||
|
//
|
||||||
|
this.lblHeader.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.lblHeader.AutoEllipsis = true;
|
||||||
|
this.lblHeader.Font = new System.Drawing.Font("Segoe UI Variable Text Semiligh", 12.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.lblHeader.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||||
|
this.lblHeader.Location = new System.Drawing.Point(69, 112);
|
||||||
|
this.lblHeader.Name = "lblHeader";
|
||||||
|
this.lblHeader.Size = new System.Drawing.Size(843, 59);
|
||||||
|
this.lblHeader.TabIndex = 16;
|
||||||
|
this.lblHeader.Text = "Windows 11 is too bloaty && nosey and has some annoying features that just need t" +
|
||||||
|
"o go.\r\nThis app will scan your system and inform you which features it likes or " +
|
||||||
|
"dislikes in your configuration.";
|
||||||
|
//
|
||||||
|
// rtbLog
|
||||||
|
//
|
||||||
|
this.rtbLog.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.rtbLog.BackColor = System.Drawing.Color.White;
|
||||||
|
this.rtbLog.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||||
|
this.rtbLog.Cursor = System.Windows.Forms.Cursors.IBeam;
|
||||||
|
this.rtbLog.Font = new System.Drawing.Font("Segoe UI Variable Text Semiligh", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.rtbLog.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||||
|
this.rtbLog.HideSelection = false;
|
||||||
|
this.rtbLog.Location = new System.Drawing.Point(72, 305);
|
||||||
|
this.rtbLog.Name = "rtbLog";
|
||||||
|
this.rtbLog.ReadOnly = true;
|
||||||
|
this.rtbLog.Size = new System.Drawing.Size(861, 360);
|
||||||
|
this.rtbLog.TabIndex = 138;
|
||||||
|
this.rtbLog.Text = "";
|
||||||
|
this.rtbLog.Visible = false;
|
||||||
|
this.rtbLog.LinkClicked += new System.Windows.Forms.LinkClickedEventHandler(this.richLog_LinkClicked);
|
||||||
|
//
|
||||||
|
// tvwFeatures
|
||||||
|
//
|
||||||
|
this.tvwFeatures.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Left)
|
||||||
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.tvwFeatures.BackColor = System.Drawing.Color.White;
|
||||||
|
this.tvwFeatures.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||||
|
this.tvwFeatures.CheckBoxes = true;
|
||||||
|
this.tvwFeatures.Font = new System.Drawing.Font("Segoe UI Variable Text", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.tvwFeatures.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
|
||||||
|
this.tvwFeatures.FullRowSelect = true;
|
||||||
|
this.tvwFeatures.ItemHeight = 30;
|
||||||
|
this.tvwFeatures.LineColor = System.Drawing.Color.HotPink;
|
||||||
|
this.tvwFeatures.Location = new System.Drawing.Point(72, 305);
|
||||||
|
this.tvwFeatures.Name = "tvwFeatures";
|
||||||
|
this.tvwFeatures.ShowLines = false;
|
||||||
|
this.tvwFeatures.ShowNodeToolTips = true;
|
||||||
|
this.tvwFeatures.ShowRootLines = false;
|
||||||
|
this.tvwFeatures.Size = new System.Drawing.Size(858, 360);
|
||||||
|
this.tvwFeatures.TabIndex = 168;
|
||||||
|
this.tvwFeatures.Visible = false;
|
||||||
|
this.tvwFeatures.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.treeFeatures_AfterCheck);
|
||||||
|
//
|
||||||
|
// contextKebapMenu
|
||||||
|
//
|
||||||
|
this.contextKebapMenu.BackColor = System.Drawing.SystemColors.Control;
|
||||||
|
this.contextKebapMenu.Font = new System.Drawing.Font("Segoe UI Variable Text Semiligh", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.contextKebapMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.menuAdvanced,
|
||||||
|
this.menuIgnoreLowLevelP,
|
||||||
|
this.menuImportProfile,
|
||||||
|
this.menuExportProfile});
|
||||||
|
this.contextKebapMenu.Name = "menuMain";
|
||||||
|
this.contextKebapMenu.RenderMode = System.Windows.Forms.ToolStripRenderMode.System;
|
||||||
|
this.contextKebapMenu.Size = new System.Drawing.Size(259, 108);
|
||||||
|
//
|
||||||
|
// menuAdvanced
|
||||||
|
//
|
||||||
|
this.menuAdvanced.Name = "menuAdvanced";
|
||||||
|
this.menuAdvanced.Size = new System.Drawing.Size(258, 26);
|
||||||
|
this.menuAdvanced.Text = "Advanced mode";
|
||||||
|
this.menuAdvanced.Click += new System.EventHandler(this.menuAdvanced_Click);
|
||||||
|
//
|
||||||
|
// menuIgnoreLowLevelP
|
||||||
|
//
|
||||||
|
this.menuIgnoreLowLevelP.Name = "menuIgnoreLowLevelP";
|
||||||
|
this.menuIgnoreLowLevelP.Size = new System.Drawing.Size(258, 26);
|
||||||
|
this.menuIgnoreLowLevelP.Text = "Ignore Low level problems";
|
||||||
|
this.menuIgnoreLowLevelP.TextDirection = System.Windows.Forms.ToolStripTextDirection.Horizontal;
|
||||||
|
this.menuIgnoreLowLevelP.Click += new System.EventHandler(this.menuIgnoreLowLevelP_Click);
|
||||||
|
//
|
||||||
|
// menuImportProfile
|
||||||
|
//
|
||||||
|
this.menuImportProfile.Name = "menuImportProfile";
|
||||||
|
this.menuImportProfile.Size = new System.Drawing.Size(258, 26);
|
||||||
|
this.menuImportProfile.Text = "Import profile";
|
||||||
|
this.menuImportProfile.Click += new System.EventHandler(this.menuImportProfile_Click);
|
||||||
|
//
|
||||||
|
// menuExportProfile
|
||||||
|
//
|
||||||
|
this.menuExportProfile.Name = "menuExportProfile";
|
||||||
|
this.menuExportProfile.Size = new System.Drawing.Size(258, 26);
|
||||||
|
this.menuExportProfile.Text = "Export profile";
|
||||||
|
this.menuExportProfile.Click += new System.EventHandler(this.menuExportProfile_Click);
|
||||||
|
//
|
||||||
|
// contextAppMenu
|
||||||
|
//
|
||||||
|
this.contextAppMenu.BackColor = System.Drawing.SystemColors.Control;
|
||||||
|
this.contextAppMenu.Font = new System.Drawing.Font("Segoe UI Variable Text Semiligh", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.contextAppMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.menuFix,
|
||||||
|
this.menuFixInfo,
|
||||||
|
this.menuRestore,
|
||||||
|
this.menuRestoreInfo});
|
||||||
|
this.contextAppMenu.Name = "menuMain";
|
||||||
|
this.contextAppMenu.RenderMode = System.Windows.Forms.ToolStripRenderMode.System;
|
||||||
|
this.contextAppMenu.Size = new System.Drawing.Size(361, 104);
|
||||||
|
//
|
||||||
|
// menuFix
|
||||||
|
//
|
||||||
|
this.menuFix.Name = "menuFix";
|
||||||
|
this.menuFix.Size = new System.Drawing.Size(360, 32);
|
||||||
|
this.menuFix.Text = "Fix problems";
|
||||||
|
this.menuFix.Click += new System.EventHandler(this.menuFix_Click);
|
||||||
|
//
|
||||||
|
// menuFixInfo
|
||||||
|
//
|
||||||
|
this.menuFixInfo.BackColor = System.Drawing.SystemColors.Control;
|
||||||
|
this.menuFixInfo.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||||
|
this.menuFixInfo.Enabled = false;
|
||||||
|
this.menuFixInfo.Font = new System.Drawing.Font("Segoe UI Variable Text Semiligh", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.menuFixInfo.Margin = new System.Windows.Forms.Padding(5, 1, 1, 1);
|
||||||
|
this.menuFixInfo.Name = "menuFixInfo";
|
||||||
|
this.menuFixInfo.Size = new System.Drawing.Size(300, 16);
|
||||||
|
this.menuFixInfo.Text = "This will fix all found and selected problems";
|
||||||
|
//
|
||||||
|
// menuRestore
|
||||||
|
//
|
||||||
|
this.menuRestore.Name = "menuRestore";
|
||||||
|
this.menuRestore.Size = new System.Drawing.Size(360, 32);
|
||||||
|
this.menuRestore.Text = "Restore settings";
|
||||||
|
this.menuRestore.TextDirection = System.Windows.Forms.ToolStripTextDirection.Horizontal;
|
||||||
|
this.menuRestore.Click += new System.EventHandler(this.menuRestore_Click);
|
||||||
|
//
|
||||||
|
// menuRestoreInfo
|
||||||
|
//
|
||||||
|
this.menuRestoreInfo.BackColor = System.Drawing.SystemColors.Control;
|
||||||
|
this.menuRestoreInfo.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||||
|
this.menuRestoreInfo.Enabled = false;
|
||||||
|
this.menuRestoreInfo.Font = new System.Drawing.Font("Segoe UI Variable Text Semiligh", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.menuRestoreInfo.Margin = new System.Windows.Forms.Padding(5, 1, 1, 1);
|
||||||
|
this.menuRestoreInfo.Name = "menuRestoreInfo";
|
||||||
|
this.menuRestoreInfo.Size = new System.Drawing.Size(300, 16);
|
||||||
|
this.menuRestoreInfo.Text = "This will restore the default settings ";
|
||||||
|
//
|
||||||
|
// MainForm
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||||
|
this.BackColor = System.Drawing.Color.White;
|
||||||
|
this.ClientSize = new System.Drawing.Size(1019, 801);
|
||||||
|
this.Controls.Add(this.pnlForm);
|
||||||
|
this.Name = "MainForm";
|
||||||
|
this.ShowIcon = false;
|
||||||
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||||
|
this.Text = "BloatyNosy";
|
||||||
|
this.Shown += new System.EventHandler(this.MainForm_Shown);
|
||||||
|
this.pnlForm.ResumeLayout(false);
|
||||||
|
this.pnlMain.ResumeLayout(false);
|
||||||
|
this.pnlMain.PerformLayout();
|
||||||
|
this.contextKebapMenu.ResumeLayout(false);
|
||||||
|
this.contextAppMenu.ResumeLayout(false);
|
||||||
|
this.contextAppMenu.PerformLayout();
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
public System.Windows.Forms.Panel pnlForm;
|
||||||
|
private System.Windows.Forms.Panel pnlMain;
|
||||||
|
private System.Windows.Forms.Label lblTools;
|
||||||
|
private System.Windows.Forms.ComboBox cmbTools;
|
||||||
|
private System.Windows.Forms.Label lblHeader;
|
||||||
|
private System.Windows.Forms.Button btnAnalyze;
|
||||||
|
private System.Windows.Forms.RichTextBox rtbLog;
|
||||||
|
private System.Windows.Forms.ProgressBar progress;
|
||||||
|
private System.Windows.Forms.LinkLabel lnkSubHeader;
|
||||||
|
private System.Windows.Forms.TreeView tvwFeatures;
|
||||||
|
private System.Windows.Forms.Button btnKebapMenu;
|
||||||
|
private System.Windows.Forms.ContextMenuStrip contextKebapMenu;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuAdvanced;
|
||||||
|
private System.Windows.Forms.Label label1;
|
||||||
|
private System.Windows.Forms.Button btnSettings;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuIgnoreLowLevelP;
|
||||||
|
private System.Windows.Forms.Button btnAppOptions;
|
||||||
|
private System.Windows.Forms.ContextMenuStrip contextAppMenu;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuFix;
|
||||||
|
private System.Windows.Forms.ToolStripTextBox menuFixInfo;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuRestore;
|
||||||
|
private System.Windows.Forms.ToolStripTextBox menuRestoreInfo;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuImportProfile;
|
||||||
|
private System.Windows.Forms.LinkLabel lnkRunSetup;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem menuExportProfile;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
514
src/BloatyNosy/MainForm.cs
Normal file
514
src/BloatyNosy/MainForm.cs
Normal file
@ -0,0 +1,514 @@
|
|||||||
|
using BloatyNosy.ITreeNode;
|
||||||
|
using Features.Feature;
|
||||||
|
using HelperTool;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace BloatyNosy
|
||||||
|
{
|
||||||
|
public partial class MainForm : Form
|
||||||
|
{
|
||||||
|
public Control INavPage;
|
||||||
|
private int progression = 0;
|
||||||
|
private int progressionIncrease = 0;
|
||||||
|
private static readonly ErrorHelper logger = ErrorHelper.Instance;
|
||||||
|
|
||||||
|
public MainForm()
|
||||||
|
=> InitializeComponent();
|
||||||
|
|
||||||
|
private void MainForm_Shown(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
this.AddDefaultFeatures();
|
||||||
|
this.AddMoreApps();
|
||||||
|
|
||||||
|
this.SetStyle();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SetStyle()
|
||||||
|
{
|
||||||
|
btnAppOptions.Text = "\uE70D";
|
||||||
|
btnKebapMenu.Text = "\u22ee";
|
||||||
|
btnSettings.Text = "\uE713";
|
||||||
|
btnAnalyze.Text += "\x20" + OsHelper.thisOS;
|
||||||
|
|
||||||
|
BackColor =
|
||||||
|
tvwFeatures.BackColor =
|
||||||
|
rtbLog.BackColor =
|
||||||
|
Color.FromArgb(244, 241, 249);
|
||||||
|
logger.SetTarget(rtbLog); // Log messages to target richLog
|
||||||
|
INavPage = pnlForm.Controls[0]; // Set default NavPage
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetView(Control View)
|
||||||
|
{
|
||||||
|
var control = View as Control;
|
||||||
|
|
||||||
|
control.Anchor = (AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom);
|
||||||
|
control.Dock = DockStyle.Fill;
|
||||||
|
INavPage.Anchor = (AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Bottom);
|
||||||
|
INavPage.Dock = DockStyle.Fill;
|
||||||
|
|
||||||
|
pnlForm.Controls.Clear();
|
||||||
|
pnlForm.Controls.Add(View);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AddMoreApps()
|
||||||
|
{
|
||||||
|
cmbTools.Items.Add("InstaPackage");
|
||||||
|
cmbTools.Items.Add("BloatFinder");
|
||||||
|
cmbTools.Items.Add("WinModder");
|
||||||
|
cmbTools.Items.Insert(0, "Select...");
|
||||||
|
cmbTools.SelectedIndex = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Register some more Tools
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void cmbTools_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
string message = Convert.ToString(cmbTools.SelectedItem);
|
||||||
|
string[] keys = new string[] { "Insta", "Bloat", "Mod" };
|
||||||
|
|
||||||
|
string sKeyResult = keys.FirstOrDefault<string>(s => message.Contains(s));
|
||||||
|
|
||||||
|
switch (sKeyResult)
|
||||||
|
{
|
||||||
|
case "Insta":
|
||||||
|
this.SetView(new PackagesPageView()); // Packages > InstaPackages view
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "Bloat":
|
||||||
|
this.SetView(new AppsPageView()); // In-box apps > BloatFinder view
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "Mod":
|
||||||
|
this.SetView(new ModsPageView()); // Mods > WinModder view
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void lnkRunSetup_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||||
|
=> this.SetView(new SetupPageView(this)); // Mods > Setup view
|
||||||
|
|
||||||
|
private void btnSettings_Click(object sender, EventArgs e)
|
||||||
|
=> this.SetView(new AboutPageView()); // Settings view
|
||||||
|
|
||||||
|
public void AddDefaultFeatures()
|
||||||
|
{
|
||||||
|
tvwFeatures.Nodes.Clear();
|
||||||
|
tvwFeatures.BeginUpdate();
|
||||||
|
|
||||||
|
// Root node
|
||||||
|
TreeNode root = new TreeNode("Problems to be checked ")
|
||||||
|
{
|
||||||
|
Checked = true,
|
||||||
|
};
|
||||||
|
|
||||||
|
TreeNode browser = new TreeNode("Browser", new TreeNode[] {
|
||||||
|
new FeatureNode(new Features.Feature.Browser.ChromeTelemetry()),
|
||||||
|
new FeatureNode(new Features.Feature.Browser.FirefoxTelemetry()),
|
||||||
|
})
|
||||||
|
{
|
||||||
|
Checked = true,
|
||||||
|
};
|
||||||
|
|
||||||
|
TreeNode explorer = new TreeNode("Explorer", new TreeNode[] {
|
||||||
|
new FeatureNode(new Features.Feature.Explorer.FileExplorer()),
|
||||||
|
new FeatureNode(new Features.Feature.Explorer.HiddenFileFolder()),
|
||||||
|
new FeatureNode(new Features.Feature.Explorer.HiddenFileExt()),
|
||||||
|
})
|
||||||
|
{
|
||||||
|
Checked = true,
|
||||||
|
};
|
||||||
|
|
||||||
|
TreeNode desktop = new TreeNode("Desktop", new System.Windows.Forms.TreeNode[] {
|
||||||
|
new FeatureNode(new Features.Feature.Desktop.AppsTheme()),
|
||||||
|
new FeatureNode(new Features.Feature.Desktop.WindowsTheme()),
|
||||||
|
new FeatureNode(new Features.Feature.Desktop.Transparency()),
|
||||||
|
new FeatureNode(new Features.Feature.Desktop.SnapAssistFlyout()),
|
||||||
|
new FeatureNode(new Features.Feature.Desktop.Widgets()),
|
||||||
|
new FeatureNode(new Features.Feature.Desktop.WidgetsRemove()),
|
||||||
|
new FeatureNode(new Features.Feature.Desktop.Stickers()),
|
||||||
|
})
|
||||||
|
{
|
||||||
|
Checked = true,
|
||||||
|
};
|
||||||
|
|
||||||
|
TreeNode taskbar = new TreeNode("Taskbar and Start menu", new System.Windows.Forms.TreeNode[] {
|
||||||
|
new FeatureNode(new Features.Feature.Taskbar.TaskbarSearch()),
|
||||||
|
new FeatureNode(new Features.Feature.Taskbar.TaskbarChat()),
|
||||||
|
new FeatureNode(new Features.Feature.Taskbar.TaskView()),
|
||||||
|
new FeatureNode(new Features.Feature.Taskbar.MostUsedApps()),
|
||||||
|
new FeatureNode(new Features.Feature.Taskbar.StartmenuLayout()),
|
||||||
|
})
|
||||||
|
{
|
||||||
|
Checked = true,
|
||||||
|
};
|
||||||
|
|
||||||
|
TreeNode system = new TreeNode("System", new System.Windows.Forms.TreeNode[] {
|
||||||
|
new FeatureNode(new Features.Feature.System.FullContextMenus()),
|
||||||
|
new FeatureNode(new Features.Feature.System.RemoveW11Watermark()),
|
||||||
|
new FeatureNode(new Features.Feature.System.TeamsAutostart()),
|
||||||
|
new FeatureNode(new Features.Feature.System.Fax()),
|
||||||
|
new FeatureNode(new Features.Feature.System.XPSWriter()),
|
||||||
|
new FeatureNode(new Features.Feature.System.TPMCheck()),
|
||||||
|
new FeatureNode(new Features.Feature.System.OneDriveRemove()),
|
||||||
|
})
|
||||||
|
{
|
||||||
|
Checked = true,
|
||||||
|
};
|
||||||
|
|
||||||
|
TreeNode gaming = new TreeNode("Gaming", new TreeNode[] {
|
||||||
|
new FeatureNode(new Features.Feature.Gaming.GameDVR()),
|
||||||
|
new FeatureNode(new Features.Feature.Gaming.PowerThrottling()),
|
||||||
|
new FeatureNode(new Features.Feature.Gaming.VisualFX()),
|
||||||
|
})
|
||||||
|
{
|
||||||
|
Checked = true,
|
||||||
|
};
|
||||||
|
|
||||||
|
TreeNode privacy = new TreeNode("Privacy", new TreeNode[] {
|
||||||
|
new FeatureNode(new Features.Feature.Privacy.DiagnosticData()),
|
||||||
|
new FeatureNode(new Features.Feature.Privacy.Telemetry()),
|
||||||
|
new FeatureNode(new Features.Feature.Privacy.CompatibilityTelemetry()),
|
||||||
|
new FeatureNode(new Features.Feature.Privacy.LocationTracking()),
|
||||||
|
new FeatureNode(new Features.Feature.Privacy.Advertising()),
|
||||||
|
new FeatureNode(new Features.Feature.Privacy.Feedback()),
|
||||||
|
new FeatureNode(new Features.Feature.Privacy.SuggestedContent()),
|
||||||
|
new FeatureNode(new Features.Feature.Privacy.Biometrics()),
|
||||||
|
new FeatureNode(new Features.Feature.Privacy.AppsAutoInstall()),
|
||||||
|
new FeatureNode(new Features.Feature.Privacy.WindowsTips()),
|
||||||
|
new FeatureNode(new Features.Feature.Privacy.TailoredExperiences()),
|
||||||
|
})
|
||||||
|
{
|
||||||
|
Checked = true
|
||||||
|
};
|
||||||
|
|
||||||
|
TreeNode components = new TreeNode("Feature Recommendation", new TreeNode[] {
|
||||||
|
new FeatureNode(new Features.Feature.Recommendation.EnableWSL()),
|
||||||
|
})
|
||||||
|
{
|
||||||
|
Checked = true,
|
||||||
|
};
|
||||||
|
|
||||||
|
TreeNode apps = new TreeNode("Bloatware (from Microsoft, ASUS, Adobe, HP, Meta etc.)", new TreeNode[] {
|
||||||
|
new FeatureNode(new Features.Feature.Apps.StoreApps()),
|
||||||
|
})
|
||||||
|
{
|
||||||
|
Checked = true,
|
||||||
|
};
|
||||||
|
|
||||||
|
root.Nodes.AddRange(new TreeNode[]
|
||||||
|
{
|
||||||
|
browser,
|
||||||
|
explorer,
|
||||||
|
desktop,
|
||||||
|
taskbar,
|
||||||
|
system,
|
||||||
|
gaming,
|
||||||
|
privacy,
|
||||||
|
components,
|
||||||
|
apps,
|
||||||
|
});
|
||||||
|
|
||||||
|
tvwFeatures.Nodes.Add(root);
|
||||||
|
|
||||||
|
// Some tvw nicety
|
||||||
|
foreach (TreeNode tn in tvwFeatures.Nodes) { tn.Expand(); }
|
||||||
|
tvwFeatures.Nodes[0].NodeFont = new Font(tvwFeatures.Font, FontStyle.Bold);
|
||||||
|
tvwFeatures.EndUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void btnAnalyze_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Reset();
|
||||||
|
|
||||||
|
int performFeaturesCount = 0;
|
||||||
|
|
||||||
|
List<FeatureNode> selectedFeatures = CollectFeatureNodes();
|
||||||
|
|
||||||
|
foreach (FeatureNode node in selectedFeatures)
|
||||||
|
{
|
||||||
|
var feature = node.Feature;
|
||||||
|
ConfiguredTaskAwaitable<bool> analyzeTask = Task<bool>.Factory.StartNew(() => feature.CheckFeature()).ConfigureAwait(true);
|
||||||
|
// logger.Log("Check {0}", node.Text);
|
||||||
|
|
||||||
|
bool shouldPerform = await analyzeTask;
|
||||||
|
lnkSubHeader.Text = "Check " + feature.ID();
|
||||||
|
|
||||||
|
if (menuIgnoreLowLevelP.Checked == true)
|
||||||
|
if (shouldPerform & !node.Text.Contains("LOW"))
|
||||||
|
{
|
||||||
|
logger.Log("Problem on " + node.Parent.Text + ": " + feature.ID());
|
||||||
|
//logger.Log("- {0}", node.Text);
|
||||||
|
|
||||||
|
performFeaturesCount += 1;
|
||||||
|
node.ForeColor = Color.MediumVioletRed;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
node.Checked = false; // Uncheck all fixed
|
||||||
|
node.ForeColor = Color.Gray;
|
||||||
|
//logger.Log("Problem fixed: {0}", node.Text);
|
||||||
|
}
|
||||||
|
else if (shouldPerform)
|
||||||
|
{
|
||||||
|
logger.Log("Problem on " + node.Parent.Text + ": " + feature.ID());
|
||||||
|
performFeaturesCount += 1;
|
||||||
|
node.ForeColor = Color.MediumVioletRed;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
node.Checked = false;
|
||||||
|
node.ForeColor = Color.Gray;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tvwFeatures.ExpandAll();
|
||||||
|
tvwFeatures.SelectedNode = tvwFeatures.Nodes[0];
|
||||||
|
DoProgress(100);
|
||||||
|
|
||||||
|
StringBuilder sum = new StringBuilder();
|
||||||
|
sum.Append(Environment.NewLine);
|
||||||
|
sum.Append("======= Summary =======\n");
|
||||||
|
sum.Append($"We've checked {selectedFeatures.Count} features of your Windows 11 installation.\r\n");
|
||||||
|
sum.Append($"We like {selectedFeatures.Count - performFeaturesCount} of these features (no need for action).\r\n");
|
||||||
|
|
||||||
|
logger.Log(sum.ToString(), "");
|
||||||
|
|
||||||
|
lnkSubHeader.Text = $"There are {performFeaturesCount} features we don't like and which should be fixed (click for details).\r\n";
|
||||||
|
|
||||||
|
}
|
||||||
|
private void SelectFeatureNodes(TreeNodeCollection trNodeCollection, bool isCheck)
|
||||||
|
{
|
||||||
|
foreach (TreeNode trNode in trNodeCollection)
|
||||||
|
{
|
||||||
|
trNode.Checked = isCheck;
|
||||||
|
if (trNode.Nodes.Count > 0)
|
||||||
|
SelectFeatureNodes(trNode.Nodes, isCheck);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<FeatureNode> CollectFeatureNodes()
|
||||||
|
{
|
||||||
|
List<FeatureNode> selectedFeatures = new List<FeatureNode>();
|
||||||
|
|
||||||
|
foreach (TreeNode treeNode in tvwFeatures.Nodes.All())
|
||||||
|
{
|
||||||
|
if (treeNode.Checked && treeNode.GetType() == typeof(FeatureNode))
|
||||||
|
{
|
||||||
|
selectedFeatures.Add((FeatureNode)treeNode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
progressionIncrease = (int)Math.Floor(100.0f / selectedFeatures.Count);
|
||||||
|
|
||||||
|
return selectedFeatures;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Reset()
|
||||||
|
{
|
||||||
|
progression = 0;
|
||||||
|
progressionIncrease = 0;
|
||||||
|
|
||||||
|
progress.Value = 0;
|
||||||
|
progress.Visible = true;
|
||||||
|
rtbLog.Visible = true;
|
||||||
|
rtbLog.Text = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DoProgress(int value)
|
||||||
|
{
|
||||||
|
progression = value;
|
||||||
|
progress.Value = progression;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void IncrementProgress()
|
||||||
|
{
|
||||||
|
progression += progressionIncrease;
|
||||||
|
progress.Value = progression;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void ApplyFeatures(List<FeatureNode> treeNodes)
|
||||||
|
{
|
||||||
|
tvwFeatures.Enabled = false;
|
||||||
|
|
||||||
|
foreach (FeatureNode node in treeNodes)
|
||||||
|
{
|
||||||
|
var assessment = node.Feature;
|
||||||
|
ConfiguredTaskAwaitable<bool> performTask = Task<bool>.Factory.StartNew(() => assessment.DoFeature()).ConfigureAwait(true);
|
||||||
|
|
||||||
|
lnkSubHeader.Text = "Fixing " + node.Text;
|
||||||
|
|
||||||
|
var result = await performTask;
|
||||||
|
IncrementProgress();
|
||||||
|
}
|
||||||
|
|
||||||
|
DoProgress(100);
|
||||||
|
lnkSubHeader.Text = "";
|
||||||
|
|
||||||
|
tvwFeatures.Enabled = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void UndoFeatures(List<FeatureNode> treeNodes)
|
||||||
|
{
|
||||||
|
tvwFeatures.Enabled = false;
|
||||||
|
|
||||||
|
foreach (FeatureNode node in treeNodes)
|
||||||
|
{
|
||||||
|
var assessment = node.Feature;
|
||||||
|
ConfiguredTaskAwaitable<bool> performTask = Task<bool>.Factory.StartNew(() => assessment.UndoFeature()).ConfigureAwait(true);
|
||||||
|
|
||||||
|
lnkSubHeader.Text = "Restore " + node.Text;
|
||||||
|
|
||||||
|
var result = await performTask;
|
||||||
|
IncrementProgress();
|
||||||
|
}
|
||||||
|
|
||||||
|
DoProgress(100);
|
||||||
|
lnkSubHeader.Text = "";
|
||||||
|
|
||||||
|
tvwFeatures.Enabled = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void menuFix_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(rtbLog.Text))
|
||||||
|
{
|
||||||
|
MessageBox.Show("No analyze has taken place yet");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Reset();
|
||||||
|
|
||||||
|
List<FeatureNode> performNodes = CollectFeatureNodes();
|
||||||
|
ApplyFeatures(performNodes);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void menuRestore_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (MessageBox.Show("Do you want to restore selected features to Windows default state?", this.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
|
||||||
|
{
|
||||||
|
Reset();
|
||||||
|
|
||||||
|
List<FeatureNode> performNodes = CollectFeatureNodes();
|
||||||
|
UndoFeatures(performNodes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void treeFeatures_AfterCheck(object sender, TreeViewEventArgs e)
|
||||||
|
{
|
||||||
|
tvwFeatures.BeginUpdate();
|
||||||
|
|
||||||
|
foreach (TreeNode child in e.Node.Nodes)
|
||||||
|
{
|
||||||
|
child.Checked = e.Node.Checked;
|
||||||
|
}
|
||||||
|
|
||||||
|
tvwFeatures.EndUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void menuAdvanced_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
menuAdvanced.Checked = !(menuAdvanced.Checked);
|
||||||
|
|
||||||
|
if (menuAdvanced.Checked == true)
|
||||||
|
{
|
||||||
|
tvwFeatures.Visible = true;
|
||||||
|
tvwFeatures.BringToFront();
|
||||||
|
}
|
||||||
|
else if (menuAdvanced.Checked == false)
|
||||||
|
tvwFeatures.Visible = false;
|
||||||
|
rtbLog.Visible = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void menuIgnoreLowLevelP_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
menuIgnoreLowLevelP.Checked = !(menuIgnoreLowLevelP.Checked);
|
||||||
|
SelectFeatureNodes(tvwFeatures.Nodes, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void richLog_LinkClicked(object sender, LinkClickedEventArgs e)
|
||||||
|
=> Utils.LaunchUri(e.LinkText);
|
||||||
|
|
||||||
|
private void btnAppOptions_Click(object sender, EventArgs e)
|
||||||
|
=> this.contextAppMenu.Show(Cursor.Position.X, Cursor.Position.Y);
|
||||||
|
|
||||||
|
private void btnMenu_Click(object sender, EventArgs e)
|
||||||
|
=> this.contextKebapMenu.Show(Cursor.Position.X, Cursor.Position.Y);
|
||||||
|
|
||||||
|
private void lnkSubHeader_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||||
|
=> menuAdvanced.PerformClick();
|
||||||
|
|
||||||
|
private void menuImportProfile_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
OpenFileDialog f = new OpenFileDialog();
|
||||||
|
f.InitialDirectory = HelperTool.Utils.Data.DataRootDir;
|
||||||
|
f.Filter = "BloatyNosy files (*.bloos)|*.bloos|ThisIsWin11 files (*.tiw1)|*.tiw1";
|
||||||
|
|
||||||
|
if (f.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
SelectFeatureNodes(tvwFeatures.Nodes, false);
|
||||||
|
tvwFeatures.ExpandAll();
|
||||||
|
tvwFeatures.Nodes[0].EnsureVisible();
|
||||||
|
menuAdvanced.PerformClick();
|
||||||
|
|
||||||
|
using (StreamReader reader = new StreamReader(f.OpenFile()))
|
||||||
|
{
|
||||||
|
while (!reader.EndOfStream)
|
||||||
|
{
|
||||||
|
string line = reader.ReadLine();
|
||||||
|
foreach (TreeNode treeNode in tvwFeatures.Nodes.All())
|
||||||
|
{
|
||||||
|
if (treeNode.Text.Contains(line))
|
||||||
|
{
|
||||||
|
treeNode.BackColor = Color.Yellow;
|
||||||
|
treeNode.Text += "\x20" + "(" + Path.GetFileNameWithoutExtension(f.FileName) + ")";
|
||||||
|
treeNode.Checked = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MessageBox.Show("Profile has been successfully imported.\n\nWe have highlighted the configuration that would be enabled (no changes are done yet).", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void menuExportProfile_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
SaveFileDialog f = new SaveFileDialog();
|
||||||
|
f.InitialDirectory = HelperTool.Utils.Data.DataRootDir;
|
||||||
|
f.FileName = "debloos-profile";
|
||||||
|
f.Filter = "BloatyNosy files *.bloos|*.bloos";
|
||||||
|
|
||||||
|
if (f.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
using (StreamWriter writer = new StreamWriter(f.OpenFile()))
|
||||||
|
{
|
||||||
|
foreach (TreeNode treeNode in tvwFeatures.Nodes.All())
|
||||||
|
{
|
||||||
|
if (!treeNode.Checked)
|
||||||
|
continue;
|
||||||
|
writer.WriteLine(String.Format("{0}", treeNode.Text));
|
||||||
|
}
|
||||||
|
|
||||||
|
writer.Close();
|
||||||
|
}
|
||||||
|
MessageBox.Show("Profile has been successfully exported.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
126
src/BloatyNosy/MainForm.resx
Normal file
126
src/BloatyNosy/MainForm.resx
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<metadata name="contextKebapMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>17, 17</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="contextAppMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>172, 17</value>
|
||||||
|
</metadata>
|
||||||
|
</root>
|
24
src/BloatyNosy/Program.cs
Normal file
24
src/BloatyNosy/Program.cs
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
using System;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace BloatyNosy
|
||||||
|
{
|
||||||
|
internal static class Program
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Get app version
|
||||||
|
/// </summary>
|
||||||
|
internal static string GetCurrentVersionTostring() => new Version(Application.ProductVersion).ToString(3);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The main entry point for the application.
|
||||||
|
/// </summary>
|
||||||
|
[STAThread]
|
||||||
|
private static void Main()
|
||||||
|
{
|
||||||
|
Application.EnableVisualStyles();
|
||||||
|
Application.SetCompatibleTextRenderingDefault(false);
|
||||||
|
Application.Run(new MainForm());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
79
src/BloatyNosy/app.manifest
Normal file
79
src/BloatyNosy/app.manifest
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
|
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
|
||||||
|
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
|
||||||
|
<security>
|
||||||
|
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||||
|
<!-- UAC-Manifestoptionen
|
||||||
|
Wenn Sie die Ebene der Benutzerkontensteuerung für Windows ändern möchten, ersetzen Sie den
|
||||||
|
Knoten "requestedExecutionLevel" wie folgt.
|
||||||
|
|
||||||
|
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||||
|
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
|
||||||
|
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
|
||||||
|
|
||||||
|
Durch Angabe des Elements "requestedExecutionLevel" wird die Datei- und Registrierungsvirtualisierung deaktiviert.
|
||||||
|
Entfernen Sie dieses Element, wenn diese Virtualisierung aus Gründen der Abwärtskompatibilität
|
||||||
|
für die Anwendung erforderlich ist.
|
||||||
|
-->
|
||||||
|
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
|
||||||
|
</requestedPrivileges>
|
||||||
|
</security>
|
||||||
|
</trustInfo>
|
||||||
|
|
||||||
|
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||||
|
<application>
|
||||||
|
<!-- Eine Liste der Windows-Versionen, unter denen diese Anwendung getestet
|
||||||
|
und für die sie entwickelt wurde. Wenn Sie die Auskommentierung der entsprechenden Elemente aufheben,
|
||||||
|
wird von Windows automatisch die kompatibelste Umgebung ausgewählt. -->
|
||||||
|
|
||||||
|
<!-- Windows Vista -->
|
||||||
|
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
|
||||||
|
|
||||||
|
<!-- Windows 7 -->
|
||||||
|
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
|
||||||
|
|
||||||
|
<!-- Windows 8 -->
|
||||||
|
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
|
||||||
|
|
||||||
|
<!-- Windows 8.1 -->
|
||||||
|
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
|
||||||
|
|
||||||
|
<!-- Windows 10 -->
|
||||||
|
<!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
|
||||||
|
|
||||||
|
</application>
|
||||||
|
</compatibility>
|
||||||
|
|
||||||
|
<!-- Gibt an, dass die Anwendung mit DPI-Werten kompatibel ist und von Windows nicht automatisch auf höhere
|
||||||
|
DPI-Werte skaliert wird. WPF-Anwendungen (Windows Presentation Foundation) sind automatisch mit DPI-Werten kompatibel, eine Aktivierung
|
||||||
|
ist nicht erforderlich. Für Windows Forms-Anwendungen für .NET Framework 4.6, die diese Einstellung aktivieren, muss
|
||||||
|
auch die Einstellung "'EnableWindowsFormsHighDpiAutoResizing" in der Datei "app.config" auf TRUE festgelegt werden.
|
||||||
|
|
||||||
|
Hierdurch können für die Anwendung lange Pfade verwendet werden. Weitere Informationen finden Sie unter https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation.-->
|
||||||
|
|
||||||
|
<application xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||||
|
<windowsSettings>
|
||||||
|
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
|
||||||
|
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
|
||||||
|
</windowsSettings>
|
||||||
|
</application>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Designs für allgemeine Windows-Steuerelemente und -Dialogfelder (Windows XP und höher) aktivieren -->
|
||||||
|
<!--
|
||||||
|
<dependency>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity
|
||||||
|
type="win32"
|
||||||
|
name="Microsoft.Windows.Common-Controls"
|
||||||
|
version="6.0.0.0"
|
||||||
|
processorArchitecture="*"
|
||||||
|
publicKeyToken="6595b64144ccf1df"
|
||||||
|
language="*"
|
||||||
|
/>
|
||||||
|
</dependentAssembly>
|
||||||
|
</dependency>
|
||||||
|
-->
|
||||||
|
|
||||||
|
</assembly>
|
Loading…
x
Reference in New Issue
Block a user