|
|
- using System;
- using System.Diagnostics;
- using System.IO;
- using System.Linq;
- using System.Management;
- using System.Net.Http;
- using System.ServiceProcess;
- using System.Threading;
- using amecs.Actions;
- using Ameliorated.ConsoleUtils;
-
- namespace amecs.Extra
- {
- public static partial class Extra
- {
- public static bool ShowMenu()
- {
- while (true)
- {
- Program.Frame.Clear();
-
- bool hibernation = new Reg.Value()
- {
- KeyName = @"HKLM\SYSTEM\CurrentControlSet\Control\Power",
- ValueName = "HibernateEnabled",
- Data = 1,
- }.IsEqual()
- &&
- new Reg.Value()
- {
- KeyName = @"HKLM\SYSTEM\CurrentControlSet\Control\Power",
- ValueName = "HiberFileType",
- Data = 2,
- }.IsEqual();
-
- bool notifications = new Reg.Value()
- {
- KeyName = "HKU\\" + Globals.UserSID + @"\SOFTWARE\Microsoft\Windows\CurrentVersion\PushNotifications",
- ValueName = "ToastEnabled",
- Data = 1,
- }.IsEqual();
-
- bool notificationCenter = !new Reg.Value()
- {
- KeyName = "HKU\\" + Globals.UserSID + @"\SOFTWARE\Policies\Microsoft\Windows\Explorer",
- ValueName = "DisableNotificationCenter",
- Data = 1,
- }.IsEqual();
-
- bool vbsEnabled = new Reg.Value()
- {
- KeyName = @"HKCR\.vbs",
- ValueName = "",
- Data = "VBSFile",
- Type = Reg.RegistryValueType.REG_SZ
- }.IsEqual();
-
- bool ncsiEnabled = new Reg.Value()
- {
- KeyName = @"HKLM\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet",
- ValueName = "EnableActiveProbing",
- Data = 1,
- }.IsEqual();
-
- var mainMenu = new Ameliorated.ConsoleUtils.Menu()
- {
- Choices =
- {
- new Menu.MenuItem("Manage WSL", null) {IsEnabled = false, SecondaryText = "[Not Supported]", PrimaryTextForeground = ConsoleColor.DarkGray, SecondaryTextForeground = ConsoleColor.Red},
- hibernation ?
- new Menu.MenuItem("Disable Hibernation", new Func<bool>(DisableHibernation)) :
- new Menu.MenuItem("Enable Hibernation", new Func<bool>(EnableHibernation)),
- notificationCenter ?
- new Menu.MenuItem("Disable Notification Center", new Func<bool>(DisableNotifCen)) :
- new Menu.MenuItem("Enable Notification Center", new Func<bool>(EnableNotifCen)),
- notifications ?
- new Menu.MenuItem("Disable Desktop Notifications", new Func<bool>(DisableNotifications)) :
- new Menu.MenuItem("Enable Desktop Notifications", new Func<bool>(EnableNotifications)),
-
- GetWSHItem(),
- vbsEnabled ?
- new Menu.MenuItem("Disable Visual Basic Script [VBS] (Legacy)", new Func<bool>(DisableVBS)) :
- new Menu.MenuItem("Enable Visual Basic Script [VBS] (Legacy)", new Func<bool>(EnableVBS)),
- ncsiEnabled ?
- new Menu.MenuItem("Disable NCSI Active Probing (Legacy)", new Func<bool>(DisableNCSI)) :
- new Menu.MenuItem("Enable NCSI Active Probing (Legacy)", new Func<bool>(EnableNCSI)),
-
- GetNVCPItem(),
- Menu.MenuItem.Blank,
- new Menu.MenuItem("Return to Menu", null),
- new Menu.MenuItem("Exit", new Func<bool>(Globals.Exit))
- },
- SelectionForeground = ConsoleColor.Green
- };
- Func<bool> result;
- try
- {
- mainMenu.Write();
- var res = mainMenu.Load();
- if (res == null)
- return true;
- result = (Func<bool>)res;
- } catch (Exception e)
- {
- Console.WriteLine(e);
- Console.ReadLine();
- return false;
- }
-
- try
- {
- result.Invoke();
- } catch (Exception e)
- {
- ConsoleTUI.ShowErrorBox("Error while running an action: " + e.ToString(), null);
- }
- }
- }
-
- private static Menu.MenuItem GetNVCPItem()
- {
- if (File.Exists(Environment.ExpandEnvironmentVariables(@"%PROGRAMFILES%\NVIDIA Control Panel\nvcplui.exe")))
- return new Menu.MenuItem("Uninstall NVIDIA Control Panel", new Func<bool>(NVCP.Uninstall));
-
- if (Globals.WinVer > 19043)
- return new Menu.MenuItem("Install NVIDIA Control Panel", null) {IsEnabled = false, PrimaryTextForeground = ConsoleColor.DarkGray, SecondaryTextForeground = ConsoleColor.Red, SecondaryText = "[Not Supported]"};
-
- try
- {
-
- ManagementObjectSearcher searcher =
- new ManagementObjectSearcher("SELECT NAME FROM Win32_VideoController");
-
- bool foundGPU = false;
- foreach (ManagementObject mo in searcher.Get())
- {
- PropertyData Name = mo.Properties["Name"];
- if (Name.Value != null)
- {
- var name = ((string)Name.Value);
- if (name.Contains("NVIDIA") || name.Contains("GeForce") || name.Contains("GTX") || name.Contains("RTX"))
- {
- foundGPU = true;
- break;
- }
- }
- }
-
- if (!foundGPU)
- {
- return new Menu.MenuItem("Install NVIDIA Control Panel", null) {IsEnabled = false, PrimaryTextForeground = ConsoleColor.DarkGray, SecondaryTextForeground = ConsoleColor.Red, SecondaryText = "[No NVIDIA GPU]"};
- }
- } catch {}
-
- try
- {
- if (!ServiceController.GetServices().Any(x => x.ServiceName.Equals("NVDisplay.ContainerLocalSystem")))
- return new Menu.MenuItem("Install NVIDIA Control Panel", null) {IsEnabled = false, PrimaryTextForeground = ConsoleColor.DarkGray, SecondaryTextForeground = ConsoleColor.Red, SecondaryText = "[No NVIDIA Driver]"};
- } catch { }
-
- try
- {
- var dir = Directory.EnumerateDirectories(Environment.ExpandEnvironmentVariables(@"%PROGRAMFILES%\WindowsApps")).First(x => x.Contains("NVIDIACorp.NVIDIAControlPanel"));
- if (File.Exists(Path.Combine(dir, "nvcplui.exe")))
- return new Menu.MenuItem("Install NVIDIA Control Panel", new Func<bool>(() => NVCP.Install(dir)));
- } catch { }
-
- if (!amecs.IsInternetAvailable())
- return new Menu.MenuItem("Install NVIDIA Control Panel", null) {IsEnabled = false, PrimaryTextForeground = ConsoleColor.DarkGray, SecondaryTextForeground = ConsoleColor.Red, SecondaryText = "[Internet Required]"};
-
- if (!amecs.InternetCheckConnection("https://store.rg-adguard.net", 1, 0))
- return new Menu.MenuItem("Install NVIDIA Control Panel", null) {IsEnabled = false, PrimaryTextForeground = ConsoleColor.DarkGray, SecondaryTextForeground = ConsoleColor.Red, SecondaryText = "[Server Unavailable]"};
-
- if (!amecs.InternetCheckConnection("https://git.ameliorated.info/", 1, 0))
- return new Menu.MenuItem("Install NVIDIA Control Panel", null) {IsEnabled = false, PrimaryTextForeground = ConsoleColor.DarkGray, SecondaryTextForeground = ConsoleColor.Red, SecondaryText = "[Git Unavailable]"};
-
- try
- {
- using (HttpClient client = new HttpClient())
- {
- using (HttpResponseMessage response = client.GetAsync("https://store.rg-adguard.net/").Result)
- {
- using (HttpContent content = response.Content)
- {
- string result = content.ReadAsStringAsync().Result;
- if (result.Contains("Cloudflare Ray ID"))
- return new Menu.MenuItem("Install NVIDIA Control Panel", null) {IsEnabled = false, PrimaryTextForeground = ConsoleColor.DarkGray, SecondaryTextForeground = ConsoleColor.Red, SecondaryText = "[Server Unavailable]"};
- }
- }
- }
- } catch { }
-
- return new Menu.MenuItem("Install NVIDIA Control Panel", new Func<bool>(NVCP.InstallFromNetwork));
- }
-
- private static Menu.MenuItem GetWSHItem()
- {
- if (new Reg.Value()
- {
- KeyName = Globals.UserHive + @"\SOFTWARE\Microsoft\Windows Script Host\Settings",
- ValueName = "Enabled",
- Data = 1,
- }.IsEqual())
- return new Menu.MenuItem("Disable Windows Script Host [WSH] (Legacy)", new Func<bool>(WSH.Disable));
- if (new Reg.Value()
- {
- KeyName = Globals.UserHive + @"\SOFTWARE\Microsoft\Windows Script Host\Settings",
- ValueName = "Enabled",
- Data = 0,
- }.IsEqual())
- return new Menu.MenuItem("Enable Windows Script Host [WSH] (Legacy)", new Func<bool>(WSH.Enable));
-
- return new Reg.Value()
- {
- KeyName = @"HKLM\SOFTWARE\Microsoft\Windows Script Host\Settings",
- ValueName = "Enabled",
- Data = 0,
- }.IsEqual() ? new Menu.MenuItem("Disable Windows Script Host [WSH] (Legacy)", new Func<bool>(WSH.Enable)) : new Menu.MenuItem("Disable Windows Script Host [WSH] (Legacy)", new Func<bool>(WSH.Disable));
- }
-
- private static bool EnableHibernation() =>amecs.RunBasicAction("Enabling hibernation","Enabled hibernation successfully",() =>
- {
- Thread.Sleep(1600);
-
- Process proc = new Process();
- proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
- proc.StartInfo.FileName = "powercfg.exe";
- proc.StartInfo.Arguments = "/HIBERNATE /TYPE FULL";
- proc.Start();
- proc.WaitForExit(20000);
-
- if (proc.ExitCode != 0)
- throw new Exception("powercfg exited with a non-zero exitcode.\r\nHibernation may not be supported by your hardware.");
- });
-
- private static bool DisableHibernation() =>amecs.RunBasicAction("Disabling hibernation","Disabled hibernation successfully",() =>
- {
- Thread.Sleep(1600);
-
- Process proc = new Process();
- proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
- proc.StartInfo.FileName = "powercfg.exe";
- proc.StartInfo.Arguments = "/HIBERNATE OFF";
- proc.Start();
- proc.WaitForExit(20000);
-
- if (proc.ExitCode != 0)
- throw new Exception("powercfg exited with a non-zero exitcode.");
- Thread.Sleep(1600);
- });
-
- private static bool EnableNotifCen() =>amecs.RunBasicAction("Enabling Notification Center","Notification Center enabled successfully",() =>
- {
- new Reg.Value()
- {
- KeyName = "HKU\\" + Globals.UserSID + @"\SOFTWARE\Policies\Microsoft\Windows\Explorer",
- ValueName = "DisableNotificationCenter",
- Operation = Reg.RegistryValueOperation.Delete
- }.Apply();
- Thread.Sleep(1600);
- }, true);
-
- private static bool DisableNotifCen() =>amecs.RunBasicAction("Disabling Notification Center","Notification Center disabled successfully",() =>
- {
- new Reg.Value()
- {
- KeyName = "HKU\\" + Globals.UserSID + @"\SOFTWARE\Policies\Microsoft\Windows\Explorer",
- ValueName = "DisableNotificationCenter",
- Data = 1,
- }.Apply();
- Thread.Sleep(1600);
- }, true);
-
- private static bool EnableNotifications() =>amecs.RunBasicAction("Enabling desktop notifications","Enabled desktop notifications successfully",() =>
- {
- new Reg.Value()
- {
- KeyName = "HKU\\" + Globals.UserSID + @"\SOFTWARE\Microsoft\Windows\CurrentVersion\PushNotifications",
- ValueName = "ToastEnabled",
- Data = 1,
- }.Apply();
- Thread.Sleep(1600);
- }, true);
-
- private static bool DisableNotifications() =>amecs.RunBasicAction("Disabling desktop notifications","Disabled desktop notifications successfully",() =>
- {
- new Reg.Value()
- {
- KeyName = "HKU\\" + Globals.UserSID + @"\SOFTWARE\Microsoft\Windows\CurrentVersion\PushNotifications",
- ValueName = "ToastEnabled",
- Data = 0,
- }.Apply();
- Thread.Sleep(1600);
- }, true);
-
- private static bool EnableVBS() =>amecs.RunBasicAction("Enabling Visual Basic Script","Enabled VBS successfully",() =>
- {
- new Reg.Value()
- {
- KeyName = @"HKCR\.vbs",
- ValueName = "",
- Data = "VBSFile",
- Type = Reg.RegistryValueType.REG_SZ
- }.Apply();
- Thread.Sleep(1600);
- });
-
- private static bool DisableVBS() =>amecs.RunBasicAction("Disabling Visual Basic Script","Disabled VBS successfully",() =>
- {
- new Reg.Value()
- {
- KeyName = @"HKCR\.vbs",
- ValueName = "",
- Data = "",
- Type = Reg.RegistryValueType.REG_SZ
- }.Apply();
- Thread.Sleep(1600);
- });
-
- private static bool EnableNCSI() =>amecs.RunBasicAction("Enabling NCSI Active Probing","Enabled NCSI Active Probing successfully",() =>
- {
- new Reg.Value()
- {
- KeyName = @"HKLM\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet",
- ValueName = "EnableActiveProbing",
- Data = 1,
- }.Apply();
- Thread.Sleep(1600);
- }, false, true);
-
- private static bool DisableNCSI() =>amecs.RunBasicAction("Disabling NCSI Active Probing","Disabled NCSI Active Probing successfully",() =>
- {
- new Reg.Value()
- {
- KeyName = @"HKLM\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet",
- ValueName = "EnableActiveProbing",
- Data = 0,
- }.Apply();
- Thread.Sleep(1600);
- }, false, true);
- }
- }
|