У меня есть приложение, которому требуется повышение уровня UAC.
У меня есть код, который позволяет мне дать это, но приложение открывается дважды ... что является проблемой ..
так вот код в Form1:
public Form1()
{
InitializeComponent();
WindowsPrincipal pricipal = new WindowsPrincipal(WindowsIdentity.GetCurrent());
bool hasAdministrativeRight = pricipal.IsInRole(WindowsBuiltInRole.Administrator);
if (!hasAdministrativeRight)
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.UseShellExecute = true;
startInfo.WorkingDirectory = Environment.CurrentDirectory;
startInfo.FileName = Application.ExecutablePath;
startInfo.Verb = "runas";
try
{
Process p = Process.Start(startInfo);
}
catch (System.ComponentModel.Win32Exception ex)
{
return;
}
}
}
и это код программы .cs
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
при отладке я обнаружил, что сначала он выполняется
Процесс p = Process.Start (startInfo);
, который открывает диалоговое окно повышения прав UAC приложения, а затем открывает приложение
но затем он переходит к
Application.Run (новая Form1 ());
в main () и снова открывает приложение.
Я не хочу, чтобы оно снова открывало приложение ...
Я новичок в этом, есть ли что-то, что я делаю неправильно, и нужно ли мне закрывать UAC после его открытия ..
спасибо