サーバー上で、コマンドプロンプトを開き、ファイルをPDFに変換する実行可能ファイルを呼び出しようとしています。このため私はPDFCreatorオープンソースプログラムを使用しています。C#/ ASP.NET/IIS 7.5/Win7環境で実行可能なコマンドプロンプトを呼び出そうとしています
C#では私はこのコードを呼び出しています:
ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd.exe");
processStartInfo.RedirectStandardInput = true;
processStartInfo.RedirectStandardOutput = true;
processStartInfo.UseShellExecute = false;
Process process = Process.Start(processStartInfo);
process.StandardInput.WriteLine(@"cd c:\program files (x86)\pdfcreator");
process.StandardInput.WriteLine(@"PDFCreator.exe /PF""c:\dwf\dwf.dwf""");
それは何の結果が得られていない、まだ、エラーなしで実行されます。このPDFCreator.exeは、開く別のプログラムであるAutodesk Design Reviewを呼び出し、PDFドライバを使用してPDFに出力し、ファイルを保存します。あなたが見るコマンドは、私によってスタンドアロンで実行されているうまく動作します。
他のスレッドを精査することで、セキュリティが私の問題になる可能性があります。だから私はPDFCreatorとDesign Reviewフォルダ/実行可能ファイルに行き、NETWORK、NETWORK SERVICE、IIS_WPG、IIS_IUSRS、およびASP.NET Machineアカウントへの完全なアクセスを許可しました(これはおそらくセキュリティスレッドですが、問題)。これは助けにはなりません。
上記の最初のコマンドを使用してディレクトリを変更し、PDFCreatorとDesign Reviewフォルダの両方に "test123"フォルダを作成することができます。私はここに閉じ込めているようだ、どんなアイデア?
ProcessStartInfo.Arguments経由で引数を提供しようとしましたか? –
cmd.exeの有無にかかわらず同じ結果を試しました。 aspxページは結果またはエラーメッセージなしで実行されます。 ProcessStartInfo processStartInfo =新しいProcessStartInfo( "cmd.exe"); processStartInfo.RedirectStandardInput = true; processStartInfo.RedirectStandardOutput = true; processStartInfo.UseShellExecute = false; processStartInfo.FileName = "C:\\プログラムファイル(x86)\\ PDFCreator \\ PDFCreator.exe"; processStartInfo.Arguments = @ "/ PF" "C:\ dwf \ dwf.dwf" "/ NoStart"; プロセスプロセス=プロセス。開始(processStartInfo); – SteveCalPoly
私が過去に使った手法は、コマンドの出力をログファイルにパイプする.batファイルからexeを呼び出すことです。隠されたエラーメッセージがあるかどうか確認してください。正しく報告されていないと思わないでください。 –