高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

ShellExecuteとCreateProcess

さて、NAntExecuterを作成中に気づいたことです。
このソフトは、editor.lnkという名前で、テキストエディタのショートカットをNAntExecuterと同じディレクトリに持ってくると、それをビルドファイルの編集用エディタとして使えるという機能がついています。nantも同じ要領で、「nant.lnkというショートカットファイルがあれば、それを使う」という方法でいけないかななどと思ってみたのですが…だめなようです。Win32Exceptionが発生してしまいました。
ここで気づいたのですが、ShellExecuteを内部で使っている、前者のケースの場合(StartupInfo.UseShellExecuteプロパティがtrueもしくは、設定していない場合)は、ショートカットファイルを実行ファイルと同等に扱うことができるが、後者のケースのように、CreateProcessを使っている場合(UseShellExecute = falseの場合)は、ショートカットファイルを実行ファイルとして扱えないということです*1
ほんの些細なことですが、下手をするとこれではまりそうな気がするので、書き留めておきます。

*1:まあ、実行ファイルが単一で動く場合は[http://homepage1.nifty.com/emk/symlink.html:title=ハードリンク]を作成すれば問題ないと思いますが