Запустить программу из программы с именем Администратора - C#
Формулировка задачи:
Здравствуйте. Есть программа которая выполняется от имени Администратора. В определенный момент из потока BackgroundWorker программу нужно перезапускать так же от имени Администратора. Но тут проблема.
Перезапуск программы не работает, т.е. программа работает, но снова не запускается.
Программа запускается, но от имени пользователя, а не Администратора.
System.Windows.Forms.Application.Restart();
Process.Start(name); Application.Exit();
Решение задачи: «Запустить программу из программы с именем Администратора»
textual
Листинг программы
static void Main() { WindowsPrincipal pricipal = new WindowsPrincipal(WindowsIdentity.GetCurrent()); bool hasAdministrativeRight = pricipal.IsInRole(WindowsBuiltInRole.Administrator); if (!hasAdministrativeRight) { ProcessStartInfo processInfo = new ProcessStartInfo(); //создаем новый процесс processInfo.Verb = "runas"; //в данном случае указываем, что процесс должен быть запущен с правами администратора processInfo.FileName = Application.ExecutablePath; //указываем исполняемый файл (программу) для запуска try { Process.Start(processInfo); //пытаемся запустить процесс } catch (Win32Exception) { //Ничего не делаем } Application.Exit(); //закрываем текущую копию программы (в любом случае, даже если пользователь отменил запуск с правами администратора в окне UAC) } else //имеем права администратора, значит, стартуем { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Avast()); //} }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д