3

パスは 259 文字 + NUL 終端にすることができると書かれている MSDN の記事を偶然見つけましたが、「\\?\」をプレフィックスとして付けると、WinAPI を使用すると、

パスの最大合計長は 32,767 文字です。

それが機能することを熱望して、Explorer (XP SP3) からそのプレフィックスを使用しようとしましたが、まったく機能しません (どのパスでも)。エクスプローラーのバーに置く\\?\C:\Path\to\an\existing.fileと、「ファイルが見つかりません」というエラーが表示されます。

だから私は混乱しています。NTFS で前述のパス サイズをフルに活用する (非古代) Windows 用のコードを作成できますか? エクスプローラーがそれを使用しないのはなぜですか?

4

3 に答える 3

2

拡張パスで機能する API 呼び出しと機能しない API 呼び出しのセットがあります。MSDN は通常、これについて言及しています。

そのパスを Windows Explorerrunder xp に入力しただけでは機能しません。これは、拡張パス構文が WIn32 API の単なるエスケープ シーケンスであり、Windows エクスプローラーのエスケープ シーケンスではないためです。現在、Win7 では、多くの人がこれが機能することを期待していたため、これは機能します。

また、パスが長い場合は、作業ディレクトリを変更するか、サブディレクトリをルートとしてエクスプローラーを開くと役立ちます。

于 2010-08-28T19:25:43.123 に答える
1

誰かがRTFMに私に言う前に...

これらの例は、Windows API 関数での使用を意図しており、すべてが Windows Explorer などの Windows シェル アプリケーションで動作するとは限らないことに注意してください。
[...]
ファイル I/O の場合、パス文字列の "\\?\" プレフィックスは、すべての文字列解析を無効にし、それに続く文字列をファイル システムに直接送信するよう Windows API に指示します。たとえば、ファイル システムが大きなパスとファイル名をサポートしている場合、Windows API によって適用される MAX_PATH 制限を超えることができます。

副次的な注意として、これは、違法なファイル名を使用してエクスプローラーからファイルを非表示にする (またはそのようなファイルを見つける) 可能性について疑問に思います。

于 2010-08-28T18:19:59.427 に答える
0

なぜ Windows のすべてのコンポーネントがそれをサポートしていないのか、またはこれらの長いパスを使用することが合法かどうかを尋ねていますか?

それらは間違いなく安全に使用できますが、エクスプローラーなどのツールを使用して閲覧したい人を苛立たせる可能性があります。自然界では、このような道が常に見られます。MY_FAVORITE_TOOL を使用して削除できない場合、人々はかなり驚くことがあります...

于 2010-08-29T00:58:34.070 に答える