2011-01-07 7 views
4

私はコマンドライン引数としてファイルパスを受け取る小さなWPFアプリケーションを持っています。プロセスの開始前にコマンドライン引数に対して実行される処理/検証は何ですか?

ユーザーが長いパスを持つファイルをドラッグすると、少なくとも32ビットのWinXPではコマンドラインの最大長を超えます。

Windowsが指定 デバイス、パス、またはファイルにアクセスできません。

結果は、エラーウィンドウ示す図です。 には、 にアクセスするための適切なアクセス許可が与えられていない可能性があります。

これは、ファイル名または拡張子が長すぎるエラー

に似て表示されます。

このような場合、プロセスが開始されないようです。

私はドラッグ&ドロップファイルが効果的にパスを文字列として渡したと思っていましたが、これらのエラーはそうでないことを示し、OS /シェル/フレームワークのいくつかの部分は、ファイル/ディレクトリパスであり、失敗した場合、プロセスは開始しません。

誰でも、コマンドライン引数が.NET .exeに渡されてから、その.exeが起動するまでに何が起こるかを知っていますか?

+1

これは特に.NETとは何の関係もないと思います。 – Mehrdad

答えて

4

答えはあなたの質問です。パスリストが最大コマンドラインサイズを超えているため、プログラムを開始できません。

オペレーティングシステムは、プロセスの作成時にその情報が必要なため、プロセスを開始する前にコマンドラインをビルドします。コマンドラインの長さが最大サイズを超えているため、オペレーティングシステムはプロセスを作成しようとする前に、おそらくERROR_FILENAME_EXCED_RANGEsic)で作成して失敗する可能性があります。

したがって、プログラムは起動しません。

関連する問題