私たちの顧客の1人は非常に長いパス名(長い名前のいくつかのネストされたフォルダー)を常用しており、パスを260文字未満に短縮するために、「ユーザー教育の問題」が日常的に発生します。
利用可能な技術的な解決策はありますか、Windows 7とWindows 2008 R2で何らかのスイッチをフリックして、「これらの歴史的な問題を無視して、+ 260文字のパス名を機能させる」ことができますか?.
追伸 ファイル、パス、名前空間の命名 を読んで完全に統一されていない
メソッドはそこにありますが、Microsoftがファイルブラウザーウィジェットを再コード化するまで、私たちはその古い問題でかなり立ち往生しています。これは最適ではありませんが、それだけで機能します。
ここではまだ言及されていないトリックについて説明します。
このファイルを例にとります:
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
そして、定数が突然変更された場合、奇妙な新しい方法で失敗します。 (バッファオーバーフロー、ヒープ破損など)
この制限を回避するには、\\?\ C:表記を使用します。醜いですが、2 ^ 15までのファイル長をサポートしています。
http://msdn.Microsoft.com/en-us/library/aa365247(v = vs.85).aspx#maxpath
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
_でのグループポリシーコントロールのサポートについても触れています。