2012-03-13 18 views
1

System.Diagnostics.Processオブジェクトを使用して、aspxページを通じて "robocopy.exe"というプログラムを実行しようとしています。.aspxページからコマンドラインを使用してプログラムを実行する方法

私のコードは次のようになります。

Process si = new Process(); 
si.StartInfo.UserName = "testuser"; 
si.StartInfo.Password = password; 
si.StartInfo.FileName = "cmd.exe"; 
si.StartInfo.UseShellExecute = false;  

si.StartInfo.Arguments = "c/ robocopy.exe"; 

si.Start(); 
string output = si.StandardOutput.ReadToEnd(); 
si.Close(); 

Label1.Text = output; 

問題はcmd.exeのプロセスが正しく起動されていることですが、何も起こりません。 roboxopy.exeの引数はおそらく実行するcmdプロセスに渡されません!私は間違って何をしているのだろうか?

+0

なぜcmd.exeを実行しようとしていますか?なぜrobocopy.exeを直接実行しないのですか? cmd.exeの代わりにStartInfo.FileNameにrobocopyへのパスを渡します。 –

+0

この実行ファイルを 'cmd'から呼び出す場合は、' c/'の代わりに'/c'を書くべきでしょう。 –

+0

専用サーバーを用意し、exeファイルを実行したりコマンドを実行するように構成する必要があります。 –

答えて

5

権限の問題のようです。通常、IISプロセスが実行されるデフォルトのasp_netアカウントには、サーバーに対する実行権限がありません。これが巨大なセキュリティホールであるためです。あなたが達成しようとしていることについて考えて、別の実行可能ファイルを実行することを伴わない別の方法があるかどうかを確認することを強くお勧めします。

関連する問題