繁体   English   中英

保留管理员权限

[英]Keeping administrator privileges

我编写了一个WinForms C#应用程序,该应用程序需要管理员权限才能工作,并且还需要在计算机启动时启动(带有注册表)。

 RegistryKey reg = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
 reg.SetValue("My app", Application.ExecutablePath.ToString());

因此,我尝试将清单更改为requiredAdministrator并收到有关clickOnce的错误,我完全不理解。 因此,我尝试发布该应用程序并以管理员身份进行安装,但是当该应用程序在启动时启动时,它不再具有管理员权限。

有谁知道如何永久获得管理员特权?

您可以转到快捷方式=>属性=>高级... =>选中以管理员身份运行。

现在,您已经配置了快捷方式以管理员权限启动应用程序。

您需要的是权限提升请求。 通常,它是通过清单来完成的,或者如果您只有一个过程,则可以使用提升的权限来启动它。 给出了一个解释,并且解释了如何嵌入清单。

您可以尝试使用自动提升功能,无需确定自动启动应用程序的外观(与@peer答案相同)

// at application start
var identity = WindowsIdentity.GetCurrent();
var principal = new WindowsPrincipal(identity);
bool isAdmin = principal.IsInRole(WindowsBuiltInRole.Administrator);

// if not admin - elevate
if(!isAdmin)
{
    var info = new ProcessStartInfo(Application.ExecutablePath) { Verb = "runas" };
    Process.Start(info);
    return; // exit
}

// if we are here - application runs as admin
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM