📌  相关文章
📜  c# 请求以管理员身份运行 - C# (1)

📅  最后修改于: 2023-12-03 14:39:48.015000             🧑  作者: Mango

C# 请求以管理员身份运行

在开发 C# 程序的时候,有时需要请求以管理员身份运行。本文将为您介绍如何在 C# 程序中请求以管理员身份运行。

方法一:通过 UAC 请求管理员权限

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", "");
方法二:通过 app.manifest 文件请求管理员权限

在 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>

该节点会请求以管理员权限运行程序,当程序运行时,操作系统将提示是否允许程序以管理员身份运行。

方法三:通过 PowerShell 请求管理员权限

在 C# 中,还可以通过 PowerShell 请求管理员权限。在运行需要管理员权限的代码前,可以执行以下代码请求管理员权限:

ProcessStartInfo psi = new ProcessStartInfo("powershell.exe")
{
    UseShellExecute = true,
    Verb = "runas",
    Arguments = $"-Command \"& {{ {command} }}\""
};
Process.Start(psi);

其中,command 为需要以管理员权限运行的 PowerShell 命令。此方法需要系统上安装了 PowerShell。

以上三种方法均可以请求以管理员身份运行,具体选择哪种方法可以根据实际情况选择。