static void Main(string[] args) { Program.args = args; mConsole = WinConsole.Initialize(TestArg("-console")); if (TestArg("-help") || TestArg("/?")) { ShowHelp(); return; } if (TestArg("-dbg_wait")) { MessageBox.Show("Waiting for debugger. (press ok when attached)"); } Console.WriteLine("Starting..."); appPath = Path.GetDirectoryName(Application.ExecutablePath); System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly(); FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location); mVersion = fvi.FileMajorPart + "." + fvi.FileMinorPart; if (fvi.FileBuildPart != 0) { mVersion += (char)('a' + (fvi.FileBuildPart - 1)); } Translate.Load(); AppLog Log = new AppLog(); AppLog.Line("{0}, Version v{1} by David Xanatos", mName, mVersion); AppLog.Line("This Tool is Open Source under the GNU General Public License, Version 3\r\n"); ipc = new PipeIPC("wumgr_pipe"); var client = ipc.Connect(100); if (client != null) { AppLog.Line("Application is already running."); client.Send("show"); string ret = client.Read(1000); if (!ret.Equals("ok", StringComparison.CurrentCultureIgnoreCase)) { MessageBox.Show(Translate.fmt("msg_running")); } return; } if (!MiscFunc.IsAdministrator() && !MiscFunc.IsDebugging()) { Console.WriteLine("Trying to get admin privileges..."); if (SkipUacRun()) { Application.Exit(); return; } if (!MiscFunc.IsRunningAsUwp()) { Console.WriteLine("Trying to start with 'runas'..."); // Restart program and run as admin var exeName = Process.GetCurrentProcess().MainModule.FileName; string arguments = "\"" + string.Join("\" \"", args) + "\""; ProcessStartInfo startInfo = new ProcessStartInfo(exeName, arguments); startInfo.UseShellExecute = true; startInfo.Verb = "runas"; try { Process.Start(startInfo); Application.Exit(); return; } catch { //MessageBox.Show(Translate.fmt("msg_admin_req", mName), mName); AppLog.Line("Administrator privileges are required in order to install updates."); } } } wrkPath = appPath; if (!FileOps.TestWrite(GetINIPath())) { Console.WriteLine("Can't write to default working directory."); string downloadFolder = KnownFolders.GetPath(KnownFolder.Downloads); if (downloadFolder == null) { downloadFolder = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + @"\Downloads"; } wrkPath = downloadFolder + @"\WuMgr"; try { if (!Directory.Exists(wrkPath)) { Directory.CreateDirectory(wrkPath); } } catch { MessageBox.Show(Translate.fmt("msg_ro_wrk_dir", wrkPath), mName); } } /*switch(FileOps.TestFileAdminSec(mINIPath)) * { * case 0: * AppLog.Line("Warning wumgr.ini was writable by non administrative users, it was renamed to wumgr.ini.old and replaced with a empty one.\r\n"); * if (!FileOps.MoveFile(mINIPath, mINIPath + ".old", true)) * return; * goto case 2; * case 2: // file missing, create * FileOps.SetFileAdminSec(mINIPath); * break; * case 1: // every thign's fine ini file is only writable by admins * break; * }*/ AppLog.Line("Working Directory: {0}", wrkPath); Agent = new WuAgent(); ExecOnStart(); Agent.Init(); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new WuMgr()); Agent.UnInit(); ExecOnClose(); }
static void Main(string[] args) { Program.args = args; mConsole = WinConsole.Initialize(TestArg("-console")); if (TestArg("-help") || TestArg("/?")) { ShowHelp(); return; } if (TestArg("-dbg_wait")) { MessageBox.Show("Waiting for debugger. (press ok when attached)"); } Console.WriteLine("Starting..."); System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly(); FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location); mVersion = fvi.FileMajorPart + "." + fvi.FileMinorPart; if (fvi.FileBuildPart != 0) { mVersion += (char)('a' + (fvi.FileBuildPart - 1)); } AppLog Log = new AppLog(); AppLog.Line("{0}, Version v{1} by David Xanatos", mName, mVersion); AppLog.Line("This Tool is Open Source under the GNU General Public License, Version 3\r\n"); appPath = Path.GetDirectoryName(Application.ExecutablePath); ipc = new PipeIPC("wumgr_pipe"); var client = ipc.Connect(100); if (client != null) { AppLog.Line("Application is already running."); client.Send("show"); string ret = client.Read(1000); if (!ret.Equals("ok", StringComparison.CurrentCultureIgnoreCase)) { MessageBox.Show(MiscFunc.fmt("Application is already running.")); } return; } if (IsAdministrator() == false) { Console.WriteLine("Trying to get admin privilegs..."); if (!SkipUacRun()) { Console.WriteLine("Trying to start with 'runas'..."); // Restart program and run as admin var exeName = Process.GetCurrentProcess().MainModule.FileName; string arguments = "\"" + string.Join("\" \"", args) + "\""; ProcessStartInfo startInfo = new ProcessStartInfo(exeName, arguments); startInfo.UseShellExecute = true; startInfo.Verb = "runas"; try { Process.Start(startInfo); } catch { MessageBox.Show(MiscFunc.fmt("The {0} requirers Administrator privilegs.\r\nPlease restart the application as Administrator.\r\n\r\nYou can use the option Start->'Bypass User Account Control' to solve this issue for future startsups.", mName), mName); } } Application.Exit(); return; } mINIPath = appPath + @"\wumgr.ini"; /*switch(FileOps.TestFileAdminSec(mINIPath)) * { * case 0: * AppLog.Line("Warning wumgr.ini was writable by non administrative users, it was renamed to wumgr.ini.old and replaced with a empty one.\r\n"); * if (!FileOps.MoveFile(mINIPath, mINIPath + ".old", true)) * return; * goto case 2; * case 2: // file missing, create * FileOps.SetFileAdminSec(mINIPath); * break; * case 1: // every thign's fine ini file is only writable by admins * break; * }*/ Agent = new WuAgent(); ExecOnStart(); Agent.Init(); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new WuMgr()); Agent.UnInit(); ExecOnClose(); }