Просто был интересный случай.
В моем программном обеспечении сообщалось о сбое, вызванном длительностью пути, превышающей 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 диске.
Итак, мой вопрос в этом. Мне все равно?
Я не говорю, могу ли я иметь дело с длинными путями, я спрашиваю, должен ли я. Да, я знаю об Unicode-хакете на некоторых API-интерфейсах Win32, но кажется, что этот хак не без риск (поскольку он изменяет поведение пути анализа API-интерфейсов), а также не поддерживается всеми API-интерфейсами.
Так или иначе, позвольте мне просто указать свою позицию/утверждения:
- Сначала, предположительно, единственный способ, которым пользователь смог нарушить это ограничение, - это приложение, которое она использует, использует специальный Unicode-хак. Это файл PDF, поэтому, возможно, инструмент PDF, который она использовал, использует этот хак.
- Я попытался воспроизвести это (используя юникод-хак) и поэкспериментировал. Я обнаружил, что, хотя файл появляется в Проводнике, я ничего не могу с этим поделать. Я не могу открыть его, я не могу выбрать "Свойства" (Windows 7). Другие распространенные приложения не могут открыть файл (например, IE, Firefox, Notepad). Explorer также не позволит мне создавать файлы /dirs, которые слишком длинны - он просто отказывается. То же для инструмента командной строки cmd.exe.
Таким образом, в принципе, можно было бы взглянуть на это так: инструмент румян позволил пользователю создать файл, который недоступен для большого количества Windows (например, Explorer). Я мог бы подумать, что мне не придется иметь дело с этим.
(В стороне, это не голосование одобрения для короткой максимальной длины пути: я думаю, что 260 символов - это шутка, я просто говорю, что если оболочка Windows и некоторые API не могут обрабатывать > 260, тогда почему я должен?).
Итак, это справедливое мнение? Должен ли я сказать "Не моя проблема"?
UPDATE: У меня был другой пользователь с той же проблемой. На этот раз mp3 файл. Я что-то упускаю? Как эти пользователи могут создавать файлы, нарушающие правило MAX_PATH?