Просто был интересный случай.
Мое программное обеспечение сообщило об ошибке, вызванной длиной пути, превышающей MAX_PATH.
Путь был просто старым документом в Моих документах, например ::
C:\Documents and Settings\Bill\Some Stupid FOlder Name\A really ridiculously long file thats really very very very..........very long.pdf
Общая длина 269 символов (MAX_PATH == 260).
Пользователь не использовал внешний жесткий диск или что-то подобное. Это был файл на управляемом диске Windows.
Так что мой вопрос таков. Должен ли я заботиться?
Я не говорю, может Я имею дело с длинными путями, я спрашиваю следует I. Да, я знаю о взломе "\? \" Юникода на некоторые Win32 API, но кажется, что этот хак не без риска (так как он изменяет поведение способов синтаксического анализа API), а также не поддерживается всеми API.
Так или иначе, позвольте мне высказать свою позицию / утверждения:
- Во-первых, предположительно, единственный способ, которым пользователь смог преодолеть это ограничение, - это если приложение, которое оно использовало, использует специальный хак Unicode. Это файл PDF, так что, возможно, инструмент PDF, который она использовала, использует этот хак.
- Я попытался воспроизвести это (с помощью хака Unicode) и экспериментировал. Я обнаружил, что, хотя файл появляется в Проводнике, я ничего не могу с ним поделать. Я не могу открыть его, я не могу выбрать «Свойства» (Windows 7). Другие распространенные приложения не могут открыть файл (например, IE, Firefox, Notepad). Проводник также не позволит мне создавать файлы / каталоги, которые слишком длинные - он просто отказывается. То же самое для инструмента командной строки cmd.exe.
Так что, в принципе, можно посмотреть на это так: инструмент румян позволил пользователю создать файл, который недоступен для многих Windows (например, Explorer). Я мог бы прийти к выводу, что мне не придется иметь дело с этим.
(Кроме того, это не голосование об одобрении короткой максимальной длины пути: я думаю, что 260 символов - это шутка, я просто говорю, что если оболочка Windows и некоторые API не могут обрабатывать> 260, то почему я должен?).
Итак, это справедливый взгляд? Должен ли я сказать «Не моя проблема»?
ОБНОВЛЕНИЕ: Просто у другого пользователя была такая же проблема. На этот раз mp3-файл. Я что-то пропустил? Как эти пользователи могут создавать файлы, которые нарушают правило MAX_PATH?