打开快捷方式时重定向StandardIn

时间:2010-10-19 03:27:31

标签: c# windows-7

由于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应用程序。

任何人都可以帮我创建一个提升的命令提示符,我可以捕获标准输入吗?或者,如果有人知道如何以编程方式升级命令提示符?

1 个答案:

答案 0 :(得分:0)

如果没有人想出一个更好的主意(非常讨人喜欢),这就是围绕我办公室中一个更狡猾的工作:

  1. 复制cmd.exe(指向此文件的链接)
  2. 将此文件粘贴到其他目录
  3. 将新粘贴的文件重命名为不同的文件
  4. 将此新文件的权限设置为“以管理员身份运行”
  5. 您仍会弹出升级对话框,但至少可以捕获此有效Win32应用程序的standardIn!