こんにちは、阿久津です。Windowsは長年の慣例からパスの最大文字列を「260」文字以内と定めてきました。本稿を執筆するにあたって古い文献を調べたところ、Windows 3.1 SDKに「MAX_PATH 260」という記述がありましたので、26年間も続いてきたことになります。(図01~02)。
今の時代となっては、「さっさと制限を外してしまえば」と思いがちですが、そうすると古いAPIが正しく動作しない可能性があり、下位互換性を維持するために踏襲してきたのでしょう。
Windows 10でもアプリケーションなどが誤って作成した260文字以上のファイルやフォルダーを削除できなくなる問題が発生します。その際は管理者権限でコマンドプロンプトを起動し、「del "\?\c:\%USERPROFILE%\Desktop\foo.txt"」といった内部構文を使って削除できる場合があるのでお試しください。
さて、2016年夏リリース予定のWindows 10 バージョン1607以降はこの制限がなくなるかも知れません。Windows 10 Insider Preview ビルド14352のローカルグループポリシーエディターには、「Enable NTFS long paths」という設定項目が加わりました(図03)。
端的に説明すると Win32アプリケーションやWindowsストアアプリで260文字制限を超えたパスにアクセス可能になるとのこと。そこで今回は、Windows 10 Insider Preview最新版を対象に、260文字制限を外すチューニングをお届けします。
1. 管理者権限でレジストリエディターを起動します。
2. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystemキーを開きます。
3. DWORD値「LongPathsEnabled」を開き、データを「1」に変更します。
4. レジストリエディターを終了します。
5. PCを再起動します。
これで操作が完了しました(図04~08)。
早速結果を確認したいところですが、残念ながら本チューニングによる変化は確認できません。コードを書ける方なら261文字のパスを出力するWin32アプリケーションを作成し、試してみると面白いでしょう。いずれにせよ今後は260文字制限に悩まされることはなくなりそうです。ちなみにデスクトップなどに作成するフォルダー名の最大値は113文字と変化しませんでした。
なお、ローカルグループポリシーエディターの「Enable NTFS long paths」を有効にすると、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\PoliciesキーのDWORD値「LongPathsEnabled」が持つデータが「1」に変更されます。本チューニングを破棄する場合は、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystemキーのDWORD値「LongPathsEnabled」が持つデータを「0」に変更してPCを再起動してください。
それでは、また次号でお目にかかりましょう。
阿久津良和(Cactus)