是否可以要求一种方法具有管理员权限?
像这样:
[RequireAdminRightsForThisMethod()] private void TheMethod(){ // Do something }
您可以PrincipalPermission在方法中添加属性,以要求其执行具有管理权限:
PrincipalPermission
[PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")] public void MyMethod() { }
在下面的文章中对此进行了更详细的描述:
C#.Net中的安全性原则和本地管理员权限
如果您正在寻找一种提升现有流程的方法,我会怀疑这是否可行,因为启动时在流程级别将管理员特权授予某个流程(请参阅此相关问题)。您必须以“管理员”身份运行应用程序才能获得所需的行为。
但是,有些技巧可以使您做自己想做的事情,但要注意,这可能会带来严重的安全风险。请参阅MSDN论坛中的以下主题:
启动MyElevatedCom服务器而不会提示标准用户的管理员凭据
更新(来自评论)
看来,如果更新需要提升,则最好由单独的进程(另一个可执行文件或使用命令行开关调用的应用程序)完成应用程序更新。对于该单独的过程,您可以按以下方式请求提升:
var psi = new ProcessStartInfo(); psi.FileName = "path to update.exe"; psi.Arguments = "arguments for update.exe"; psi.Verb = "runas"; var process = new Process(); process.StartInfo = psi; process.Start(); process.WaitForExit();