从 .net 运行多个进程时,我无法读取进程的输出。一个例子是“netsh”命令。
我正在尝试从 dhcp 服务器读取所有范围。
它仅在 Web 应用程序和单元测试中失败。
在下面的代码中,“消息”是一个空字符串。
var arguments = @"-r myDhcpServer.myDomain dhcp server \\myDhcpServer.myDomain show scope";
var startInfo = new ProcessStartInfo("netsh", arguments)
{
CreateNoWindow = true,
UseShellExecute = false,
RedirectStandardOutput = true
};
using (var cmdProcess = Process.Start(startInfo))
{
var message = cmdProcess.StandardOutput.ReadToEnd();
Debug.WriteLine(message);
cmdProcess.WaitForExit();
}
几点
- 在 VS 2008 上运行 .net 3.5
- 在网络应用程序中失败,即卡西尼
- 单元测试失败(使用 resharper)
- 从控制台应用程序工作
- 从 Windows 应用程序工作
- 从命令行工作
- 曾经在 Windows XP 中工作
- 我试过关闭 UAC
- 其他命令有效。例如 ipconfig
- 我试过以管理员身份运行 VS
- 是的,我知道还有其他方法可以做到这一点,并且正在研究它们。但我仍然想知道为什么流程方法不起作用。
编辑:
原来它只在windows 7 64bit上
MS Premier 支持已经复制了该问题,并正在研究解决方案/解决方法。