私は、Webアプリケーションから別のユーザーとしてバッチファイルを実行しようとしています。何らかの理由で、バッチファイルがハングアップします。私は "cmd.exe"がタスクマネージャーで実行されているのを見ることができますが、永遠にそこに座っていて、殺すことができず、バッチファイルは実行されていません。ここに私のコードがあります:あなたが推測していなかった場合はC#.Net:なぜ私のProcess.Start()がぶら下がっていますか?
SecureString password = new SecureString();
foreach (char c in "mypassword".ToCharArray())
password.AppendChar(c);
ProcessStartInfo psi = new ProcessStartInfo();
psi.WorkingDirectory = @"c:\build";
psi.FileName = Environment.SystemDirectory + @"\cmd.exe";
psi.Arguments = "/q /c build.cmd";
psi.UseShellExecute = false;
psi.UserName = "builder";
psi.Password = password;
Process.Start(psi);
、このバッチファイルは、自分のアプリケーション(このコマンドを実行しているものとは異なるアプリケーション)を構築します。
Process.Start(psi);行はただちに戻りますが、バッチファイルは実行せずにハングアップしているようです。何か案は?
EDIT:バッチファイルの内容については、私の答えを参照してください。
- output.txtは決して作成されません。
私はこれらの行を追加:
psi.RedirectStandardOutput = true;
Process p = Process.Start(psi);
String outp = p.StandardOutput.ReadLine();
をし、デバッグモードでそれらを介して辞任しました。コードはReadLine()
にあります。私は困惑している!
バッチファイルのコードを投稿し、バッチファイルからエコーを発信して、起動していることを確認できましたか? –