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