是否可以在应用程序中显示一个线程的UAC对话框?

时间:2011-10-29 12:52:54

标签: c# wpf security

我有一个方法,想要使用具有管理员权限的新线程运行它,

[PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")]
    void Install()
    {
      //do some thing
    }

我以这种方式运行,

installerTh = new Thread(new ThreadStart(Install));
        installerTh.Name = "Installer";
        installerTh.Start();

但它给了我错误

  

System.Security.SecurityException未处理

     

消息=主要许可请求失败。

在运行此线程之前显示UAC窗口的任何想法? (或在运行过程中)

1 个答案:

答案 0 :(得分:4)

UAC全有或全无。您不能将UAC提示应用于单个线程,仅应用于进程。您需要做的是使用UAC使用特殊命令行启动应用程序,命令行将通知您启动所需的线程。它不必是命令行,您可以使用任何类型的IPC来让生成的进程知道运行该线程。我写了一篇关于在UAC here下启动流程的答案。

您可能还需要考虑获取代码签名证书,以便UAC对话框不会一直说“未知”作为发布者。

更新:根据您上面的评论,您也无法将UAC应用于当前正在运行的流程,只能应用于新流程。