static void Main(string[] switches) { EmbeddedAssembly.Load(_jsonAssembly, _jsonAssembly.Replace("Optimizer.", string.Empty)); AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve; Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); if (!Utilities.IsAdmin()) { HelperForm f = new HelperForm(null, MessageType.Error, _adminMissingMessage); f.ShowDialog(); Application.Exit(); } else { if (Utilities.IsCompatible()) { if (!Directory.Exists(Required.CoreFolder)) { Required.Deploy(); } // for backward compatibility (legacy) if (File.Exists(Options.SettingsFile)) { if (File.ReadAllText(Options.SettingsFile).Contains("FirstRun")) { File.Delete(Options.SettingsFile); } } // load settings, if there is no settings, load defaults try { Options.LoadSettings(); } catch (Exception ex) { ErrorLogger.LogError("Program.Main", ex.Message, ex.StackTrace); } // checking for silent config argument if (switches.Length == 1) { string arg = switches[0].Trim(); // UNSAFE mode switch (allows running on Windows Server 2008+) if (arg == "/unsafe") { UNSAFE_MODE = true; Application.Run(new MainForm()); return; } if (arg.StartsWith("/")) { if (File.Exists(arg.Remove(0, 1))) { SilentOps.GetSilentConfig(arg.Remove(0, 1)); if (SilentOps.CurrentSilentConfig != null) { if (SilentOps.CurrentSilentConfig.WindowsVersion == 7 && Utilities.CurrentWindowsVersion == WindowsVersion.Windows7) { SilentOps.ProcessSilentConfigGeneral(); SilentOps.SilentUpdateOptionsGeneral(); Options.SaveSettings(); } else if (SilentOps.CurrentSilentConfig.WindowsVersion == 8 && Utilities.CurrentWindowsVersion == WindowsVersion.Windows8) { SilentOps.ProcessSilentConfigGeneral(); SilentOps.ProcessSilentConfigWindows8(); SilentOps.SilentUpdateOptionsGeneral(); SilentOps.SilentUpdateOptions8(); Options.SaveSettings(); } else if (SilentOps.CurrentSilentConfig.WindowsVersion == 10 && Utilities.CurrentWindowsVersion == WindowsVersion.Windows10) { SilentOps.ProcessSilentConfigGeneral(); SilentOps.ProcessSilentConfigWindows10(); SilentOps.SilentUpdateOptionsGeneral(); SilentOps.SilentUpdateOptions10(); Options.SaveSettings(); } else { MessageBox.Show("Windows version does not match!", "Invalid config file", MessageBoxButtons.OK, MessageBoxIcon.Information); Environment.Exit(0); } } else { MessageBox.Show("Config file is in invalid format!", "Invalid config file", MessageBoxButtons.OK, MessageBoxIcon.Information); Environment.Exit(0); } } else { MessageBox.Show("Config file does not exist!", "Invalid config file", MessageBoxButtons.OK, MessageBoxIcon.Information); Environment.Exit(0); } } else { MessageBox.Show("Invalid argument. Example: optimizer.exe /silent.conf", "Invalid argument", MessageBoxButtons.OK, MessageBoxIcon.Information); Environment.Exit(0); } } else { Application.Run(new MainForm()); } } else { HelperForm f = new HelperForm(null, MessageType.Error, _unsupportedMessage); f.ShowDialog(); Application.Exit(); } } }
internal static void Load(string embeddedResource, string fileName) { if (_dictionary == null) { _dictionary = new Dictionary <string, Assembly>(); } byte[] bytes = null; Assembly assembly = null; Assembly currentAssembly = Assembly.GetExecutingAssembly(); using (Stream stream = currentAssembly.GetManifestResourceStream(embeddedResource)) { if (stream == null) { throw new Exception(embeddedResource + " is not found in Embedded Resources."); } bytes = new byte[(int)stream.Length]; stream.Read(bytes, 0, (int)stream.Length); try { assembly = Assembly.Load(bytes); _dictionary.Add(assembly.FullName, assembly); return; } catch (Exception ex) { ErrorLogger.LogError("EmbeddedAssembly.Load", ex.Message, ex.StackTrace); } } bool fileOk = false; string tempFile = string.Empty; using (SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider()) { string fileHash = BitConverter.ToString(sha1.ComputeHash(bytes)).Replace("-", string.Empty); tempFile = Path.GetTempPath() + fileName; if (File.Exists(tempFile)) { byte[] byteArray = File.ReadAllBytes(tempFile); string fileHash2 = BitConverter.ToString(sha1.ComputeHash(byteArray)).Replace("-", string.Empty); if (fileHash == fileHash2) { fileOk = true; } } else { fileOk = false; } } if (!fileOk) { File.WriteAllBytes(tempFile, bytes); } assembly = Assembly.LoadFile(tempFile); _dictionary.Add(assembly.FullName, assembly); }
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 (Exception ex) { ErrorLogger.LogError("Utilities.GetRegistryStartupItemsHelper", ex.Message, ex.StackTrace); } } } } }