单一方法的pipe理权限

是否有可能要求一个单一的方法的pipe理员权限?

像这样的东西:

[RequireAdminRightsForThisMethod()] private void TheMethod(){ // Do something } 

您可以将一个PrincipalPermission属性添加到您的方法来要求其执行的pipe理权限:

 [PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")] public void MyMethod() { } 

这在下面的文章中有更详细的描述:

C#.Net中的安全原则和本地pipe理权限

如果您正在寻找一种方法来提升已经存在的进程,我怀疑这是可能的,因为pipe理员权限是在进程级别给启动时的进程(请参阅相关问题 )。 您将不得不以pipe理员身份运行您的应用程序以获得所需的行为。

但是,有一些技巧可以让你做你想做的事情,但是要警告,这可能会带来严重的安全风险。 请参阅MSDN论坛中的以下主题:

在不提示来自标准用户的pipe理员证书的情况下启动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(); 

一个方法可能需要pipe理权限才能运行,但在执行方法时无法自动提升为Admin。