我有一个需要 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 后我是否需要关闭它?
最佳答案
您无需干预所有这些以确保您的应用程序始终以提升的权限运行。你可以简单地 add an application manifest它指示 Windows 以提升的方式运行您的应用程序,并且 UAC 提示将出现,您无需编写一行代码。
有一个相关问题的答案也描述了如何在此处添加 list :How can I embed an application manifest into an application using VS2008?
关于c# - 为应用程序提供提升的 UAC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6412896/