保留管理员权限

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 的错误,我完全不明白。所以我尝试发布应用程序并以管理员身份安装,但是当应用程序在启动时启动时它不再具有管理员权限。

有人知道如何永久获得管理员权限吗?

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

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

您需要的是权限提升请求。通常它是通过清单完成的,或者如果您只有一个进程,您可以使用提升的权限启动它。 This gives an explanation, and this explains how to embed 清单。

你可以尝试使用自提升,不确定它会如何寻找自动启动应用程序(与@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
...