我有一个方法,想要使用具有管理员权限的新线程运行它,
[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窗口的任何想法? (或在运行过程中)
答案 0 :(得分:4)
UAC全有或全无。您不能将UAC提示应用于单个线程,仅应用于进程。您需要做的是使用UAC使用特殊命令行启动应用程序,命令行将通知您启动所需的线程。它不必是命令行,您可以使用任何类型的IPC来让生成的进程知道运行该线程。我写了一篇关于在UAC here下启动流程的答案。
您可能还需要考虑获取代码签名证书,以便UAC对话框不会一直说“未知”作为发布者。
更新:根据您上面的评论,您也无法将UAC应用于当前正在运行的流程,只能应用于新流程。