5

System.Process を使用して外部プログラムを起動していますが、「ファイル名または拡張子が長すぎます」という例外が発生しました。ただし、ファイル名は問題ないと思いますが、引数は非常に長い文字列 (33,000 シンボル) です。その文字列が例外を引き起こす可能性はありますか?

4

1 に答える 1

5

はい。そのテキストは に対応するエラー メッセージERROR_FILENAME_EXCED_RANGEであり、他のユーザーは、それが実行可能ファイル名だけでなく、コマンド全体の長さに適用されると報告しています。こちらもご覧ください

エラーメッセージが改善される可能性があることに同意しますが、あなたは確かに制限を超えています. CreateProcessドキュメントには次のように記載されています。

lpCommandLine [in, out, optional]

実行するコマンドライン。この文字列の最大長は 32,768 文字で、Unicode 終了ヌル文字を含みます。が NULL の場合lpApplicationName、 のモジュール名部分は文字lpCommandLineに制限されMAX_PATHます。

限界はShellExecuteさらに低いからです。Hans は、これらの制限と回避策について説明している Raymond Chen によるすばらしいブログ シリーズをリンクしています。質問のコメントを参照してください。

于 2013-10-10T21:10:32.217 に答える