「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
GitHubのリポジトリに登録した物件をダウンロードした際、
取得したZIPファイルが解凍できないなどの問題があったので調査をしてみた。
要因 †
以下の2つの要因がある(実はファイルシステム側の問題ではなかった)。
ソフトウェアにパス長の制限がある。 †
Windowsの後方互換でパス長の制限があるためパス長の制限があるソフトウェアが現存する。
- NTFSファイルシステムが32K文字までのパスをサポートしている。
- しかし、Windows APIは、後方互換性を重視するため、
- パス最大長がMAX_PATH環境変数で260文字に設定されている。
- パスに " \\?\ "接頭辞を使用すると、260文字を超える文字を使用できる。
- しかし、一部のWin32 APIでは" \\?\ "接頭辞を使用しても制限が解除されない。
というトコロに原因があるもよう。
- Windows 10 Version 1607以降、MAX_PATHの制限を解除できる。
全角文字を理解しないソフトウェアがある。 †
例えば以下のような例。
対策 †
ソフトウェアで対応(ZIPの場合) †
- 上記の双方([[パス長>]]、[[全角文字>]])とも、ソフトウェアが対応すれば済む。
- 例えば、ZIPであれば7-Zip、WinRARがコレラの問題に対応している。
パスを変更する。 †
パスを短くする。 †
出力パスが短くなるようにする。
=圧縮した一式の解凍先を「C:\temp」などとする。
パスの全角文字を除く。 †
参考 †
パス長の制限 †
- Long Paths in .NET, [Kim Hamilton] – BCL Team Blog
現象 †
ZIP †
Tags: :インフラストラクチャ, :Windows