views:

94

answers:

0

I am having trouble reading the output from a process when running several processes from .net. One example is the 'netsh' command.

I am trying to read all scopes from a dhcp server.

It is only failing in web applications and unit tests.

In the below code the 'message' is an empty string.

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();
}

Some points

  • running .net 3.5 on VS 2008
  • fails in a web app ie cassini
  • fails in a unit test (using resharper)
  • works from a console app
  • works from a windows app
  • works from the command line
  • used to work in Windows XP
  • I have tried turning off UAC
  • other commands work. for exampl ipconfig
  • I have tried running VS as admin
  • yes i know there are other ways of doing this and am looking into them. but i would still like to know why the process approach does not work.

Regards

Simon

Edit:

Turns out it is only on windows 7 64bit

MS Premier support has replicated the issue and is working on a resolution/workaround.