运行提升过程

Bal*_*i C 5 c# process admin-rights

我正在尝试使用以下代码运行cmd命令:

ProcessStartInfo cmd = new ProcessStartInfo("cmd.exe");
cmd.RedirectStandardInput = true;
cmd.RedirectStandardOutput = true;
cmd.RedirectStandardError = true;
cmd.UseShellExecute = false;
cmd.CreateNoWindow = true;
cmd.WindowStyle = ProcessWindowStyle.Hidden;
Process exec = Process.Start(cmd);
exec.StandardInput.WriteLine("sc create \"BaliService\" binPath= \"{0}\\BaliService.exe\"", Directory.GetCurrentDirectory());
Run Code Online (Sandbox Code Playgroud)

此命令需要管理员privelages,如果我以管理员身份运行cmd并键入命令它完美运行但不是当我以管理员身份运行此应用程序时.我已经添加了

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

每次打开exe时提示uac的清单文件.

我已经看到了关于这个的多个问题,他们似乎都建议在提升的应用程序下运行的任何进程都具有相同的权限,但这对我不起作用.

我试过cmd.Verb = "runas";但没有骰子.

shf*_*301 13

您需要设置UseShellExecutetrueVerb被尊重,它必须被设置为"假"来重定向标准输出.你不能两者都做.

我非常确定Windows也不允许您在管理/非管理安全边界上重定向标准输入/输出/错误.您将不得不找到一种不同的方式来从以管理员身份运行的程序中获取输出.

我没有读过这篇文章,但这可能会为您提供更多信息:http: //www.codeproject.com/KB/vista-security/UAC__The_Definitive_Guide.aspx