保留管理员权限

本文关键字:权限 管理员 保留 | 更新日期: 2023-09-27 18:36:10

我编写了一个 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
...
您需要的是

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