1

.netから複数のプロセスを実行しているときに、プロセスからの出力を読み取るのに問題があります。1つの例は「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();
}

いくつかのポイント

  • VS2008で.net3.5を実行している
  • Webアプリ、つまりカッシーニで失敗する
  • ユニットテストで失敗する(resharperを使用)
  • コンソールアプリから動作します
  • Windowsアプリから動作します
  • コマンドラインから動作します
  • 以前はWindowsXPで動作していました
  • UACをオフにしてみました
  • 他のコマンドは機能します。たとえばipconfigの場合
  • 管理者としてVSを実行してみました
  • はい、私はこれを行う他の方法があることを知っており、それらを調べています。しかし、プロセスアプローチが機能しない理由を知りたいのですが。

編集:

それはWindows764ビットにのみあることが判明しました

MS Premierサポートは問題を再現し、解決/回避策に取り組んでいます。

4

0 に答える 0