由于UAC的乐趣,我需要以编程方式打开提升的命令提示符,然后重定向标准输入,以便我可以使用time
命令。
如果我使用
,我可以打开链接(.lnk文件)Process ecp = System.Diagnostics.Process.Start("c:/ecp.lnk");
但是,如果我使用此方法,我无法重定向standardIn。
如果我使用StartProcessInformation方法(如果你正在调用exe,那就非常有效)
ProcessStartInfo processStartInfo = new ProcessStartInfo("c:/ecp.lnk");
processStartInfo.UseShellExecute = false;
processStartInfo.ErrorDialog = false;
processStartInfo.RedirectStandardError = true;
processStartInfo.RedirectStandardInput = true;
processStartInfo.RedirectStandardOutput = true;
Process process = new Process();
process.StartInfo = processStartInfo;
bool processStarted = process.Start();
StreamWriter inp = process.StandardInput;
StreamReader oup = process.StandardOutput;
StreamReader errorReader = process.StandardError;
process.WaitForExit();
我收到错误消息: 指定的可执行文件不是有效的Win32应用程序。
任何人都可以帮我创建一个提升的命令提示符,我可以捕获标准输入吗?或者,如果有人知道如何以编程方式升级命令提示符?
答案 0 :(得分:0)
如果没有人想出一个更好的主意(非常讨人喜欢),这就是围绕我办公室中一个更狡猾的工作:
您仍会弹出升级对话框,但至少可以捕获此有效Win32应用程序的standardIn!