瀏覽代碼

update to v15.3

deadmoon 2 年之前
父節點
當前提交
fcebecbcf9

+ 6 - 0
CHANGELOG.md

@@ -1,3 +1,9 @@
+## [15.3] - 2023-05-18
+- New: Automation engine by using reusable templates (https://github.com/hellzerg/optimizer/blob/master/TEMPLATING.md)
+- Hotfix: Various localization updates
+- Hotfix: Rare bug in Cleaner, when choosing Mozilla Firefox
+- Hotfix: Improvements on UI scaling
+
 ## [15.2] - 2023-05-11
 - New: Disable or Reset svchost process splitting mechanism
 - Hotfix: Rare crash when loading UWP apps

+ 1 - 26
CONFS.md

@@ -51,7 +51,6 @@
 ### Reduces the amount of svchost processes running, improving RAM usage ###
 ### To disable it, you need to provide your amount of RAM using this command (example for 8GB RAM): ###
 
-
 ```optimizer.exe /svchostsplit=8```
 
 #### Reset the mechanism to its default configuration using: ####
@@ -63,28 +62,4 @@
 ## How to disable/enable HPET (High Precision Event Timer) in order to gain a boost when gaming [use at your own risk!] ##
 
 - ```optimizer.exe /disablehpet```
-- ```optimizer.exe /enablehpet```
-
-## You can execute Optimizer silently, applying tweaks according to a configuration file. ##
-
-Download the configuration file based on your Windows version and edit it accordingly.
-
-* ```true```: applies the specific option
-* ```false```: resets the specific option
-* ```null```: ignores the specific option
-
-Then, execute it like this: ```optimizer.exe /config=win10.conf```
-
-### For Windows 7: ###
-https://github.com/hellzerg/optimizer/blob/master/confs/win7.conf
-
-### For Windows 8/8.1: ###
-https://github.com/hellzerg/optimizer/blob/master/confs/win8.conf
-
-### For Windows 10: ###
-https://github.com/hellzerg/optimizer/blob/master/confs/win10.conf
-
-### For Windows 11: ###
-https://github.com/hellzerg/optimizer/blob/master/confs/win11.conf
-
-
+- ```optimizer.exe /enablehpet```

+ 27 - 21
Optimizer/CleanHelper.cs

@@ -262,38 +262,44 @@ namespace Optimizer
 
         internal static void PreviewFireFoxClean(bool cache, bool cookies, bool searchHistory)
         {
-            foreach (string x in Directory.EnumerateDirectories(firefoxRoaming))
+            if (Directory.Exists(firefoxRoaming))
             {
-                if (x.ToLowerInvariant().Contains("release"))
+                foreach (string x in Directory.EnumerateDirectories(firefoxRoaming))
                 {
-                    if (cookies)
-                    {
-                        PreviewFolder(Path.Combine(x, "cookies.sqlite"));
-                        PreviewSizeToBeFreed += CalculateSize(Path.Combine(x, "cookies.sqlite"));
-                    }
-
-                    if (searchHistory)
-                    {
-                        PreviewFolder(Path.Combine(x, "places.sqlite"));
-                        PreviewSizeToBeFreed += CalculateSize(Path.Combine(x, "places.sqlite"));
-                    }
-
-                    if (cache)
+                    if (x.ToLowerInvariant().Contains("release"))
                     {
-                        PreviewFolder(Path.Combine(x, "shader-cache"));
-                        PreviewSizeToBeFreed += CalculateSize(Path.Combine(x, "shader-cache"));
+                        if (cookies)
+                        {
+                            PreviewFolder(Path.Combine(x, "cookies.sqlite"));
+                            PreviewSizeToBeFreed += CalculateSize(Path.Combine(x, "cookies.sqlite"));
+                        }
+
+                        if (searchHistory)
+                        {
+                            PreviewFolder(Path.Combine(x, "places.sqlite"));
+                            PreviewSizeToBeFreed += CalculateSize(Path.Combine(x, "places.sqlite"));
+                        }
+
+                        if (cache)
+                        {
+                            PreviewFolder(Path.Combine(x, "shader-cache"));
+                            PreviewSizeToBeFreed += CalculateSize(Path.Combine(x, "shader-cache"));
+                        }
                     }
                 }
             }
 
             if (cache)
             {
-                foreach (string x in Directory.EnumerateDirectories(firefoxLocal))
+                if (Directory.Exists(firefoxLocal))
                 {
-                    if (x.ToLowerInvariant().Contains("release"))
+                    foreach (string x in Directory.EnumerateDirectories(firefoxLocal))
                     {
-                        PreviewFolder(Path.Combine(x, "cache2"));
-                        PreviewSizeToBeFreed += CalculateSize(Path.Combine(x, "cache2"));
+                        if (x.ToLowerInvariant().Contains("release"))
+                        {
+                            PreviewFolder(Path.Combine(x, "cache2"));
+                            PreviewSizeToBeFreed += CalculateSize(Path.Combine(x, "cache2"));
+                        }
                     }
                 }
             }

+ 46 - 0
Optimizer/ErrorLogger.cs

@@ -1,5 +1,6 @@
 using System;
 using System.IO;
+using System.Text;
 
 namespace Optimizer
 {
@@ -7,8 +8,53 @@ namespace Optimizer
     {
         internal static string ErrorLogFile = Path.Combine(CoreHelper.CoreFolder, "Optimizer.log");
 
+        static StringBuilder _silentReportLog;
+
+        private static void LogErrorSilent(string functionName, string errorMessage, string errorStackTrace)
+        {
+            _silentReportLog.AppendLine(string.Format("[ERROR] [{0}] in function [{1}]", DateTime.Now.ToString(), functionName));
+            _silentReportLog.AppendLine();
+            _silentReportLog.AppendLine(errorMessage);
+            _silentReportLog.AppendLine();
+            _silentReportLog.AppendLine(errorStackTrace);
+            _silentReportLog.AppendLine();
+            _silentReportLog.AppendLine();
+        }
+
+        internal static void LogInfoSilent(string message)
+        {
+            _silentReportLog.AppendLine($"[OK] {message}");
+            _silentReportLog.AppendLine();
+        }
+
+        internal static void InitSilentReport()
+        {
+            _silentReportLog = new StringBuilder();
+
+            _silentReportLog.AppendLine(Utilities.GetWindowsDetails());
+            _silentReportLog.AppendLine(string.Format("Optimizer {0} - .NET Framework {1} - Experimental build: {2}", Program.GetCurrentVersionTostring(), Utilities.GetNETFramework(), Program.EXPERIMENTAL_BUILD));
+
+            _silentReportLog.AppendLine();
+            _silentReportLog.AppendLine();
+        }
+
+        internal static void GenerateSilentReport()
+        {
+            try
+            {
+                File.WriteAllText("optimizer-silent-report.log", _silentReportLog.ToString());
+            }
+            catch { }
+        }
+
         internal static void LogError(string functionName, string errorMessage, string errorStackTrace)
         {
+            if (Program.SILENT_MODE)
+            {
+                LogErrorSilent(functionName, errorMessage, errorStackTrace);
+                return;
+            }
+
             try
             {
                 if (!File.Exists(ErrorLogFile) || (File.Exists(ErrorLogFile) && File.ReadAllText(ErrorLogFile).Trim() == string.Empty))

文件差異過大導致無法顯示
+ 132 - 127
Optimizer/Forms/MainForm.Designer.cs


+ 18 - 12
Optimizer/Forms/MainForm.cs

@@ -88,12 +88,6 @@ namespace Optimizer
         List<TreeNode> _hwDetailed;
         TreeNode[] _hwSummarized;
 
-        //Size _sizeDefault = new Size(1100, 784);
-        //Size _sizeRussian = new Size(1410, 784);
-        //Size _sizeHellenic = new Size(1125, 784);
-        //Size _sizeTurkish = new Size(1130, 784);
-        //Size _sizeFrench = new Size(1085, 784);
-
         bool _cleanSelectAll = true;
         List<string> _cleanPreviewList;
 
@@ -1044,11 +1038,24 @@ namespace Optimizer
                 picLab.Visible = true;
             }
 
-            LoadTranslationAndSetSize();
             //InitNetworkMonitoring();
+            LoadTranslation();
             EnableToggleEvents();
+        }
+
+        private void FixFormSize()
+        {
+            int desiredWidth = (tabCollection.ItemSize.Width * tabCollection.TabPages.Count) + (Program.DPI_PREFERENCE / 3);
+            int desiredHeight = Convert.ToInt32(desiredWidth / 1.5);
+
+            if (desiredWidth > this.Width)
+            {
+                this.Width = desiredWidth;
+                this.Height = desiredHeight;
+            }
 
-            this.WindowState = FormWindowState.Maximized;
+            this.MinimumSize = new Size(desiredWidth, desiredHeight);
+            this.CenterToScreen();
         }
 
         private void LoadReadyMenusState()
@@ -1138,7 +1145,7 @@ namespace Optimizer
             }
         }
 
-        private void LoadTranslationAndSetSize()
+        private void LoadTranslation()
         {
             if (Options.CurrentOptions.LanguageCode == LanguageCode.EN)
             {
@@ -2259,7 +2266,7 @@ namespace Optimizer
 
         private void Main_Load(object sender, EventArgs e)
         {
-
+            FixFormSize();
         }
 
         private void GetDesktopItems()
@@ -4362,12 +4369,11 @@ namespace Optimizer
                 Options.CurrentOptions.LanguageCode = LanguageCode.JA;
             }
 
-            this.CenterToScreen();
             Options.SaveSettings();
             Options.LoadTranslation();
             Translate();
 
-            optionsTab.Focus();
+            FixFormSize();
         }
 
         private void cleanDriveB_Click(object sender, EventArgs e)

+ 1 - 1
Optimizer/Forms/MainForm.resx

@@ -722,7 +722,7 @@ any application only by typing your desired keyword.</value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
         LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
         ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAC0
-        GgAAAk1TRnQBSQFMAgEBCQEAAUgBDgFIAQ4BIAEAASABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAGA
+        GgAAAk1TRnQBSQFMAgEBCQEAAWgBDgFoAQ4BIAEAASABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAGA
         AwABYAMAAQEBAAEgBgABwP8A/wD/AP8A/wD/AP8A/wAeAANHAYB0//8AiQADRwGAdP//AIkAAyoBQANH
         AYADRwGAA0cBgANHAYADRwGAA0cBgANHAYADRwGAA0cBgANHAYADRwGAA0cBgANHAYADRwGAA0cBgANH
         AYADRwGAA0cBgANHAYADRwGAA0cBgANHAYADRwGAA0cBgANHAYADRwGAA0cBgANHAYADRwGA/wD/AP8A

+ 0 - 1
Optimizer/PingerHelper.cs

@@ -4,7 +4,6 @@ using System.Linq;
 using System.Net;
 using System.Net.NetworkInformation;
 using System.Net.Sockets;
-using System.Windows.Forms;
 
 namespace Optimizer
 {

+ 15 - 10
Optimizer/Program.cs

@@ -17,6 +17,7 @@ namespace Optimizer
         internal readonly static float Minor = 3;
 
         internal readonly static bool EXPERIMENTAL_BUILD = false;
+        internal static bool SILENT_MODE = false;
         internal static int DPI_PREFERENCE;
 
         internal static string GetCurrentVersionTostring()
@@ -112,6 +113,12 @@ namespace Optimizer
                     return;
                 }
 
+                if (arg == "/repair")
+                {
+                    Utilities.Repair(true);
+                    return;
+                }
+
                 if (arg == "/disablehpet")
                 {
                     Utilities.DisableHPET();
@@ -149,12 +156,6 @@ namespace Optimizer
                     return;
                 }
 
-                if (arg == "/repair")
-                {
-                    Utilities.Repair(true);
-                    return;
-                }
-
                 if (arg == "/version")
                 {
                     if (!EXPERIMENTAL_BUILD) MessageBox.Show($"Optimizer: {GetCurrentVersionTostring()}\n\nCoded by: deadmoon © ∞\n\nhttps://github.com/hellzerg/optimizer", "Optimizer", MessageBoxButtons.OK, MessageBoxIcon.Information);
@@ -163,7 +164,6 @@ namespace Optimizer
                     Environment.Exit(0);
                     return;
                 }
-
                 // instruct to restart in safe-mode
                 if (arg == "/restart=safemode")
                 {
@@ -211,6 +211,7 @@ namespace Optimizer
                     return;
                 }
 
+
                 // other options for disabling specific tools
                 if (arg.StartsWith("/disable="))
                 {
@@ -258,8 +259,9 @@ namespace Optimizer
                         Environment.Exit(0);
                         return;
                     }
+                    SILENT_MODE = true;
                     LoadSettings();
-                    //SilentOps.ProcessAllActions();
+                    SilentOps.ProcessAllActions();
                     Options.SaveSettings();
                 }
             }
@@ -281,8 +283,11 @@ namespace Optimizer
                 if (!File.Exists(Options.SettingsFile))
                 {
                     Options.LoadSettings();
-                    FirstRunForm frf = new FirstRunForm();
-                    frf.ShowDialog();
+                    if (!SILENT_MODE)
+                    {
+                        FirstRunForm frf = new FirstRunForm();
+                        frf.ShowDialog();
+                    }
                 }
                 else
                 {

+ 17 - 7
Optimizer/SilentConfig.cs

@@ -30,14 +30,27 @@ namespace Optimizer
         [JsonProperty("Integrator", NullValueHandling = NullValueHandling.Ignore)]
         public Integrator Integrator { get; set; }
 
+        [JsonProperty("Tweaks", NullValueHandling = NullValueHandling.Ignore)]
+        public Tweaks Tweaks { get; set; }
+
+        [JsonProperty("AdvancedTweaks", NullValueHandling = NullValueHandling.Ignore)]
+        public AdvancedTweaks AdvancedTweaks { get; set; }
+    }
+
+    [Serializable]
+    public sealed class AdvancedTweaks
+    {
+        [JsonProperty("DisableHPET", NullValueHandling = NullValueHandling.Ignore)]
+        public bool? DisableHPET { get; set; }
+
+        [JsonProperty("EnableLoginVerbose", NullValueHandling = NullValueHandling.Ignore)]
+        public bool? EnableLoginVerbose { get; set; }
+
         [JsonProperty("UnlockAllCores", NullValueHandling = NullValueHandling.Ignore)]
         public bool? UnlockAllCores { get; set; }
 
         [JsonProperty("SvchostProcessSplitting", NullValueHandling = NullValueHandling.Ignore)]
         public SvchostProcessSplitting SvchostProcessSplitting { get; set; }
-
-        [JsonProperty("Tweaks", NullValueHandling = NullValueHandling.Ignore)]
-        public Tweaks Tweaks { get; set; }
     }
 
     [Serializable]
@@ -255,9 +268,6 @@ namespace Optimizer
         public bool? DisableTPMCheck { get; set; }
         public bool? CompactMode { get; set; }
         public bool? DisableStickers { get; set; }
-        public bool? DisableVBS { get; set; }
-
-        public bool? DisableHPET { get; set; }
-        public bool? EnableLoginVerbose { get; set; }
+        public bool? DisableVirtualizationBasedTechnology { get; set; }
     }
 }

+ 160 - 78
Optimizer/SilentOps.cs

@@ -2,6 +2,7 @@
 using System;
 using System.IO;
 using System.Linq;
+using System.Windows.Forms;
 
 namespace Optimizer
 {
@@ -25,33 +26,42 @@ namespace Optimizer
 
         internal static void ProcessAllActions()
         {
+            ErrorLogger.InitSilentReport();
+
             if (Utilities.CurrentWindowsVersion == WindowsVersion.Windows7)
             {
                 ProcessTweaksGeneral();
+                ErrorLogger.LogInfoSilent("Tweaks | Windows 7");
             }
             if (Utilities.CurrentWindowsVersion == WindowsVersion.Windows8)
             {
                 ProcessTweaksGeneral();
                 ProcessTweaksWindows8();
+                ErrorLogger.LogInfoSilent("Tweaks | Windows 8.1");
             }
             if (Utilities.CurrentWindowsVersion == WindowsVersion.Windows10)
             {
                 ProcessTweaksGeneral();
                 ProcessTweaksWindows10();
+                ErrorLogger.LogInfoSilent("Tweaks | Windows 10");
             }
             if (Utilities.CurrentWindowsVersion == WindowsVersion.Windows11)
             {
                 ProcessTweaksGeneral();
+                ProcessTweaksWindows10();
                 ProcessTweaksWindows11();
+                ErrorLogger.LogInfoSilent("Tweaks | Windows 11");
             }
 
+            ProcessAdvancedTweaks();
             ProcessHosts();
             ProcessPinger();
             ProcessProcessControl();
             ProcessIntegrator();
-            ProcessAdvanced();
             ProcessRegistryFix();
             ProcessCleaner();
+            ErrorLogger.GenerateSilentReport();
+
             ProcessPostAction();
         }
 
@@ -90,46 +100,40 @@ namespace Optimizer
 
         internal static void ProcessCleaner()
         {
-            try
-            {
-                if (CurrentSilentConfig.Cleaner.TempFiles.HasValue && CurrentSilentConfig.Cleaner.TempFiles.Value) CleanHelper.PreviewTemp();
-                if (CurrentSilentConfig.Cleaner.BsodDumps.HasValue && CurrentSilentConfig.Cleaner.BsodDumps.Value) CleanHelper.PreviewMinidumps();
-                if (CurrentSilentConfig.Cleaner.ErrorReports.HasValue && CurrentSilentConfig.Cleaner.ErrorReports.Value) CleanHelper.PreviewErrorReports();
-                if (CurrentSilentConfig.Cleaner.InternetExplorer.HasValue && CurrentSilentConfig.Cleaner.InternetExplorer.Value) CleanHelper.PreviewInternetExplorerCache();
-
-                bool chromeCache = (CurrentSilentConfig.Cleaner.GoogleChrome.Cache.HasValue) ? CurrentSilentConfig.Cleaner.GoogleChrome.Cache.Value : false;
-                bool chromeCookies = (CurrentSilentConfig.Cleaner.GoogleChrome.Cookies.HasValue) ? CurrentSilentConfig.Cleaner.GoogleChrome.Cookies.Value : false;
-                bool chromeHistory = (CurrentSilentConfig.Cleaner.GoogleChrome.History.HasValue) ? CurrentSilentConfig.Cleaner.GoogleChrome.History.Value : false;
-                bool chromeSession = (CurrentSilentConfig.Cleaner.GoogleChrome.Session.HasValue) ? CurrentSilentConfig.Cleaner.GoogleChrome.Session.Value : false;
-                bool chromePasswords = (CurrentSilentConfig.Cleaner.GoogleChrome.Passwords.HasValue) ? CurrentSilentConfig.Cleaner.GoogleChrome.Passwords.Value : false;
-
-                bool ffCache = (CurrentSilentConfig.Cleaner.MozillaFirefox.Cache.HasValue) ? CurrentSilentConfig.Cleaner.MozillaFirefox.Cache.Value : false;
-                bool ffCookies = (CurrentSilentConfig.Cleaner.MozillaFirefox.Cookies.HasValue) ? CurrentSilentConfig.Cleaner.MozillaFirefox.Cookies.Value : false;
-                bool ffHistory = (CurrentSilentConfig.Cleaner.MozillaFirefox.History.HasValue) ? CurrentSilentConfig.Cleaner.MozillaFirefox.History.Value : false;
-
-                bool braveCache = (CurrentSilentConfig.Cleaner.BraveBrowser.Cache.HasValue) ? CurrentSilentConfig.Cleaner.BraveBrowser.Cache.Value : false;
-                bool braveCookies = (CurrentSilentConfig.Cleaner.BraveBrowser.Cookies.HasValue) ? CurrentSilentConfig.Cleaner.BraveBrowser.Cookies.Value : false;
-                bool braveHistory = (CurrentSilentConfig.Cleaner.BraveBrowser.History.HasValue) ? CurrentSilentConfig.Cleaner.BraveBrowser.History.Value : false;
-                bool braveSession = (CurrentSilentConfig.Cleaner.BraveBrowser.Session.HasValue) ? CurrentSilentConfig.Cleaner.BraveBrowser.Session.Value : false;
-                bool bravePasswords = (CurrentSilentConfig.Cleaner.BraveBrowser.Passwords.HasValue) ? CurrentSilentConfig.Cleaner.BraveBrowser.Passwords.Value : false;
-
-                bool edgeCache = (CurrentSilentConfig.Cleaner.MicrosoftEdge.Cache.HasValue) ? CurrentSilentConfig.Cleaner.MicrosoftEdge.Cache.Value : false;
-                bool edgeCookies = (CurrentSilentConfig.Cleaner.MicrosoftEdge.Cookies.HasValue) ? CurrentSilentConfig.Cleaner.MicrosoftEdge.Cookies.Value : false;
-                bool edgeHistory = (CurrentSilentConfig.Cleaner.MicrosoftEdge.History.HasValue) ? CurrentSilentConfig.Cleaner.MicrosoftEdge.History.Value : false;
-                bool edgeSession = (CurrentSilentConfig.Cleaner.MicrosoftEdge.Session.HasValue) ? CurrentSilentConfig.Cleaner.MicrosoftEdge.Session.Value : false;
-
-                CleanHelper.PreviewChromeClean(chromeCache, chromeCookies, chromeHistory, chromeSession, chromePasswords);
-                CleanHelper.PreviewFireFoxClean(ffCache, ffCookies, ffHistory);
-                CleanHelper.PreviewEdgeClean(edgeCache, edgeCookies, edgeHistory, edgeSession);
-                CleanHelper.PreviewBraveClean(braveCache, braveCookies, braveHistory, braveSession, bravePasswords);
-
-                CleanHelper.Clean();
-                if (CurrentSilentConfig.Cleaner.RecycleBin.HasValue && CurrentSilentConfig.Cleaner.RecycleBin.Value) CleanHelper.EmptyRecycleBin();
-            }
-            catch (Exception ex)
-            {
-                ErrorLogger.LogError("MainForm.CleanPC", ex.Message, ex.StackTrace);
-            }
+            if (CurrentSilentConfig.Cleaner.TempFiles.HasValue && CurrentSilentConfig.Cleaner.TempFiles.Value) CleanHelper.PreviewTemp();
+            if (CurrentSilentConfig.Cleaner.BsodDumps.HasValue && CurrentSilentConfig.Cleaner.BsodDumps.Value) CleanHelper.PreviewMinidumps();
+            if (CurrentSilentConfig.Cleaner.ErrorReports.HasValue && CurrentSilentConfig.Cleaner.ErrorReports.Value) CleanHelper.PreviewErrorReports();
+            if (CurrentSilentConfig.Cleaner.InternetExplorer.HasValue && CurrentSilentConfig.Cleaner.InternetExplorer.Value) CleanHelper.PreviewInternetExplorerCache();
+
+            bool chromeCache = (CurrentSilentConfig.Cleaner.GoogleChrome.Cache.HasValue) ? CurrentSilentConfig.Cleaner.GoogleChrome.Cache.Value : false;
+            bool chromeCookies = (CurrentSilentConfig.Cleaner.GoogleChrome.Cookies.HasValue) ? CurrentSilentConfig.Cleaner.GoogleChrome.Cookies.Value : false;
+            bool chromeHistory = (CurrentSilentConfig.Cleaner.GoogleChrome.History.HasValue) ? CurrentSilentConfig.Cleaner.GoogleChrome.History.Value : false;
+            bool chromeSession = (CurrentSilentConfig.Cleaner.GoogleChrome.Session.HasValue) ? CurrentSilentConfig.Cleaner.GoogleChrome.Session.Value : false;
+            bool chromePasswords = (CurrentSilentConfig.Cleaner.GoogleChrome.Passwords.HasValue) ? CurrentSilentConfig.Cleaner.GoogleChrome.Passwords.Value : false;
+
+            bool ffCache = (CurrentSilentConfig.Cleaner.MozillaFirefox.Cache.HasValue) ? CurrentSilentConfig.Cleaner.MozillaFirefox.Cache.Value : false;
+            bool ffCookies = (CurrentSilentConfig.Cleaner.MozillaFirefox.Cookies.HasValue) ? CurrentSilentConfig.Cleaner.MozillaFirefox.Cookies.Value : false;
+            bool ffHistory = (CurrentSilentConfig.Cleaner.MozillaFirefox.History.HasValue) ? CurrentSilentConfig.Cleaner.MozillaFirefox.History.Value : false;
+
+            bool braveCache = (CurrentSilentConfig.Cleaner.BraveBrowser.Cache.HasValue) ? CurrentSilentConfig.Cleaner.BraveBrowser.Cache.Value : false;
+            bool braveCookies = (CurrentSilentConfig.Cleaner.BraveBrowser.Cookies.HasValue) ? CurrentSilentConfig.Cleaner.BraveBrowser.Cookies.Value : false;
+            bool braveHistory = (CurrentSilentConfig.Cleaner.BraveBrowser.History.HasValue) ? CurrentSilentConfig.Cleaner.BraveBrowser.History.Value : false;
+            bool braveSession = (CurrentSilentConfig.Cleaner.BraveBrowser.Session.HasValue) ? CurrentSilentConfig.Cleaner.BraveBrowser.Session.Value : false;
+            bool bravePasswords = (CurrentSilentConfig.Cleaner.BraveBrowser.Passwords.HasValue) ? CurrentSilentConfig.Cleaner.BraveBrowser.Passwords.Value : false;
+
+            bool edgeCache = (CurrentSilentConfig.Cleaner.MicrosoftEdge.Cache.HasValue) ? CurrentSilentConfig.Cleaner.MicrosoftEdge.Cache.Value : false;
+            bool edgeCookies = (CurrentSilentConfig.Cleaner.MicrosoftEdge.Cookies.HasValue) ? CurrentSilentConfig.Cleaner.MicrosoftEdge.Cookies.Value : false;
+            bool edgeHistory = (CurrentSilentConfig.Cleaner.MicrosoftEdge.History.HasValue) ? CurrentSilentConfig.Cleaner.MicrosoftEdge.History.Value : false;
+            bool edgeSession = (CurrentSilentConfig.Cleaner.MicrosoftEdge.Session.HasValue) ? CurrentSilentConfig.Cleaner.MicrosoftEdge.Session.Value : false;
+
+            CleanHelper.PreviewChromeClean(chromeCache, chromeCookies, chromeHistory, chromeSession, chromePasswords);
+            CleanHelper.PreviewFireFoxClean(ffCache, ffCookies, ffHistory);
+            CleanHelper.PreviewEdgeClean(edgeCache, edgeCookies, edgeHistory, edgeSession);
+            CleanHelper.PreviewBraveClean(braveCache, braveCookies, braveHistory, braveSession, bravePasswords);
+
+            CleanHelper.Clean();
+            if (CurrentSilentConfig.Cleaner.RecycleBin.HasValue && CurrentSilentConfig.Cleaner.RecycleBin.Value) CleanHelper.EmptyRecycleBin();
+            ErrorLogger.LogInfoSilent($"Cleaner | Options");
         }
 
         internal static void ProcessHosts()
@@ -140,10 +144,12 @@ namespace Optimizer
             foreach (AddHostsEntry x in addList)
             {
                 HostsHelper.AddEntry(HostsHelper.SanitizeEntry(x.IpAddress) + " " + HostsHelper.SanitizeEntry(x.Domain), x.Comment);
+                ErrorLogger.LogInfoSilent($"Hosts | Add entry: {x.IpAddress} {x.Domain}");
             }
             foreach (string x in blockList)
             {
                 HostsHelper.AddEntry("0.0.0.0 " + HostsHelper.SanitizeEntry(x));
+                ErrorLogger.LogInfoSilent($"Hosts | Block entry: {x}");
             }
         }
 
@@ -188,11 +194,13 @@ namespace Optimizer
                 {
                     PingerHelper.SetDNSForAllNICs(PingerHelper.CleanBrowsingAdultDNSv4, PingerHelper.CleanBrowsingAdultDNSv6);
                 }
+                ErrorLogger.LogInfoSilent($"Pinger | Set DNS to: {dns}");
             }
             if (CurrentSilentConfig.Pinger.FlushDnsCache.HasValue &&
                 CurrentSilentConfig.Pinger.FlushDnsCache.Value == true)
             {
                 PingerHelper.FlushDNSCache();
+                ErrorLogger.LogInfoSilent($"Pinger | Flush DNS cache");
             }
         }
 
@@ -204,10 +212,12 @@ namespace Optimizer
             foreach (string x in allowList)
             {
                 Utilities.AllowProcessToRun(x);
+                ErrorLogger.LogInfoSilent($"ProcessControl | Allow process: {x}");
             }
             foreach (string x in blockList)
             {
                 Utilities.PreventProcessFromRunning(x);
+                ErrorLogger.LogInfoSilent($"ProcessControl | Prevent process: {x}");
             }
         }
 
@@ -217,41 +227,49 @@ namespace Optimizer
                 CurrentSilentConfig.RegistryFix.TaskManager.Value == true)
             {
                 Utilities.EnableTaskManager();
+                ErrorLogger.LogInfoSilent($"RegistryFix | EnableTaskManager");
             }
             if (CurrentSilentConfig.RegistryFix.CommandPrompt.HasValue &&
                 CurrentSilentConfig.RegistryFix.CommandPrompt.Value == true)
             {
                 Utilities.EnableCommandPrompt();
+                ErrorLogger.LogInfoSilent($"RegistryFix | EnableCommandPrompt");
             }
             if (CurrentSilentConfig.RegistryFix.ControlPanel.HasValue &&
                 CurrentSilentConfig.RegistryFix.ControlPanel.Value == true)
             {
                 Utilities.EnableControlPanel();
+                ErrorLogger.LogInfoSilent($"RegistryFix | EnableControlPanel");
             }
             if (CurrentSilentConfig.RegistryFix.FolderOptions.HasValue &&
                 CurrentSilentConfig.RegistryFix.FolderOptions.Value == true)
             {
                 Utilities.EnableFolderOptions();
+                ErrorLogger.LogInfoSilent($"RegistryFix | EnableFolderOptions");
             }
             if (CurrentSilentConfig.RegistryFix.RunDialog.HasValue &&
                 CurrentSilentConfig.RegistryFix.RunDialog.Value == true)
             {
                 Utilities.EnableRunDialog();
+                ErrorLogger.LogInfoSilent($"RegistryFix | EnableRunDialog");
             }
             if (CurrentSilentConfig.RegistryFix.RightClickMenu.HasValue &&
                 CurrentSilentConfig.RegistryFix.RightClickMenu.Value == true)
             {
                 Utilities.EnableContextMenu();
+                ErrorLogger.LogInfoSilent($"RegistryFix | EnableContextMenu");
             }
             if (CurrentSilentConfig.RegistryFix.WindowsFirewall.HasValue &&
                 CurrentSilentConfig.RegistryFix.WindowsFirewall.Value == true)
             {
                 Utilities.EnableFirewall();
+                ErrorLogger.LogInfoSilent($"RegistryFix | EnableFirewall");
             }
             if (CurrentSilentConfig.RegistryFix.RegistryEditor.HasValue &&
                 CurrentSilentConfig.RegistryFix.RegistryEditor.Value == true)
             {
                 Utilities.EnableRegistryEditor();
+                ErrorLogger.LogInfoSilent($"RegistryFix | EnableRegistryEditor");
             }
         }
 
@@ -262,43 +280,74 @@ namespace Optimizer
                 if (CurrentSilentConfig.Integrator.OpenWithCmd.Value)
                 {
                     IntegratorHelper.InstallOpenWithCMD();
+                    ErrorLogger.LogInfoSilent($"Integrator | InstallOpenWithCMD");
                 }
                 else
                 {
                     IntegratorHelper.DeleteOpenWithCMD();
+                    ErrorLogger.LogInfoSilent($"Integrator | DeleteOpenWithCMD");
                 }
             }
             if (CurrentSilentConfig.Integrator.TakeOwnership.HasValue)
             {
                 IntegratorHelper.InstallTakeOwnership(!CurrentSilentConfig.Integrator.TakeOwnership.Value);
+                ErrorLogger.LogInfoSilent($"Integrator | TakeOwnership to {CurrentSilentConfig.Integrator.TakeOwnership.Value}");
             }
         }
 
-        internal static void ProcessAdvanced()
+        internal static void ProcessAdvancedTweaks()
         {
-            if (CurrentSilentConfig.UnlockAllCores.HasValue &&
-                CurrentSilentConfig.UnlockAllCores.Value == true)
+            if (CurrentSilentConfig.AdvancedTweaks.UnlockAllCores.HasValue &&
+                CurrentSilentConfig.AdvancedTweaks.UnlockAllCores.Value == true)
             {
                 Utilities.UnlockAllCores();
+                ErrorLogger.LogInfoSilent("AdvancedTweaks | UnlockAllCores");
             }
 
-            if (CurrentSilentConfig.SvchostProcessSplitting.Disable.HasValue)
+            if (CurrentSilentConfig.AdvancedTweaks.SvchostProcessSplitting.Disable.HasValue)
             {
-                if (CurrentSilentConfig.SvchostProcessSplitting.Disable.Value &&
-                    CurrentSilentConfig.SvchostProcessSplitting.Ram.HasValue &&
-                    CurrentSilentConfig.SvchostProcessSplitting.Ram > 0)
+                if (CurrentSilentConfig.AdvancedTweaks.SvchostProcessSplitting.Disable.Value &&
+                    CurrentSilentConfig.AdvancedTweaks.SvchostProcessSplitting.Ram.HasValue &&
+                    CurrentSilentConfig.AdvancedTweaks.SvchostProcessSplitting.Ram > 0)
                 {
-                    Utilities.DisableSvcHostProcessSplitting(CurrentSilentConfig.SvchostProcessSplitting.Ram.Value);
+                    Utilities.DisableSvcHostProcessSplitting(CurrentSilentConfig.AdvancedTweaks.SvchostProcessSplitting.Ram.Value);
+                    ErrorLogger.LogInfoSilent($"AdvancedTweaks | DisableSvcHostProcessSplitting | RAM capacity: {CurrentSilentConfig.AdvancedTweaks.SvchostProcessSplitting.Ram.Value} GB");
                 }
                 else
                 {
                     Utilities.EnableSvcHostProcessSplitting();
+                    ErrorLogger.LogInfoSilent("AdvancedTweaks | EnableSvcHostProcessSplitting");
+                }
+            }
+
+            if (CurrentSilentConfig.AdvancedTweaks.DisableHPET.HasValue)
+            {
+                if (CurrentSilentConfig.AdvancedTweaks.DisableHPET.Value)
+                {
+                    Utilities.DisableHPET();
                 }
+                else
+                {
+                    Utilities.EnableHPET();
+                }
+                Options.CurrentOptions.DisableHPET = CurrentSilentConfig.AdvancedTweaks.DisableHPET.Value;
+            }
+
+            if (CurrentSilentConfig.AdvancedTweaks.EnableLoginVerbose.HasValue)
+            {
+                if (CurrentSilentConfig.AdvancedTweaks.EnableLoginVerbose.Value)
+                {
+                    Utilities.EnableLoginVerbose();
+                }
+                else
+                {
+                    Utilities.DisableLoginVerbose();
+                }
+                Options.CurrentOptions.EnableLoginVerbose = CurrentSilentConfig.AdvancedTweaks.EnableLoginVerbose.Value;
             }
         }
 
 
-        // TODO: Map all values to settings.json for consistency
         #region General Tweaks
         internal static void ProcessTweaksGeneral()
         {
@@ -338,6 +387,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableDefender();
                 }
+                Options.CurrentOptions.DisableWindowsDefender = CurrentSilentConfig.Tweaks.DisableWindowsDefender.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableSystemRestore.HasValue)
@@ -350,6 +400,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableSystemRestore();
                 }
+                Options.CurrentOptions.DisableSystemRestore = CurrentSilentConfig.Tweaks.DisableSystemRestore.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisablePrintService.HasValue)
@@ -362,6 +413,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnablePrintService();
                 }
+                Options.CurrentOptions.DisablePrintService = CurrentSilentConfig.Tweaks.DisablePrintService.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableMediaPlayerSharing.HasValue)
@@ -374,6 +426,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableMediaPlayerSharing();
                 }
+                Options.CurrentOptions.DisableMediaPlayerSharing = CurrentSilentConfig.Tweaks.DisableMediaPlayerSharing.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableErrorReporting.HasValue)
@@ -386,6 +439,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableErrorReporting();
                 }
+                Options.CurrentOptions.DisableErrorReporting = CurrentSilentConfig.Tweaks.DisableErrorReporting.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableHomeGroup.HasValue)
@@ -398,6 +452,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableHomeGroup();
                 }
+                Options.CurrentOptions.DisableHomeGroup = CurrentSilentConfig.Tweaks.DisableHomeGroup.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableSuperfetch.HasValue)
@@ -410,6 +465,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableSuperfetch();
                 }
+                Options.CurrentOptions.DisableSuperfetch = CurrentSilentConfig.Tweaks.DisableSuperfetch.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableTelemetryTasks.HasValue)
@@ -422,6 +478,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableTelemetryTasks();
                 }
+                Options.CurrentOptions.DisableTelemetryTasks = CurrentSilentConfig.Tweaks.DisableTelemetryTasks.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableOffice2016Telemetry.HasValue)
@@ -434,6 +491,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableOffice2016Telemetry();
                 }
+                Options.CurrentOptions.DisableOffice2016Telemetry = CurrentSilentConfig.Tweaks.DisableOffice2016Telemetry.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableCompatibilityAssistant.HasValue)
@@ -446,6 +504,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableCompatibilityAssistant();
                 }
+                Options.CurrentOptions.DisableCompatibilityAssistant = CurrentSilentConfig.Tweaks.DisableCompatibilityAssistant.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableFaxService.HasValue)
@@ -458,6 +517,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableFaxService();
                 }
+                Options.CurrentOptions.DisableFaxService = CurrentSilentConfig.Tweaks.DisableFaxService.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableSmartScreen.HasValue)
@@ -470,6 +530,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableSmartScreen();
                 }
+                Options.CurrentOptions.DisableSmartScreen = CurrentSilentConfig.Tweaks.DisableSmartScreen.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableStickyKeys.HasValue)
@@ -482,6 +543,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableStickyKeys();
                 }
+                Options.CurrentOptions.DisableStickyKeys = CurrentSilentConfig.Tweaks.DisableStickyKeys.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableHibernation.HasValue)
@@ -494,6 +556,7 @@ namespace Optimizer
                 {
                     Utilities.EnableHibernation();
                 }
+                Options.CurrentOptions.DisableHibernation = CurrentSilentConfig.Tweaks.DisableHibernation.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableSMB1.HasValue)
@@ -506,6 +569,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableSMB("1");
                 }
+                Options.CurrentOptions.DisableSMB1 = CurrentSilentConfig.Tweaks.DisableSMB1.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableSMB2.HasValue)
@@ -518,6 +582,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableSMB("2");
                 }
+                Options.CurrentOptions.DisableSMB2 = CurrentSilentConfig.Tweaks.DisableSMB2.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableNTFSTimeStamp.HasValue)
@@ -530,6 +595,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableNTFSTimeStamp();
                 }
+                Options.CurrentOptions.DisableNTFSTimeStamp = CurrentSilentConfig.Tweaks.DisableNTFSTimeStamp.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableSearch.HasValue)
@@ -542,6 +608,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableSearch();
                 }
+                Options.CurrentOptions.DisableSearch = CurrentSilentConfig.Tweaks.DisableSearch.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableChromeTelemetry.HasValue)
@@ -554,6 +621,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableChromeTelemetry();
                 }
+                Options.CurrentOptions.DisableChromeTelemetry = CurrentSilentConfig.Tweaks.DisableChromeTelemetry.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableFirefoxTemeletry.HasValue)
@@ -566,6 +634,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableFirefoxTelemetry();
                 }
+                Options.CurrentOptions.DisableFirefoxTemeletry = CurrentSilentConfig.Tweaks.DisableFirefoxTemeletry.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableVisualStudioTelemetry.HasValue)
@@ -578,6 +647,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableVisualStudioTelemetry();
                 }
+                Options.CurrentOptions.DisableVisualStudioTelemetry = CurrentSilentConfig.Tweaks.DisableVisualStudioTelemetry.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableNVIDIATelemetry.HasValue)
@@ -590,30 +660,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableNvidiaTelemetry();
                 }
-            }
-
-            if (CurrentSilentConfig.Tweaks.DisableHPET.HasValue)
-            {
-                if (CurrentSilentConfig.Tweaks.DisableHPET.Value)
-                {
-                    Utilities.DisableHPET();
-                }
-                else
-                {
-                    Utilities.EnableHPET();
-                }
-            }
-
-            if (CurrentSilentConfig.Tweaks.EnableLoginVerbose.HasValue)
-            {
-                if (CurrentSilentConfig.Tweaks.EnableLoginVerbose.Value)
-                {
-                    Utilities.EnableLoginVerbose();
-                }
-                else
-                {
-                    Utilities.DisableLoginVerbose();
-                }
+                Options.CurrentOptions.DisableNVIDIATelemetry = CurrentSilentConfig.Tweaks.DisableNVIDIATelemetry.Value;
             }
         }
         #endregion
@@ -631,6 +678,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableOneDrive();
                 }
+                Options.CurrentOptions.DisableOneDrive = CurrentSilentConfig.Tweaks.DisableOneDrive.Value;
             }
         }
         #endregion
@@ -648,6 +696,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.DisableGamingMode();
                 }
+                Options.CurrentOptions.EnableGamingMode = CurrentSilentConfig.Tweaks.EnableGamingMode.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.EnableLegacyVolumeSlider.HasValue)
@@ -660,6 +709,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.DisableLegacyVolumeSlider();
                 }
+                Options.CurrentOptions.EnableLegacyVolumeSlider = CurrentSilentConfig.Tweaks.EnableLegacyVolumeSlider.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableQuickAccessHistory.HasValue)
@@ -672,6 +722,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableQuickAccessHistory();
                 }
+                Options.CurrentOptions.DisableQuickAccessHistory = CurrentSilentConfig.Tweaks.DisableQuickAccessHistory.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableStartMenuAds.HasValue)
@@ -684,6 +735,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableStartMenuAds();
                 }
+                Options.CurrentOptions.DisableStartMenuAds = CurrentSilentConfig.Tweaks.DisableStartMenuAds.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.UninstallOneDrive.HasValue)
@@ -696,6 +748,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.InstallOneDrive();
                 }
+                Options.CurrentOptions.UninstallOneDrive = CurrentSilentConfig.Tweaks.UninstallOneDrive.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableMyPeople.HasValue)
@@ -708,6 +761,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableMyPeople();
                 }
+                Options.CurrentOptions.DisableMyPeople = CurrentSilentConfig.Tweaks.DisableMyPeople.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.EnableLongPaths.HasValue)
@@ -720,6 +774,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.DisableLongPaths();
                 }
+                Options.CurrentOptions.EnableLongPaths = CurrentSilentConfig.Tweaks.EnableLongPaths.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableAutomaticUpdates.HasValue)
@@ -732,6 +787,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableAutomaticUpdates();
                 }
+                Options.CurrentOptions.DisableAutomaticUpdates = CurrentSilentConfig.Tweaks.DisableAutomaticUpdates.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.ExcludeDrivers.HasValue)
@@ -744,6 +800,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.IncludeDrivers();
                 }
+                Options.CurrentOptions.ExcludeDrivers = CurrentSilentConfig.Tweaks.ExcludeDrivers.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableTelemetryServices.HasValue)
@@ -756,6 +813,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableTelemetryServices();
                 }
+                Options.CurrentOptions.DisableTelemetryServices = CurrentSilentConfig.Tweaks.DisableTelemetryServices.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisablePrivacyOptions.HasValue)
@@ -768,6 +826,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.CompromisePrivacy();
                 }
+                Options.CurrentOptions.DisablePrivacyOptions = CurrentSilentConfig.Tweaks.DisablePrivacyOptions.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableCortana.HasValue)
@@ -780,6 +839,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableCortana();
                 }
+                Options.CurrentOptions.DisableCortana = CurrentSilentConfig.Tweaks.DisableCortana.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableSensorServices.HasValue)
@@ -792,6 +852,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableSensorServices();
                 }
+                Options.CurrentOptions.DisableSensorServices = CurrentSilentConfig.Tweaks.DisableSensorServices.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableWindowsInk.HasValue)
@@ -804,6 +865,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableWindowsInk();
                 }
+                Options.CurrentOptions.DisableWindowsInk = CurrentSilentConfig.Tweaks.DisableWindowsInk.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableSpellingTyping.HasValue)
@@ -816,6 +878,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableSpellingAndTypingFeatures();
                 }
+                Options.CurrentOptions.DisableSpellingTyping = CurrentSilentConfig.Tweaks.DisableSpellingTyping.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableXboxLive.HasValue)
@@ -828,6 +891,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableXboxLive();
                 }
+                Options.CurrentOptions.DisableXboxLive = CurrentSilentConfig.Tweaks.DisableXboxLive.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableGameBar.HasValue)
@@ -840,6 +904,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableGameBar();
                 }
+                Options.CurrentOptions.DisableGameBar = CurrentSilentConfig.Tweaks.DisableGameBar.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableInsiderService.HasValue)
@@ -852,6 +917,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableInsiderService();
                 }
+                Options.CurrentOptions.DisableInsiderService = CurrentSilentConfig.Tweaks.DisableInsiderService.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableStoreUpdates.HasValue)
@@ -864,6 +930,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableStoreUpdates();
                 }
+                Options.CurrentOptions.DisableStoreUpdates = CurrentSilentConfig.Tweaks.DisableStoreUpdates.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableCloudClipboard.HasValue)
@@ -876,6 +943,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableCloudClipboard();
                 }
+                Options.CurrentOptions.DisableCloudClipboard = CurrentSilentConfig.Tweaks.DisableCloudClipboard.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.RemoveCastToDevice.HasValue)
@@ -888,6 +956,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.AddCastToDevice();
                 }
+                Options.CurrentOptions.RemoveCastToDevice = CurrentSilentConfig.Tweaks.RemoveCastToDevice.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableEdgeTelemetry.HasValue)
@@ -900,6 +969,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableEdgeTelemetry();
                 }
+                Options.CurrentOptions.DisableEdgeTelemetry = CurrentSilentConfig.Tweaks.DisableEdgeTelemetry.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableEdgeDiscoverBar.HasValue)
@@ -912,6 +982,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableEdgeDiscoverBar();
                 }
+                Options.CurrentOptions.DisableEdgeDiscoverBar = CurrentSilentConfig.Tweaks.DisableEdgeDiscoverBar.Value;
             }
         }
         #endregion
@@ -929,6 +1000,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.AlignTaskbarToCenter();
                 }
+                Options.CurrentOptions.TaskbarToLeft = CurrentSilentConfig.Tweaks.TaskbarToLeft.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableStickers.HasValue)
@@ -941,6 +1013,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableStickers();
                 }
+                Options.CurrentOptions.DisableStickers = CurrentSilentConfig.Tweaks.DisableStickers.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.CompactMode.HasValue)
@@ -953,6 +1026,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.DisableFilesCompactMode();
                 }
+                Options.CurrentOptions.CompactMode = CurrentSilentConfig.Tweaks.CompactMode.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableSnapAssist.HasValue)
@@ -965,6 +1039,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableSnapAssist();
                 }
+                Options.CurrentOptions.DisableSnapAssist = CurrentSilentConfig.Tweaks.DisableSnapAssist.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableWidgets.HasValue)
@@ -977,6 +1052,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableWidgets();
                 }
+                Options.CurrentOptions.DisableWidgets = CurrentSilentConfig.Tweaks.DisableWidgets.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableChat.HasValue)
@@ -989,18 +1065,22 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableChat();
                 }
+                Options.CurrentOptions.DisableChat = CurrentSilentConfig.Tweaks.DisableChat.Value;
             }
 
-            if (CurrentSilentConfig.Tweaks.DisableVBS.HasValue)
+            if (CurrentSilentConfig.Tweaks.DisableVirtualizationBasedTechnology.HasValue)
             {
-                if (CurrentSilentConfig.Tweaks.DisableVBS.Value)
+                if (CurrentSilentConfig.Tweaks.DisableVirtualizationBasedTechnology.Value)
                 {
-                    OptimizeHelper.DisableVirtualizationBasedSecurity();
+                    MessageBox.Show("no vbs");
+                   // OptimizeHelper.DisableVirtualizationBasedSecurity();
                 }
                 else
                 {
-                    OptimizeHelper.EnableVirtualizationBasedSecurity();
+                    MessageBox.Show("OK vbs");
+                    //OptimizeHelper.EnableVirtualizationBasedSecurity();
                 }
+                Options.CurrentOptions.DisableVBS = CurrentSilentConfig.Tweaks.DisableVirtualizationBasedTechnology.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.ClassicMenu.HasValue)
@@ -1013,6 +1093,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableShowMoreOptions();
                 }
+                Options.CurrentOptions.ClassicMenu = CurrentSilentConfig.Tweaks.ClassicMenu.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableTPMCheck.HasValue)
@@ -1025,6 +1106,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableTPMCheck();
                 }
+                Options.CurrentOptions.DisableTPMCheck = CurrentSilentConfig.Tweaks.DisableTPMCheck.Value;
             }
         }
         #endregion

+ 29 - 5
Optimizer/Utilities.cs

@@ -680,7 +680,14 @@ namespace Optimizer
 
         internal static void EnableLoginVerbose()
         {
-            Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "verbosestatus", 1, RegistryValueKind.DWord);
+            try
+            {
+                Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", "verbosestatus", 1, RegistryValueKind.DWord);
+            }
+            catch (Exception ex)
+            {
+                ErrorLogger.LogError("Utilities.EnableLoginVerbose", ex.Message, ex.StackTrace);
+            }
         }
 
         internal static void DisableLoginVerbose()
@@ -696,20 +703,37 @@ namespace Optimizer
                 Registry.SetValue(@"HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\0cc5b647-c1df-4637-891a-dec35c318583", "ValueMax", 0, RegistryValueKind.DWord);
                 Registry.SetValue(@"HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\PowerSettings\54533251-82be-4824-96c1-47b60b740d00\0cc5b647-c1df-4637-891a-dec35c318583", "ValueMin", 0, RegistryValueKind.DWord);
             }
-            catch { }
+            catch (Exception ex)
+            {
+                ErrorLogger.LogError("Utilities.UnlockAllCores", ex.Message, ex.StackTrace);
+            }
         }
 
         // value = RAM in GB * 1024 * 1024
         internal static void DisableSvcHostProcessSplitting(int ramInGb)
         {
-            ramInGb = ramInGb * 1024 * 1024;
-            Registry.SetValue(@"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control", "SvcHostSplitThresholdInKB", ramInGb, RegistryValueKind.DWord);
+            try
+            {
+                ramInGb = ramInGb * 1024 * 1024;
+                Registry.SetValue(@"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control", "SvcHostSplitThresholdInKB", ramInGb, RegistryValueKind.DWord);
+            }
+            catch (Exception ex)
+            {
+                ErrorLogger.LogError("Utilities.DisableSvcHostProcessSplitting", ex.Message, ex.StackTrace);
+            }
         }
 
         // reset the value to default
         internal static void EnableSvcHostProcessSplitting()
         {
-            Registry.SetValue(@"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control", "SvcHostSplitThresholdInKB", 380000, RegistryValueKind.DWord);
+            try
+            {
+                Registry.SetValue(@"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control", "SvcHostSplitThresholdInKB", 380000, RegistryValueKind.DWord);
+            }
+            catch (Exception ex)
+            {
+                ErrorLogger.LogError("Utilities.EnableSvcHostProcessSplitting", ex.Message, ex.StackTrace);
+            }
         }
 
         internal static void DisableHPET()

+ 11 - 5
README.md

@@ -3,7 +3,7 @@
 </p>
 
 <p align="center">
-	<a href="https://github.com/hellzerg/optimizer/releases/download/15.2/Optimizer-15.2.exe" target="_blank">
+	<a href="https://github.com/hellzerg/optimizer/releases/download/15.3/Optimizer-15.3.exe" target="_blank">
 		<img src="https://raw.githubusercontent.com/hellzerg/optimizer/master/download-button.png">
 		<br>
 		<img src="https://raw.githubusercontent.com/hellzerg/optimizer/master/flags.png">
@@ -60,7 +60,13 @@ Execute Optimizer with `/restart=disabledefender` switch and let it do the rest
 
 <hr>
 
-### 🔨 Command-line options and silent configuration files:
+### 🔨 Automation using templating:
+
+https://github.com/hellzerg/optimizer/blob/master/TEMPLATING.md
+
+<hr>
+
+### 🔨 Command-line options:
 
 https://github.com/hellzerg/optimizer/blob/master/CONFS.md
 
@@ -100,9 +106,9 @@ https://github.com/hellzerg/optimizer/blob/master/LEGACY.md
 
 ### 📊 Details:
 
-- Latest version: 15.2
-- Released: May 11, 2023
-- SHA256: 1CF55C700098699732ECB2D658E6B236F1207D6D4D446AE196EEA30A8BD49751
+- Latest version: 15.3
+- Released: May 18, 2023
+- SHA256: 0F225C69528A10E2E4616BF00CB5164B8A010F630D774AC2989916D477CF75FD
 
 <hr>
 

+ 84 - 0
TEMPLATING.md

@@ -0,0 +1,84 @@
+## You can execute Optimizer silently, automating a range of operations based on a template. ##
+
+Download the template file and edit it accordingly.
+Then, execute it like this: ```optimizer.exe /config=template.json```
+
+### Download the template: ###
+https://github.com/hellzerg/optimizer/blob/master/templates/optimizer-template.json
+
+#### WindowsVersion (required) ####
+* Should match your actual Windows version. Available values: ```7 | 8 | 10 | 11```
+
+#### Cleaner ####
+* Choose which target folder you wish to clean by marking ```true```
+
+#### Pinger ####
+* Choose your desired DNS provider.
+* Available values: ```Automatic | Cloudflare | OpenDNS | Quad9 | Google | AlternateDNS | Adguard | CleanBrowsing | CleanBrowsing (adult filter)```
+* If you wish to perform DNS cache flushing, set it to ```true```
+
+#### ProcessControl ####
+* Choose which processes you wish to prevent from running, using their filename.
+* You can remove previously prevented processes, in order to allow them to run again.
+* Example: 
+```
+"ProcessControl": {
+	"Prevent": ["chrome.exe", "firefox.exe"],
+	"Allow": ["opera.exe"]
+}
+```
+
+#### Hosts ####
+* Control your hosts entries. ```Add``` list adds the entries, ```Block``` list routes the entries to ```0.0.0.0``` effectively blocking access to them.
+* Example:
+```
+"HostsEditor": {
+    "Block": ["youtube.com", "google.com"],
+    "Add": [
+	    {
+	    	"Domain": "test.com",
+	    	"IPAddress": "192.168.1.5",
+	    	"Comment": "comment is optional"
+	    },
+	    {
+	    	"Domain": "test2.com",
+	    	"IPAddress": "192.168.1.9",
+	    	"Comment": ""
+	    }
+    ]
+}	
+```
+
+#### RegistryFix ####
+* You can try enabling core Windows components by marking them ```true```
+* You typically do not need this, unless you are trying to repair a computer from malicious actions
+
+#### Integrator ####
+* ```TakeOwnership```: Mark ```true``` to add a "Take Ownership" option in right-click menu. Remove it by marking ```false```
+* ```OpenWithCMD```: Mark ```true``` to add a "Open CMD here" option in right-click menu. Remove it by marking ```false```
+
+#### AdvancedTweaks ####
+* Deeply technical tweaks that you should NOT touch, unless you know what you are really doing
+
+* ```UnlockAllCores```: DO NOT use this option. Leave it ```null``` or ```false```.
+* ```DisableHPET```: Enables or disables High Precision Event Timer.
+* ```EnableLoginVerbose```: Enables or disables Detailed Login Screen
+
+##### SvchostProcessSplitting #####
+* Mark it ```true``` and set the amount of ```RAM``` to reduce the svchost.exe processes for optimal memory
+* Mark it ```false``` to enable process splitting for optimal performance
+
+#### Tweaks ####
+* Mark the options you want to APPLY to ```true```
+* Mark the options you want to RESET to ```false```
+* Mark the options you want to IGNORE to ```null```
+
+#### PostAction ####
+* Final action after executing the template.
+* You may mark ```Restart``` to ```true``` to restart in order to effectively apply the changes.
+* You may choose between different types of restarting by configuring ```RestartType```
+* ```Normal``` performs a normal restart
+* ```SafeMode``` performs a restart in minimal safemode
+
+* ```DisableDefender```: you can disable Windows defender (Windows 10/11 needs this) by going through safemode and returning, everything automated
+* ```EnableDefender```: same, but for enabling Windows defender

+ 0 - 52
confs/win10.conf

@@ -1,52 +0,0 @@
-{
-  "WindowsVersion": 10,
-  "EnablePerformanceTweaks": null,
-  "DisableNetworkThrottling": null,
-  "DisableWindowsDefender": null,
-  "DisableSystemRestore": null,
-  "DisablePrintService": null,
-  "DisableMediaPlayerSharing": null,
-  "DisableErrorReporting": null,
-  "DisableHomeGroup": null,
-  "DisableSuperfetch": null,
-  "DisableTelemetryTasks": null,
-  "DisableOffice2016Telemetry": null,
-  "DisableCompatibilityAssistant": null,
-  "DisableFaxService": null,
-  "DisableSmartScreen": null,
-  "DisableStickyKeys": null,
-  "DisableCloudClipboard": null,
-  "EnableLegacyVolumeSlider": null,
-  "DisableQuickAccessHistory": null,
-  "DisableStartMenuAds": null,
-  "UninstallOneDrive": null,
-  "DisableMyPeople": null,
-  "DisableAutomaticUpdates": null,
-  "ExcludeDrivers": null,
-  "DisableTelemetryServices": null,
-  "DisablePrivacyOptions": null,
-  "DisableCortana": null,
-  "DisableSensorServices": null,
-  "DisableWindowsInk": null,
-  "DisableSpellingTyping": null,
-  "DisableXboxLive": null,
-  "DisableGameBar": null,
-  "DisableInsiderService": null,
-  "DisableStoreUpdates": null,
-  "EnableLongPaths": null,
-  "RemoveCastToDevice": null,
-  "EnableGamingMode": null,
-  "DisableVisualStudioTelemetry": null,
-  "DisableFirefoxTemeletry": null,
-  "DisableChromeTelemetry": null,
-  "DisableNVIDIATelemetry": null,
-  "DisableHibernation": null,
-  "DisableSMB1": null,
-  "DisableSMB2": null,
-  "DisableNTFSTimeStamp": null,
-  "DisableSearch": null,
-  "DisableHPET": null,
-  "EnableLoginVerbose": null,
-  "DisableEdgeDiscoverBar": null,
-  "DisableEdgeTelemetry": null
-}

+ 0 - 63
confs/win11.conf

@@ -1,63 +0,0 @@
-{
-  "WindowsVersion": 11,
-  "EnablePerformanceTweaks": null,
-  "DisableNetworkThrottling": null,
-  "DisableWindowsDefender": null,
-  "DisableSystemRestore": null,
-  "DisablePrintService": null,
-  "DisableMediaPlayerSharing": null,
-  "DisableErrorReporting": null,
-  "DisableHomeGroup": null,
-  "DisableSuperfetch": null,
-  "DisableTelemetryTasks": null,
-  "DisableOffice2016Telemetry": null,
-  "DisableCompatibilityAssistant": null,
-  "DisableHibernation": null,
-  "DisableSMB1": null,
-  "DisableSMB2": null,
-  "DisableNTFSTimeStamp": null,
-  "DisableFaxService": null,
-  "DisableSmartScreen": null,
-  "DisableStickyKeys": null,
-  "DisableCloudClipboard": null,
-  "EnableLegacyVolumeSlider": null,
-  "DisableQuickAccessHistory": null,
-  "DisableStartMenuAds": null,
-  "UninstallOneDrive": null,
-  "DisableMyPeople": null,
-  "DisableAutomaticUpdates": null,
-  "ExcludeDrivers": null,
-  "DisableTelemetryServices": null,
-  "DisablePrivacyOptions": null,
-  "DisableCortana": null,
-  "DisableSensorServices": null,
-  "DisableWindowsInk": null,
-  "DisableSpellingTyping": null,
-  "DisableXboxLive": null,
-  "DisableGameBar": null,
-  "DisableInsiderService": null,
-  "DisableStoreUpdates": null,
-  "EnableLongPaths": null,
-  "RemoveCastToDevice": null,
-  "EnableGamingMode": null,
-  "TaskbarToLeft": null,
-  "DisableSnapAssist": null,
-  "DisableWidgets": null,
-  "DisableChat": null,
-  "TaskbarSmaller": null,
-  "DisableStickers": null,
-  "ClassicRibbon": null,
-  "ClassicMenu": null,
-  "DisableTPMCheck": null,
-  "CompactMode": null,
-  "DisableVBS": null,
-  "DisableVisualStudioTelemetry": null,
-  "DisableFirefoxTemeletry": null,
-  "DisableChromeTelemetry": null,
-  "DisableNVIDIATelemetry": null,
-  "DisableSearch": null,
-  "DisableHPET": null,
-  "EnableLoginVerbose": null,
-  "DisableEdgeDiscoverBar": null,
-  "DisableEdgeTelemetry": null
-}

+ 0 - 31
confs/win7.conf

@@ -1,31 +0,0 @@
-{
-  "WindowsVersion": 7,
-  "EnablePerformanceTweaks": null,
-  "DisableNetworkThrottling": null,
-  "DisableWindowsDefender": null,
-  "DisableSystemRestore": null,
-  "DisablePrintService": null,
-  "DisableMediaPlayerSharing": null,
-  "DisableErrorReporting": null,
-  "DisableHomeGroup": null,
-  "DisableSuperfetch": null,
-  "DisableTelemetryTasks": null,
-  "DisableOffice2016Telemetry": null,
-  "DisableCompatibilityAssistant": null,
-  "DisableFaxService": null,
-  "DisableSmartScreen": null,
-  "DisableStickyKeys": null,
-  "DisableVisualStudioTelemetry": null,
-  "DisableFirefoxTemeletry": null,
-  "DisableChromeTelemetry": null,
-  "DisableNVIDIATelemetry": null,
-  "DisableHibernation": null,
-  "DisableSMB1": null,
-  "DisableSMB2": null,
-  "DisableNTFSTimeStamp": null,
-  "DisableSearch": null,
-  "DisableHPET": null,
-  "EnableLoginVerbose": null,
-  "DisableEdgeDiscoverBar": null,
-  "DisableEdgeTelemetry": null
-}

+ 0 - 32
confs/win8.conf

@@ -1,32 +0,0 @@
-{
-  "WindowsVersion": 8,
-  "EnablePerformanceTweaks": null,
-  "DisableNetworkThrottling": null,
-  "DisableWindowsDefender": null,
-  "DisableSystemRestore": null,
-  "DisablePrintService": null,
-  "DisableMediaPlayerSharing": null,
-  "DisableErrorReporting": null,
-  "DisableHomeGroup": null,
-  "DisableSuperfetch": null,
-  "DisableTelemetryTasks": null,
-  "DisableOffice2016Telemetry": null,
-  "DisableCompatibilityAssistant": null,
-  "DisableFaxService": null,
-  "DisableSmartScreen": null,
-  "DisableStickyKeys": null,
-  "DisableOneDrive": null,
-  "DisableVisualStudioTelemetry": null,
-  "DisableFirefoxTemeletry": null,
-  "DisableChromeTelemetry": null,
-  "DisableNVIDIATelemetry": null,
-  "DisableHibernation": null,
-  "DisableSMB1": null,
-  "DisableSMB2": null,
-  "DisableNTFSTimeStamp": null,
-  "DisableSearch": null,
-  "DisableHPET": null,
-  "EnableLoginVerbose": null,
-  "DisableEdgeDiscoverBar": null,
-  "DisableEdgeTelemetry": null
-}

+ 134 - 0
templates/optimizer-template.json

@@ -0,0 +1,134 @@
+{
+    "WindowsVersion": 10,
+    "PostAction": {
+        "Restart": null,
+        "RestartType": "Normal"
+    },
+    "Cleaner": {
+        "TempFiles": null,
+        "BsodDumps": null,
+        "ErrorReports": null,
+        "RecycleBin": null,
+        "InternetExplorer": null,
+        "GoogleChrome": {
+            "Cache": null,
+            "Cookies": null,
+            "History": null,
+            "Session": null,
+            "Passwords": null
+        },
+        "MozillaFirefox": {
+            "Cache": null,
+            "Cookies": null,
+            "History": null
+        },
+        "MicrosoftEdge": {
+            "Cache": null,
+            "Cookies": null,
+            "History": null,
+            "Session": null
+        },
+        "BraveBrowser": {
+            "Cache": null,
+            "Cookies": null,
+            "History": null,
+            "Session": null,
+            "Passwords": null
+        }
+    },
+    "Pinger": {
+        "SetDNS": "",
+        "FlushDNSCache": null
+    },
+    "ProcessControl": {
+        "Prevent": [],
+        "Allow": []
+    },
+    "HostsEditor": {
+        "Block": [],
+        "Add": []
+    },
+    "RegistryFix": {
+        "TaskManager": null,
+        "CommandPrompt": null,
+        "ControlPanel": null,
+        "FolderOptions": null,
+        "RunDialog": null,
+        "RightClickMenu": null,
+        "WindowsFirewall": null,
+        "RegistryEditor": null
+    },
+    "Integrator": {
+        "TakeOwnership": null,
+        "OpenWithCMD": null
+    },
+    "AdvancedTweaks": {
+        "UnlockAllCores": null,
+        "DisableHPET": null,
+        "EnableLoginVerbose": null,
+        "SvchostProcessSplitting": {
+            "Disable": null,
+            "RAM": null
+        }
+    },
+    "Tweaks": {
+        "EnablePerformanceTweaks": null,
+        "DisableNetworkThrottling": null,
+        "DisableWindowsDefender": null,
+        "DisableSystemRestore": null,
+        "DisablePrintService": null,
+        "DisableMediaPlayerSharing": null,
+        "DisableErrorReporting": null,
+        "DisableHomeGroup": null,
+        "DisableSuperfetch": null,
+        "DisableTelemetryTasks": null,
+        "DisableOffice2016Telemetry": null,
+        "DisableCompatibilityAssistant": null,
+        "DisableHibernation": null,
+        "DisableSMB1": null,
+        "DisableSMB2": null,
+        "DisableNTFSTimeStamp": null,
+        "DisableFaxService": null,
+        "DisableSmartScreen": null,
+        "DisableStickyKeys": null,
+        "DisableCloudClipboard": null,
+        "EnableLegacyVolumeSlider": null,
+        "DisableQuickAccessHistory": null,
+        "DisableStartMenuAds": null,
+        "UninstallOneDrive": null,
+        "DisableMyPeople": null,
+        "DisableAutomaticUpdates": null,
+        "ExcludeDrivers": null,
+        "DisableTelemetryServices": null,
+        "DisablePrivacyOptions": null,
+        "DisableCortana": null,
+        "DisableSensorServices": null,
+        "DisableWindowsInk": null,
+        "DisableSpellingTyping": null,
+        "DisableXboxLive": null,
+        "DisableGameBar": null,
+        "DisableInsiderService": null,
+        "DisableStoreUpdates": null,
+        "EnableLongPaths": null,
+        "RemoveCastToDevice": null,
+        "EnableGamingMode": null,
+        "TaskbarToLeft": null,
+        "DisableSnapAssist": null,
+        "DisableWidgets": null,
+        "DisableChat": null,
+        "TaskbarSmaller": null,
+        "DisableStickers": null,
+        "ClassicRibbon": null,
+        "ClassicMenu": null,
+        "DisableTPMCheck": null,
+        "CompactMode": null,
+        "DisableVirtualizationBasedTechnology": null,
+        "DisableVisualStudioTelemetry": null,
+        "DisableFirefoxTemeletry": null,
+        "DisableChromeTelemetry": null,
+        "DisableNVIDIATelemetry": null,
+        "DisableSearch": null,
+        "DisableEdgeDiscoverBar": null,
+        "DisableEdgeTelemetry": null
+    }
+}

+ 1 - 1
version.txt

@@ -1 +1 @@
-15.2
+15.3

部分文件因文件數量過多而無法顯示