Несмотря на то, что задокументировано для обработки префикса \\?\
, SetCurrentDirectory()
, очевидно, не может этого сделать ( см. Здесь ).Передача пути длиной более 260 символов всегда возвращает ERROR_FILENAME_EXCED_RANGE
, хотя я включил префикс \\?\
.Протестировано на Windows 7.
Это заставляет меня задуматься, как я могу изменить текущий каталог на путь, который длиннее 260 символов.Нужно ли разбивать этот длинный путь на кусочки макс.260 символов каждый и на каждом из этих кусков вызывается SetCurrentDirectory()
, или каков рекомендуемый способ решения этой проблемы?
Примечание: я знаю, что в Windows 10 проблему можно решить, установив добавление longPathAware
заполнить манифест и установить соответствующий флаг реестра.Тем не менее, я специально ищу решение, которое работает и в Windows 7 и 8.