Запуск приложения от имени администратора

AionLight

Всем доброго времени суток. Прежде чем начнете кидать камнями и кричать используй поиск прочитайте до конца и поймите суть моей проблемы.Дело обстоит так. У меня есть исходники лаунчера для клиента mmorpg игры aion. Мне необходимо сделать так что бы при запуске самого лаунчера он запускался с обычными правами пользователя, но при нажатии на кнопку играть, он запуск уже готовый античит от имени администратора причем с некоторыми параметрами.Поясняю: Вот как происходит запуск клиента игры в стандартном режиме
        private void button_play_Click(object sender, EventArgs e)
        {
            playClickSound();
            deleteFiles();
 
            bool exists = System.IO.File.Exists(dir + "\\bin32\\aion.bin");
 
            if (!exists)
            {
                System.Windows.Forms.MessageBox.Show("bin32\\aion.bin не был найден!", "Ошибка");
            }
            else
            {
                string Arguments = String.Empty;
                string log = Properties.Settings.Default.login;
                string pass = Properties.Settings.Default.pass;
 
                Arguments = "\\bin32\\aion.bin -account:" + log + " -password:" + pass + "";
 
                STARTUPINFO si = new STARTUPINFO();
                PROCESS_INFORMATION pi = new PROCESS_INFORMATION();
                CreateProcess(dir + "\\bin32\\aion.bin", Arguments, IntPtr.Zero, IntPtr.Zero, false, 0, IntPtr.Zero, null, ref si, out pi);
 
                if (!Properties.Settings.Default.savePass)
                {
                    Properties.Settings.Default.pass = String.Empty;
 
                    Properties.Settings.Default.Save();
                    Properties.Settings.Default.Reload();
                }
 
                Close();
            }
То есть при нажатии на определенную кнопку лаунчер отыскивает файл aion.bin и запускает его, причем если в отдельной форме логина и пароля заблаговременно его указать, то входя в игру этого делать уже не придется (Удобно, не приходиться по 100 раз вводить логин и пароль). Суть проблемы в том что теперь необходимо запускать файл античита ActiveLauncher.exe, с этим сложности нет, просто меняю допустим aion.bin на ActiveLauncher.exe и все отлично работает даже с параметрами логина ипароля. Но проблема в том что файл ActiveLauncher.exe работает только от имени администратора и имеет цифровую подпись. Так вот, необходимо запускать из моего основного лаунчреа ActiveLauncher.exe от имени администратора и с параметрами логина и пароля.Поиска в интернет нашел вот что(На этом форуме также видел)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Security.Principal;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            WindowsPrincipal pricipal = new WindowsPrincipal(WindowsIdentity.GetCurrent());
            bool hasAdministrativeRight = pricipal.IsInRole(WindowsBuiltInRole.Administrator);
            if (hasAdministrativeRight == false)
            {
                ProcessStartInfo processInfo = new ProcessStartInfo(); //создаем новый процесс
                processInfo.Verb = "runas"; //в данном случае указываем, что процесс должен быть запущен с правами администратора
                processInfo.FileName = Application.ExecutablePath; //указываем исполняемый файл (программу) для запуска
                try
                {
                    Process.Start(processInfo); //пытаемся запустить процесс
                }
                catch (Win32Exception)
                {
                    //Ничего не делаем, потому что пользователь, возможно, нажал кнопку "Нет" в ответ на вопрос о запуске программы в окне предупреждения UAC (для Windows 7)
                }
                Application.Exit(); //закрываем текущую копию программы (в любом случае, даже если пользователь отменил запуск с правами администратора в окне UAC)
            }
            else
            {
                //имеем права администратора, значит, стартуем
            }
        }
    }
}
Как мне правильно адоптировать все это под мой метод запуска? Просидел всю ночь, как только не пробовал проблемы одни итеже, Либо не запускает вовсе ничего, либо запускает от имени администратора но без конфигурации логина и пароля, либо вообще не запускает от имени администратора.Помогите пожалуйста разобраться. Как все это правильно сделать? Если необходимо, исходный код лаунчера который я использую, предоставлю.
1 ответ