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".最后,应用程序清单文件应如下所示:
现在,构建您的解决方案.然后,您将能够以管理员权限打开所有应用程序.
您的命令至少存在一个问题,这一行:
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和更新版本中是未知的.