web-dev-qa-db-ja.com

Windowsでの最大ファイルパス長制限の克服

私たちの顧客の1人は非常に長いパス名(長い名前のいくつかのネストされたフォルダー)を常用しており、パスを260文字未満に短縮するために、「ユーザー教育の問題」が日常的に発生します。

利用可能な技術的な解決策はありますか、Windows 7とWindows 2008 R2で何らかのスイッチをフリックして、「これらの歴史的な問題を無視して、+ 260文字のパス名を機能させる」ことができますか?.

追伸 ファイル、パス、名前空間の命名 を読んで完全に統一されていない

36

メソッドはそこにありますが、Microsoftがファイルブラウザーウィジェットを再コード化するまで、私たちはその古い問題でかなり立ち往生しています。これは最適ではありませんが、それだけで機能します。

12
sysadmin1138

ここではまだ言及されていないトリックについて説明します。

このファイルを例にとります:

C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow\Still Going\I will run out of ideas soon\I have organizational problems\Obsessive compulsive subdirectory disorder\Here is a guid for no good reason\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Almost there\Tax Returns\2013\2013_tax_return.pdf

この完全なファイルパスは290文字です。シェル(Windowsエクスプローラー)とほとんどのコマンドラインユーティリティでは、おそらく操作できません。

次のようにsubstコマンドを使用します。

subst X: "C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow"

これで、ファイルにアクセス(および削除、移動など)できます。

X:\Still Going\I will run out of ideas soon\I have organizational problems\Obsessive compulsive subdirectory disorder\Here is a guid for no good reason\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Almost there\Tax Returns\2013\2013_tax_return.pdf

そして今、そのファイル名は約235文字程度なので、「ファイル名が長すぎる」問題はもう発生しません。

Windows APIには、MAX_PATHと呼ばれる悪名高い定数があります。 MAX_PATHは260文字です。 NTFSファイルシステムは、実際には最大32,767文字のファイルパスをサポートしています。また、Windows API関数のUnicode(または「ワイド」)バージョンにアクセスし、パスの前に\\?\を付けることにより、32,767文字の長いパス名を引き続き使用できます。

MAX_PATHは、Windowsの世界でa very long昔に石に設定されました。現時点ではANSI標準に関係していると思いますが、Microsoftが作成したものを含め、数千ものプログラムやアプリケーションを使用している現在、Microsoftが変更することは非常に困難です。 MAX_PATHそして、定数が突然変更された場合、奇妙な新しい方法で失敗します。 (バッファオーバーフロー、ヒープ破損など)

28
Ryan Ries

この制限を回避するには、\\?\ C:表記を使用します。醜いですが、2 ^ 15までのファイル長をサポートしています。

http://msdn.Microsoft.com/en-us/library/aa365247(v = vs.85).aspx#maxpath

10
Chris K

Microsoftは、Windows 10からこの修正を利用できるようになりました (ファイル、パス、および名前空間の命名 MSDNの記事で説明されています)。

darthcoderは_\\?\C:_表記の回避策の詳細で既に回答していますが、HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled (Type: REG_DWORD)にレジストリキーがあり、これを使用して単一システムのMAX_PATH制限を削除できます。この記事では、必要に応じて、組織またはグループ全体の実装のための_Computer Configuration > Administrative Templates > System > Filesystem > Enable NTFS long paths_でのグループポリシーコントロールのサポートについても触れています。

9
JimNim