Windowsでファイル名に使用できない文字(列)
自分の覚書。世の中のサイト見ても間違えているものとか割とあるみたい。Explorerの制限とか、OSの制限とか、サブシステムの制限とか、いろいろ混在しているのでややこしい。
SQL Server 2005のBooks onlineのSQLインジェクションのページでLPT8,COM8までって書いてあったのはちょっと驚いた(2008/1/14現在)。
ファイル名に AUX、CLOCK$、COM1 〜 COM8、CON、CONFIG$、LPT1 〜 LPT8、NUL、および PRN を使用できる場合、これらの文字列をフィールドで受け入れない。
後でフィードバックしておこう。
それはさておき、もう三回くらい書いた記憶のあるどうでもいいトリビア。PC-98x1のDOSでは予約済みデバイスがCLOCK$ではなく、CLOCKでした。したがって、Microsoft Windows 3.1に付属していた時計アプリclock.exeが実行できなかったのです。そこでやむなくNECのWindows 3.1ではtokei.exeという名前に改名されていました。
Windows 95以降、clock.exeは廃止されたので、この非互換(?)は発生しなくなっています。Windows NT 3.1になったときNEC版Windows NT 3.1ではCLOCKデバイスも予約から外されたんじゃなかったかな。こちらは自信なしだけど、NTだからいいよねってなっていても問題なかったでしょう。