📅  最后修改于: 2023-12-03 14:39:48.015000             🧑  作者: Mango
在开发 C# 程序的时候,有时需要请求以管理员身份运行。本文将为您介绍如何在 C# 程序中请求以管理员身份运行。
Windows 中的 UAC(用户帐户控制)可以限制程序的运行权限,通过请求管理员权限可以绕过这一限制。在 C# 中,可以通过以下代码请求管理员权限:
public static void RunAsAdmin(string fileName, string arguments)
{
ProcessStartInfo psi = new ProcessStartInfo
{
FileName = fileName,
Arguments = arguments,
UseShellExecute = true,
Verb = "runas"
};
Process.Start(psi);
}
使用该方法,可以启动一个新进程,并请求以管理员身份运行。例如,运行一个需要管理员权限的程序:
RunAsAdmin("notepad.exe", "");
在 C# 中,还可以通过 app.manifest 文件请求管理员权限。在 Visual Studio 中创建一个 C# 项目时,会自动生成一个默认的 app.manifest 文件。在该文件中,可以添加以下节点:
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
该节点会请求以管理员权限运行程序,当程序运行时,操作系统将提示是否允许程序以管理员身份运行。
在 C# 中,还可以通过 PowerShell 请求管理员权限。在运行需要管理员权限的代码前,可以执行以下代码请求管理员权限:
ProcessStartInfo psi = new ProcessStartInfo("powershell.exe")
{
UseShellExecute = true,
Verb = "runas",
Arguments = $"-Command \"& {{ {command} }}\""
};
Process.Start(psi);
其中,command
为需要以管理员权限运行的 PowerShell 命令。此方法需要系统上安装了 PowerShell。
以上三种方法均可以请求以管理员身份运行,具体选择哪种方法可以根据实际情况选择。