我想用下面的代码运行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());
这个命令需要管理员privelages,如果我下运行cmd以管理员身份,然后键入命令它完美,但不是当我运行这个应用程序为管理员我已经加入
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
到UAC提示每次我打开exe文件时的清单文件。
我已经看到了这个问题的多个问题,他们似乎都建议任何进程运行在高架应用程序将具有相同的权利,但这不适合我。我试过cmd.Verb = "runas";
但没有骰子。
尝试改变'cmd.UseShellExecute'到TRUE;并保持'runas'动词。 – keyboardP 2011-12-31 21:09:12
只是试过了,但得到了这个错误'为了重定向IO流,Process对象必须将UseShellExecute属性设置为false。“谢谢。 – 2011-12-31 21:11:45
这就是降压停止的地方,你不能两面都有。 UAC可以防止高架桥梁的高架起降能力。您可以重新定向的唯一方法是首先提升自己。 – 2011-12-31 23:24:33