title: Why would Process.WaitForExit throw a "no process" exception even when a process does exist?
body: <p>I have a windows service containing this code:</p>
  
  <pre><code>    public static void ExtractTextInner(string source, string destination)
      {   
          ProcessStartInfo startInfo = new ProcessStartInfo();
          startInfo.FileName = EXTRACTOR_EXE_FILEPATH
          startInfo.Arguments = "\"" + source + "\" \"" + destination + "\"";
          startInfo.CreateNoWindow = true;
          startInfo.WindowStyle = ProcessWindowStyle.Hidden;
  
          Process process = new Process();
          process.StartInfo = startInfo;
  
          process.Start();
          process.WaitForExit();
          int exitCode = process.ExitCode;
          process.Close();
          if (exitCode != 0)
          {
              switch (exitCode)
              {
                  case 1:
                  throw new ApplicationException("IFilter Extraction Failed");
                  default:
                  throw new ApplicationException("Unknown Exit Code:" + exitCode.ToString());
              }
          }
      }
  </code></pre>
  
  <p>The purpose of this code is run an IFilter extract on a document, we use a seperate process because some IFilters are notoriously flaky.</p>
  
  <p>Now this code runs perfectly fine on Windows 7 and Server 2008 R2 boxes but on a Windows Server 2003 the <code>WaitForExit</code> immediately throws a "There is no process associated with this Process object" exception.  The process does exist and completes its task without a problem.</p>
  
  <p>Anyone seen this? Can anyone shed any light on why WaitForExit would thow this error?</p>
  
  <p><strong>Additional Info</strong></p>
  
  <p>If I place this code in a Console App and run it works fine on the Windws Server 2003 box as well, hence it would appear to be a specific problem running this in a Service on a Windows Server 2003 box.</p>