我的应用程序需要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;
}
}
}
这是programs.cs的代码:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
通过调试,我发现它首先执行
Process p = Process.Start(startInfo);
它打开应用程序的UAC权限弹窗,然后打开应用程序
但接下来它进入
Application.Run(new Form1());
在main()中再次打开了应用程序。
我不想让它再次打开此应用程序。
我是新手,所以我想问:我有做错什么吗?是否需要在打开UAC后关闭它?