2010-12-02 11 views
0

次のコードを使用してC#からバッチファイルを実行しています。次のコードは、私のWindowsサービスの一部です。このコードはWindows XPでは問題なく動作しますが、Windowsサーバー2003 OSにWindowsサービスを展開すると、終了コード1(失敗)が返されます。誰かが私が行方不明を知っていますか? Windowsサービスに特別な許可を与える必要がありますか?サービスはローカルシステムサービスとしてインストールされます。Windowsサーバー2003のWindowsサービスからバッチファイルを実行できませんOS

 ProcessStartInfo psi = new ProcessStartInfo(); 

     //specify the name and arguments to pass to the command prompt 
     psi.FileName = ConfigurationManager.AppSettings["BatchFilePath"]; 
     psi.Arguments = fileName; 


     //Create new process and set the starting information 
     Process p = new Process(); 
     p.StartInfo = psi; 

     //Set this so that you can tell when the process has completed 
     p.EnableRaisingEvents = true; 

     p.Start(); 

     //wait until the process has completed 
     while (!p.HasExited) 
     { 
      System.Threading.Thread.Sleep(1000); 
     } 

     //check to see what the exit code was 
     if (p.ExitCode != 0) 
     { 
      logger.Write("Exit Code" + p.ExitCode); 
     } 
+1

成功したバッチファイルは何ですか? – Oded

+0

成功すると0が返されます –

+0

Windows Server 2003では、コマンドプロンプトから直接バッチファイルを実行でき、正常に動作します。しかし、Windowsサービスからはうまくいきません。 –

答えて

1

私の次のセットは、あなたはそれが動作するときのようにログインしているユーザーとして実行するようにサービスを設定しようとするだろう。そうすれば、ネットワークサービスアカウント固有のものであるかどうかを知ることができます。

+0

あなたは男です!出来た!!! –

+0

Windows Server 2003のように私がログインしているユーザーとしてサービスを実行するように変更しました。正常に動作します。私が今思っていることは、もし私がログインしていなければ、それは動作するかどうかです。私は今これをテストするつもりです。管理者権限を持つアカウントでサービスを実行する必要があると思いますか?私がログインしているユーザー名には管理者権限があります。 とにかく、貴重なご意見ありがとうございます。 –

+0

実行する必要がある最小の特権を与える必要がない場合は、管理者特権を与えたくないのが理想的です。おそらく、ユーザー特権で十分でしょう。 –

関連する問題