Безопасны ли расширенные пути? - PullRequest
3 голосов
/ 28 августа 2010

Я только что наткнулся на эту статью на MSDN, где говорится, что путь может быть 259 символов + окончание NUL, но если вы добавите префикс "\\? \", WinAPI позволит вам использовать

максимальная общая длина пути составляет 32 767 символов.

Я хочу увидеть, как это работает Я пытался использовать этот префикс из Explorer (в XP SP3), но он не работает вообще (вкл.любой путь).Если вы положите \\?\C:\Path\to\an\existing.file на панель обозревателя, она выдаст ошибку «файл не найден».

Так что я запутался.Могу ли я написать код для (не древней) Windows, который в полной мере использует указанный размер пути в NTFS?Почему Explorer не использует его?

Ответы [ 3 ]

2 голосов
/ 28 августа 2010

Существует набор вызовов API, которые работают с расширенными путями, а некоторые - нет.MSDN обычно упоминает об этом.

Не то, что если вы просто вводите этот путь в windows explorer под xp, это не работает, потому что синтаксис расширенного пути - это просто escape-последовательность для API WIn32, а не для проводника Windows.Теперь в Win7 это работает, потому что многие ожидали, что это сработает.

Также для длинных путей это помогает, если вы меняете рабочий каталог или открываете проводник с подкаталогом в качестве корня.

1 голос
/ 28 августа 2010

Прежде чем кто-то скажет мне RTFM ...

Обратите внимание, что эти примеры предназначены для использования с функциями API Windows и не обязательно обязательно работают с приложениями оболочки Windows, такими как Windows Explorer.
[...]
Для файлового ввода-вывода префикс "\\? \" Для строки пути указывает API-интерфейсам Windows отключить анализ всех строк и отправить строку, следующую за ней, прямо в файловую систему.,Например, если файловая система поддерживает большие пути и имена файлов, вы можете превысить пределы MAX_PATH, которые в ином случае применяются API-интерфейсами Windows.скрытия файлов (или поиска таких файлов) из проводника с использованием недопустимых имен файлов.

0 голосов
/ 29 августа 2010

Вы спрашиваете, почему все компоненты в Windows не поддерживают его, или вы спрашиваете, разрешено ли использовать эти длинные пути?

Вы определенно можете безопасно использовать их, но вы можете раздражать кого-то, кто хочетиспользовать инструменты, такие как Explorer, чтобы просмотреть их.Мы видим такие пути все время в дикой природе.Иногда люди очень удивляются, когда не могут использовать MY_FAVORITE_TOOL для его удаления ...

...