MSDNによると、次の文字をファイル名に含めることはできません。
以下を除いて、名前には現在のコードページの任意の文字を使用します。これには、Unicode文字と拡張文字セット(128〜255)の文字が含まれます。
◦次の予約文字:
<(未満)>(より大きい):(結腸)"(二重引用符)/(スラッシュ)\(バックスラッシュ)|(垂直バーまたはパイプ)?(疑問符)*(アスタリスク)
.netでは、ファイル名で許可されていない文字を見つけるためのAPIが提供されています
char[] invalidFileChars = Path.GetInvalidFileNameChars();
備考
このメソッドから返される配列には、ファイル名とディレクトリ名で無効な文字の完全なセットが含まれているとは限りません。無効な文字の完全なセットは、ファイルシステムによって異なる場合があります。たとえば、Windowsベースのデスクトッププラットフォームでは、無効なパス文字には、ASCII / Unicode文字1〜31、引用符( ")、より小さい(<)、より大きい(>)、パイプ(|)、バックスペース( \ b)、null(\ 0)およびタブ(\ t)。
しかし、備考欄ではファイルシステムに依存すると言われています。
XPやWindows7などのWindowsベースのOSにこのAPIを使用しても安全ですか?