private static void RunGame()
        {
            Logger.Log(LogLevel.Info, "Patching is complete. Launching the game...");

            if (!Configuration.GameExecutableName.IsNullOrWhiteSpace())
            {
                Logger.Log("Starting main process");

                Process.Start(Configuration.Executable, Configuration.ExecArgs);

                Logger.Log(
                    $"Searching for process {Configuration.GameExecutableName}. Press CTRL+C to stop and close UULauncher...");

                Process[] processes;
                do
                {
                    processes = Process.GetProcessesByName(Configuration.GameExecutableName);
                } while (processes.Length == 0);

                Logger.Log(LogLevel.Info, "Found process! Binding...");
                GameProcess = Process.GetProcessById(processes[0].Id);
                Logger.Log(LogLevel.Info, "Done!");
            }
            else
            {
                GameProcess = Process.Start(Configuration.Executable, Configuration.ExecArgs);

                if (GameProcess == null)
                {
                    Logger.Log(LogLevel.Error, "The process could not be started. Exiting...");
                    Environment.Exit(-1);
                }
                Logger.Log(LogLevel.Info, "Game process launched!");
            }
            ConsoleUtils.SetConsoleCtrlHandler(HandleConsoleCtrl, true);
            Logger.StopTime();
            Logger.Log(LogLevel.Warning,
                       "NOTE: DO NOT close this window while the game is running. UULauncher will perform clean-up after the game is closed.");
            IntPtr consoleHandle = ConsoleUtils.GetConsoleWindow();

            if (Configuration.HideWhileGameRuns)
            {
                ConsoleUtils.ShowWindow(consoleHandle, ConsoleUtils.SW_HIDE);
            }

            GameProcess.WaitForExit();
            if (Configuration.HideWhileGameRuns)
            {
                ConsoleUtils.ShowWindow(consoleHandle, ConsoleUtils.SW_SHOW);
            }
            Logger.Log(LogLevel.Info, "Game exited");
            PatcherManager.RunRestoreAssemblies();
        }
        private static bool HandleConsoleCtrl(int eventType)
        {
            switch (eventType)
            {
            case ConsoleUtils.CTRL_C_EVENT:
            case ConsoleUtils.CTRL_BREAK_EVENT:
            case ConsoleUtils.CTRL_CLOSE_EVENT:
                Logger.Log(LogLevel.Warning, "UULauncher has been closed suddenly! Closing game...");
                GameProcess.Kill();
                PatcherManager.RunRestoreAssemblies();
                break;
            }

            return(true);
        }