| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544 | 
							- using Microsoft.Win32;
 
- using System;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Reflection;
 
- using System.Security.Principal;
 
- using System.Text;
 
- using System.Threading.Tasks;
 
- using System.Windows.Forms;
 
- using System.IO;
 
- using System.Diagnostics;
 
- using System.ServiceProcess;
 
- using System.Management.Automation;
 
- using System.Drawing;
 
- namespace Optimizer
 
- {
 
-     internal static class Utilities
 
-     {
 
-         internal static readonly string LocalMachineRun = "Software\\Microsoft\\Windows\\CurrentVersion\\Run";
 
-         internal static readonly string LocalMachineRunOnce = "Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce";
 
-         internal static readonly string LocalMachineRunWoW = "Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run";
 
-         internal static readonly string LocalMachineRunOnceWow = "Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\RunOnce";
 
-         internal static readonly string CurrentUserRun = "Software\\Microsoft\\Windows\\CurrentVersion\\Run";
 
-         internal static readonly string CurrentUserRunOnce = "Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce";
 
-         internal static readonly string LocalMachineStartupFolder = CleanHelper.ProgramData + "\\Microsoft\\Windows\\Start Menu\\Programs\\Startup";
 
-         internal static readonly string CurrentUserStartupFolder = CleanHelper.ProfileAppDataRoaming + "\\Microsoft\\Windows\\Start Menu\\Programs\\Startup";
 
-         internal readonly static string DefaultEdgeDownloadFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Downloads");
 
-         internal static WindowsVersion CurrentWindowsVersion = WindowsVersion.Unsupported;
 
-         internal delegate void SetControlPropertyThreadSafeDelegate(Control control, string propertyName, object propertyValue);
 
-         internal static void SetControlPropertyThreadSafe(Control control, string propertyName, object propertyValue)
 
-         {
 
-             if (control.InvokeRequired)
 
-             {
 
-                 control.Invoke(new SetControlPropertyThreadSafeDelegate(SetControlPropertyThreadSafe), new object[] { control, propertyName, propertyValue });
 
-             }
 
-             else
 
-             {
 
-                 control.GetType().InvokeMember(propertyName, BindingFlags.SetProperty, null, control, new object[] { propertyValue });
 
-             }
 
-         }
 
-         internal static IEnumerable<Control> GetSelfAndChildrenRecursive(Control parent)
 
-         {
 
-             List<Control> controls = new List<Control>();
 
-             foreach (Control child in parent.Controls)
 
-             {
 
-                 controls.AddRange(GetSelfAndChildrenRecursive(child));
 
-             }
 
-             controls.Add(parent);
 
-             return controls;
 
-         }
 
-         internal static Color ToGrayScale(this Color originalColor)
 
-         {
 
-             if (originalColor.Equals(Color.Transparent))
 
-                 return originalColor;
 
-             int grayScale = (int)((originalColor.R * .299) + (originalColor.G * .587) + (originalColor.B * .114));
 
-             return Color.FromArgb(grayScale, grayScale, grayScale);
 
-         }
 
-         internal static string GetOS()
 
-         {
 
-             string os = (string)Registry.GetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", "ProductName", "");
 
-             if (os.Contains("Windows 7"))
 
-             {
 
-                 CurrentWindowsVersion = WindowsVersion.Windows7;
 
-             }
 
-             if ((os.Contains("Windows 8")) || (os.Contains("Windows 8.1")))
 
-             {
 
-                 CurrentWindowsVersion = WindowsVersion.Windows8;
 
-             }
 
-             if (os.Contains("Windows 10"))
 
-             {
 
-                 CurrentWindowsVersion = WindowsVersion.Windows10;
 
-             }
 
-             return os;
 
-         }
 
-         internal static string GetBitness()
 
-         {
 
-             string bitness = string.Empty;
 
-             if (Environment.Is64BitOperatingSystem)
 
-             {
 
-                 bitness = "You are working with 64-bit architecture";
 
-             }
 
-             else
 
-             {
 
-                 bitness = "You are working with 32-bit architecture";
 
-             }
 
-             return bitness;
 
-         }
 
-         internal static bool IsAdmin()
 
-         {
 
-             return new WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator);
 
-         }
 
-         internal static bool IsCompatible()
 
-         {
 
-             bool legit;
 
-             string os = GetOS();
 
-             if ((os.Contains("XP")) || (os.Contains("Vista")) || os.Contains("Server 2003"))
 
-             {
 
-                 legit = false;
 
-             }
 
-             else
 
-             {
 
-                 legit = true;
 
-             }
 
-             return legit;
 
-         }
 
-         internal static string GetEdgeDownloadFolder()
 
-         {
 
-             string current = string.Empty;
 
-             try
 
-             {
 
-                 current = Registry.GetValue(@"HKEY_CURRENT_USER\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\microsoft.microsoftedge_8wekyb3d8bbwe\MicrosoftEdge\Main", "Default Download Directory", DefaultEdgeDownloadFolder).ToString();
 
-             }
 
-             catch
 
-             {
 
-                 current = DefaultEdgeDownloadFolder;
 
-             }
 
-             return current;
 
-         }
 
-         internal static void SetEdgeDownloadFolder(string path)
 
-         {
 
-             Registry.SetValue(@"HKEY_CURRENT_USER\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\microsoft.microsoftedge_8wekyb3d8bbwe\MicrosoftEdge\Main", "Default Download Directory", path, RegistryValueKind.String);
 
-         }
 
-         internal static void RunBatchFile(string batchFile)
 
-         {
 
-             try
 
-             {
 
-                 using (Process p = new Process())
 
-                 {
 
-                     p.StartInfo.CreateNoWindow = true;
 
-                     p.StartInfo.FileName = batchFile;
 
-                     p.StartInfo.UseShellExecute = false;
 
-                     p.Start();
 
-                     p.WaitForExit();
 
-                     p.Close();
 
-                 }
 
-             }
 
-             catch { }
 
-         }
 
-         internal static void ImportRegistryScript(string scriptFile)
 
-         {
 
-             string path = "\"" + scriptFile + "\"";
 
-             Process p = new Process();
 
-             try
 
-             {
 
-                 p.StartInfo.FileName = "regedit.exe";
 
-                 p.StartInfo.UseShellExecute = false;
 
-                 p = Process.Start("regedit.exe", "/s " + path);
 
-                 p.WaitForExit();
 
-             }
 
-             catch
 
-             {
 
-                 p.Dispose();
 
-             }
 
-             finally
 
-             {
 
-                 p.Dispose();
 
-             }
 
-         }
 
-         internal static void Reboot()
 
-         {
 
-             Process.Start("shutdown", "/r /t 0");
 
-         }
 
-         internal static void ActivateMainForm()
 
-         {
 
-             Program.MainForm.Activate();
 
-         }
 
-         internal static bool ServiceExists(string serviceName)
 
-         {
 
-             return ServiceController.GetServices().Any(serviceController => serviceController.ServiceName.Equals(serviceName));
 
-         }
 
-         internal static void StopService(string serviceName)
 
-         {
 
-             if (ServiceExists(serviceName))
 
-             {
 
-                 ServiceController sc = new ServiceController(serviceName);
 
-                 if (sc.CanStop)
 
-                 {
 
-                     sc.Stop();
 
-                 }
 
-             }
 
-         }
 
-         internal static void StartService(string serviceName)
 
-         {
 
-             if (ServiceExists(serviceName))
 
-             {
 
-                 ServiceController sc = new ServiceController(serviceName);
 
-                 try
 
-                 {
 
-                     sc.Start();
 
-                 }
 
-                 catch { }
 
-             }
 
-         }
 
-         private static void GetRegistryStartupItemsHelper(ref List<StartupItem> list, StartupItemLocation location, StartupItemType type)
 
-         {
 
-             string keyPath = string.Empty;
 
-             RegistryKey hive = null;
 
-             if (location == StartupItemLocation.HKLM)
 
-             {
 
-                 hive = Registry.LocalMachine;
 
-                 if (type == StartupItemType.Run)
 
-                 {
 
-                     keyPath = LocalMachineRun;
 
-                 }
 
-                 else if (type == StartupItemType.RunOnce)
 
-                 {
 
-                     keyPath = LocalMachineRunOnce;
 
-                 }
 
-             }
 
-             else if (location == StartupItemLocation.HKLMWoW)
 
-             {
 
-                 hive = Registry.LocalMachine;
 
-                 if (type == StartupItemType.Run)
 
-                 {
 
-                     keyPath = LocalMachineRunWoW;
 
-                 }
 
-                 else if (type == StartupItemType.RunOnce)
 
-                 {
 
-                     keyPath = LocalMachineRunOnceWow;
 
-                 }
 
-             }
 
-             else if (location == StartupItemLocation.HKCU)
 
-             {
 
-                 hive = Registry.CurrentUser;
 
-                 if (type == StartupItemType.Run)
 
-                 {
 
-                     keyPath = CurrentUserRun;
 
-                 }
 
-                 else if (type == StartupItemType.RunOnce)
 
-                 {
 
-                     keyPath = CurrentUserRunOnce;
 
-                 }
 
-             }
 
-             if (hive != null)
 
-             {
 
-                 RegistryKey key = hive.OpenSubKey(keyPath, true);
 
-                 
 
-                 if (key != null)
 
-                 {
 
-                     string[] valueNames = key.GetValueNames();
 
-                     foreach (string x in valueNames)
 
-                     {
 
-                         try
 
-                         {
 
-                             RegistryStartupItem item = new RegistryStartupItem();
 
-                             item.Name = x;
 
-                             item.FileLocation = key.GetValue(x).ToString();
 
-                             item.Key = key;
 
-                             item.RegistryLocation = location;
 
-                             item.StartupType = type;
 
-                             list.Add(item);
 
-                         }
 
-                         catch { }
 
-                     }
 
-                 }
 
-             }
 
-         }
 
-         private static void GetFolderStartupItemsHelper(ref List<StartupItem> list, string[] files, string[] shortcuts)
 
-         {
 
-             foreach (string file in files)
 
-             {
 
-                 try
 
-                 {
 
-                     FolderStartupItem item = new FolderStartupItem();
 
-                     item.Name = Path.GetFileNameWithoutExtension(file);
 
-                     item.FileLocation = file;
 
-                     item.Shortcut = file;
 
-                     item.RegistryLocation = StartupItemLocation.Folder;
 
-                     list.Add(item);
 
-                 }
 
-                 catch { }
 
-             }
 
-             foreach (string shortcut in shortcuts)
 
-             {
 
-                 try
 
-                 {
 
-                     FolderStartupItem item = new FolderStartupItem();
 
-                     item.Name = Path.GetFileNameWithoutExtension(shortcut);
 
-                     item.FileLocation = GetShortcutTargetFile(shortcut);
 
-                     item.Shortcut = shortcut;
 
-                     item.RegistryLocation = StartupItemLocation.Folder;
 
-                     list.Add(item);
 
-                 }
 
-                 catch { }
 
-             }
 
-         }
 
-         internal static List<StartupItem> GetStartupItems()
 
-         {
 
-             List<StartupItem> startupItems = new List<StartupItem>();
 
-             GetRegistryStartupItemsHelper(ref startupItems, StartupItemLocation.HKLM, StartupItemType.Run);
 
-             GetRegistryStartupItemsHelper(ref startupItems, StartupItemLocation.HKLM, StartupItemType.RunOnce);
 
-             GetRegistryStartupItemsHelper(ref startupItems, StartupItemLocation.HKCU, StartupItemType.Run);
 
-             GetRegistryStartupItemsHelper(ref startupItems, StartupItemLocation.HKCU, StartupItemType.RunOnce);
 
-             if (Environment.Is64BitOperatingSystem)
 
-             {
 
-                 GetRegistryStartupItemsHelper(ref startupItems, StartupItemLocation.HKLMWoW, StartupItemType.Run);
 
-                 GetRegistryStartupItemsHelper(ref startupItems, StartupItemLocation.HKLMWoW, StartupItemType.RunOnce);
 
-             }
 
-             string[] currentUserFiles = Directory.GetFiles(CurrentUserStartupFolder, "*.exe", SearchOption.AllDirectories);
 
-             string[] currentUserShortcuts = Directory.GetFiles(CurrentUserStartupFolder, "*.lnk", SearchOption.AllDirectories);
 
-             GetFolderStartupItemsHelper(ref startupItems, currentUserFiles, currentUserShortcuts);
 
-             string[] localMachineFiles = Directory.GetFiles(LocalMachineStartupFolder, "*.exe", SearchOption.AllDirectories);
 
-             string[] localMachineShortcuts = Directory.GetFiles(LocalMachineStartupFolder, "*.lnk", SearchOption.AllDirectories);
 
-             GetFolderStartupItemsHelper(ref startupItems, localMachineFiles, localMachineShortcuts);
 
-             return startupItems;
 
-         }
 
-         internal static void EnableFirewall()
 
-         {
 
-             RunCommand("netsh advfirewall set currentprofile state on");
 
-         }
 
-         internal static void EnableCommandPrompt()
 
-         {
 
-             using (RegistryKey key = Registry.CurrentUser.CreateSubKey("Software\\Policies\\Microsoft\\Windows\\System"))
 
-             {
 
-                 key.SetValue("DisableCMD", 0, RegistryValueKind.DWord);
 
-             }
 
-         }
 
-         internal static void EnableControlPanel()
 
-         {
 
-             using (RegistryKey key = Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer"))
 
-             {
 
-                 key.SetValue("NoControlPanel", 0, RegistryValueKind.DWord);
 
-             }
 
-         }
 
-         internal static void EnableFolderOptions()
 
-         {
 
-             using (RegistryKey key = Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer"))
 
-             {
 
-                 key.SetValue("NoFolderOptions", 0, RegistryValueKind.DWord);
 
-             }
 
-         }
 
-         internal static void EnableRunDialog()
 
-         {
 
-             using (RegistryKey key = Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer"))
 
-             {
 
-                 key.SetValue("NoRun", 0, RegistryValueKind.DWord);
 
-             }
 
-         }
 
-         internal static void EnableContextMenu()
 
-         {
 
-             using (RegistryKey key = Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer"))
 
-             {
 
-                 key.SetValue("NoViewContextMenu", 0, RegistryValueKind.DWord);
 
-             }
 
-         }
 
-         internal static void EnableTaskManager()
 
-         {
 
-             using (RegistryKey key = Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System"))
 
-             {
 
-                 key.SetValue("DisableTaskMgr", 0, RegistryValueKind.DWord);
 
-             }
 
-         }
 
-         internal static void EnableRegistryEditor()
 
-         {
 
-             using (RegistryKey key = Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System"))
 
-             {
 
-                 key.SetValue("DisableRegistryTools", 0, RegistryValueKind.DWord);
 
-             }
 
-         }
 
-         internal static void RunCommand(string command)
 
-         {
 
-             using (Process p = new Process())
 
-             {
 
-                 p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
 
-                 p.StartInfo.FileName = "cmd.exe";
 
-                 p.StartInfo.Arguments = "/C " + command;
 
-                 try
 
-                 {
 
-                     p.Start();
 
-                     p.WaitForExit();
 
-                     p.Close();
 
-                 }
 
-                 catch { }
 
-             }
 
-         }
 
-         internal static void FindFile(string fileName)
 
-         {
 
-             if (File.Exists(fileName))
 
-             {
 
-                 Process.Start("explorer.exe", "/select, " + fileName);
 
-             }
 
-         }
 
-         internal static string GetShortcutTargetFile(string shortcutFilename)
 
-         {
 
-             string pathOnly = Path.GetDirectoryName(shortcutFilename);
 
-             string filenameOnly = Path.GetFileName(shortcutFilename);
 
-             Shell32.Shell shell = new Shell32.Shell();
 
-             Shell32.Folder folder = shell.NameSpace(pathOnly);
 
-             Shell32.FolderItem folderItem = folder.ParseName(filenameOnly);
 
-             if (folderItem != null)
 
-             {
 
-                 Shell32.ShellLinkObject link = (Shell32.ShellLinkObject)folderItem.GetLink;
 
-                 return link.Path;
 
-             }
 
-             return string.Empty;
 
-         }
 
-         internal static void RestartExplorer()
 
-         {
 
-             const string explorer = "explorer.exe";
 
-             string explorerPath = string.Format("{0}\\{1}", Environment.GetEnvironmentVariable("WINDIR"), explorer);
 
-             foreach (Process process in Process.GetProcesses())
 
-             {
 
-                 try
 
-                 {
 
-                     if (string.Compare(process.MainModule.FileName, explorerPath, StringComparison.OrdinalIgnoreCase) == 0)
 
-                     {
 
-                         process.Kill();
 
-                     }
 
-                 }
 
-                 catch { }
 
-             }
 
-             Process.Start(explorer);
 
-         }
 
-         internal static void FindKeyInRegistry(string key)
 
-         {
 
-             try
 
-             {
 
-                 Registry.SetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit", "LastKey", key);
 
-                 Process.Start("regedit");
 
-             }
 
-             catch { }
 
-         }
 
-         internal static List<string> GetModernApps()
 
-         {
 
-             List<string> modernApps = new List<string>();
 
-             using (PowerShell script = PowerShell.Create())
 
-             {
 
-                 script.AddScript("Get-AppxPackage | Select Name | Out-String -Stream");
 
-                 string tmp = string.Empty;
 
-                 foreach (PSObject x in script.Invoke())
 
-                 {
 
-                     tmp = x.ToString().Trim();
 
-                     if (!string.IsNullOrEmpty(tmp) && !tmp.Contains("---"))
 
-                     {
 
-                         if (tmp != "Name") modernApps.Add(tmp);
 
-                     }
 
-                 }
 
-             }
 
-             return modernApps;
 
-         }
 
-         internal static bool UninstallModernApp(string appName)
 
-         {
 
-             using (PowerShell script = PowerShell.Create())
 
-             {
 
-                 script.AddScript(string.Format("Get-AppxPackage *{0}* | Remove-AppxPackage", appName));
 
-                 script.Invoke();
 
-                 return script.HadErrors;
 
-             }
 
-         }
 
-         internal static void ResetConfiguration()
 
-         {
 
-             try
 
-             {
 
-                 Directory.Delete(Required.CoreFolder, true);
 
-             }
 
-             catch { }
 
-             finally
 
-             {
 
-                 Application.Restart();
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |