【发布时间】:2011-09-18 18:22:57
【问题描述】:
我有一个需要 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());
}
在调试时我发现它首先执行
进程 p = Process.Start(startInfo);
打开应用程序 UAC 提升对话框,然后打开应用程序
但后来它去了
Application.Run(new Form1());
在 main() 中并再次打开应用程序。
我不想让它再次打开应用程序...
我是新手,有什么我做错了吗?我需要在 UAC 打开后关闭它吗?
谢谢
【问题讨论】:
-
所以这对我来说很好......因为我是从 VS 运行的,它要求我重新启动应用程序,我这样做了。然后它问我它将在我的计算机中进行更改..但我在信息中看到这些更改只会影响当前的应用程序。所以我允许了。现在这个应用程序已经提升了 UAC 权限。我运行了另一个应用程序,发现我不是管理员,这是需要的。