Запустить программу из программы с именем Администратора - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Есть программа которая выполняется от имени Администратора. В определенный момент из потока BackgroundWorker программу нужно перезапускать так же от имени Администратора. Но тут проблема. Перезапуск программы не работает, т.е. программа работает, но снова не запускается.
Листинг программы
  1. System.Windows.Forms.Application.Restart();
Программа запускается, но от имени пользователя, а не Администратора.
Листинг программы
  1. Process.Start(name);
  2. Application.Exit();

Решение задачи: «Запустить программу из программы с именем Администратора»

textual
Листинг программы
  1. static void Main()
  2.         {
  3.             WindowsPrincipal pricipal = new WindowsPrincipal(WindowsIdentity.GetCurrent());
  4.             bool hasAdministrativeRight = pricipal.IsInRole(WindowsBuiltInRole.Administrator);
  5.  
  6.             if (!hasAdministrativeRight)
  7.             {
  8.                 ProcessStartInfo processInfo = new ProcessStartInfo(); //создаем новый процесс
  9.                 processInfo.Verb = "runas"; //в данном случае указываем, что процесс должен быть запущен с правами администратора
  10.                 processInfo.FileName = Application.ExecutablePath; //указываем исполняемый файл (программу) для запуска
  11.                 try
  12.                 {
  13.                     Process.Start(processInfo); //пытаемся запустить процесс
  14.                 }
  15.                 catch (Win32Exception)
  16.                 {
  17.                     //Ничего не делаем
  18.                 }
  19.                 Application.Exit(); //закрываем текущую копию программы (в любом случае, даже если пользователь отменил запуск с правами администратора в окне UAC)
  20.             }
  21.             else //имеем права администратора, значит, стартуем
  22.             {
  23.                 Application.EnableVisualStyles();
  24.                 Application.SetCompatibleTextRenderingDefault(false);
  25.                 Application.Run(new Avast());
  26.             //}
  27.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы