« ファイルの関連付けで、長いファイル名を短いファイル名に変換する。 | トップページ | XP SP3 + IE7 / IE8 で、エクスプローラの履歴バーがおかしい。(障害) »

2009年4月26日 (日)

ファイルの関連付けで、長いファイル名を短いファイル名に変換する。(その2)

関連付けの書き方をちょっと変えるだけで、できちゃいます。

例えば、

"%systemroot%\system32\wscript.exe" "%1" %*

と書く代わりに、

%systemroot%\system 32\..\system32\wscript.exe %1 %*

ここで、

空白を含む長いファイル名を""で囲まないと、%1を短いファイル名に変換するのはShellの仕様です。
KB142275 Long File & Path Names Shorten When Launched Using Association

空白を含む長いファイル名を""で囲まなくても実行できるのは、Win32APIのCreateProcess()の仕様です。

空白を含まない場合は、OSのファイル名のコンベンションの\..\を利用して、架空のフォルダ名に空白を入れます。

« ファイルの関連付けで、長いファイル名を短いファイル名に変換する。 | トップページ | XP SP3 + IE7 / IE8 で、エクスプローラの履歴バーがおかしい。(障害) »