保留管理员权限
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
...
我编写了一个 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
...