private void Application_Startup(object sender, StartupEventArgs e) { int verbose = 0; //var optionSet = new OptionSet //{ // { "v|verbose", "verbose output, repeat for more verbosity.", // arg => verbose++ } //} var extra = e.Args; if (e.Args.Length == 1 && e.Args[0] == "-block") { clUnBlock blockAll = new clUnBlock(); blockAll.BlockAllUblock(true); } else if (e.Args.Length == 1 && e.Args[0] == "-unblock") { clUnBlock blockAll = new clUnBlock(); blockAll.BlockAllUblock(false); } else { //Console.WriteLine("Нет Аргументов"); var mainWindow = new MainWindow(); mainWindow.Show(); } }
private void btnBlock_Click(object sender, RoutedEventArgs e) { #region Блокировка заРаз ver 1 //clUnBlock blockAll = new clUnBlock(); //blockAll.BlockAllUblock(true); //ListUpdate(); #endregion #region Блокировка заРаз ver 2 //string baseSoft = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\TaskMan.exe"; //Console.WriteLine("baseSoft= " + baseSoft); //clUnBlock.RunAsAdmin(baseSoft, "b"); #endregion #region Блокировка заРаз ver3 MessageBox.Show("После применения необходимо сделать выход/вход.", "Bloking...(5сек)", MessageBoxButton.OK, MessageBoxImage.Exclamation); if (clUnBlock.IsAdmin()) { clUnBlock blockAll = new clUnBlock(); blockAll.BlockAllUblock(true); } else { try { ////Ver 1 //string baseSoft = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\TaskMan.exe"; //Process.Start(new ProcessStartInfo { FileName = baseSoft, Arguments = "-block", Verb = "runas" }).WaitForExit(); //Ver 2 //установка времени ожидания int timeOut = 5000; //MessageBox.Show("После применения необходимо сделать выход/вход.", "Bloking...(5сек)", MessageBoxButton.OK, MessageBoxImage.Exclamation); //получить путь на котором сидит программа string sysFolder = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); //Создание отдельного процесса ProcessStartInfo pinfo = new ProcessStartInfo(); //Установка имени файла pinfo.FileName = sysFolder + @"\TaskMan.exe"; //Аргументы pinfo.Arguments = "-block"; //Права admin pinfo.Verb = "runas"; //Старт процесса Process p = Process.Start(pinfo); //ждем окончания загрузки окна. p.WaitForExit(timeOut); // Проверяем, запущен ли процесс. if (p.HasExited == false) { //Процесс все ещё запущен if (p.Responding) { //процесс отвечает, закрываем главное окно p.CloseMainWindow(); } else { //Процесс не отвечает, грохаем все p.Kill(); } } } catch { MessageBox.Show("Повышение привелегий не удалось"); } } #endregion log.writeLog("Программа заблокировала реестр."); }