使用C#中的参数以管理员身份运行CMD

Eri*_*Kim 4 c# installation cmd admin

我希望以C#中的cmd.exe参数作为管理员运行,以防止UAC弹出.这是将其用作自动安装过程所必需的.我传入的命令只是一个安装文件(.exe)的路径,用于安静安装./q

当我运行此代码时,有一个CMD弹出窗口,但它运行就好像它没有执行任何操作.

public static string ExecuteCommandAsAdmin(string command)
{

    ProcessStartInfo procStartInfo = new ProcessStartInfo()
    {
        RedirectStandardError = true,
        RedirectStandardOutput = true,
        UseShellExecute = false,
        CreateNoWindow = true,
        FileName = "runas.exe",
        Arguments = "/user:Administrator cmd /K " + command
    };

    using (Process proc = new Process())
    {
        proc.StartInfo = procStartInfo;
        proc.Start();

        string output = proc.StandardOutput.ReadToEnd();

        if (string.IsNullOrEmpty(output))
            output = proc.StandardError.ReadToEnd();

        return output;
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 7

那些找不到问题解决方案的人我已经找到了这个解决方案:在解决方案文件中,选择

添加=>新项=>应用程序清单文件

然后在C#上打开它.

在此输入图像描述

在应用程序清单文件中,将"asInvoker"重命名为"requireAdministrator".最后,应用程序清单文件应如下所示:

在此输入图像描述

现在,构建您的解决方案.然后,您将能够以管理员权限打开所有应用程序.


Raf*_*ael 6

您的命令至少存在一个问题,这一行:

Arguments = "/user:Administrator cmd /K " + command
Run Code Online (Sandbox Code Playgroud)

应该:

Arguments = "/user:Administrator \"cmd /K " + command + "\""
Run Code Online (Sandbox Code Playgroud)

此外,这不会作为一个完全自动化的过程,因为它将要求管理员的密码在Windows Vista和更新版本中是未知的.