Доступ к файлам в сети Windows с длиной, близкой к MAX_PATH
-
02-07-2019 - |
Вопрос
Я использую C++ и получаю доступ к UNC-пути в сети.Этот путь немного больше, чем MAX_PATH.Поэтому я не могу получить дескриптор файла.
Но если я запущу программу на рассматриваемом компьютере, путь не будет больше MAX_PATH.Итак, я могу получить дескриптор файла.Если я переименую файл, чтобы в нем было меньше символов (за вычетом длины имени компьютера), я смогу получить доступ к файлу.
Можно ли получить доступ к этому файлу по сети, даже зная, что имя компьютера в пути UNC превышает предел MAX_PATH?
Решение
Я помню, что есть какая-то функция, например, использование \\?\
в начале пути, чтобы обойти MAX_PATH
предел.Вот ссылка на MSDN:
http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx
Для удаленных компьютеров вы должны использовать имя пути, например: \\?\unc\server\share\path\file
.А \\?\unc\
является специальным префиксом и не используется как часть фактического имени файла.
Другие советы
Возможно, вам удастся получить дескриптор файла, если вы попытаетесь открыть файл после преобразования имени файла в короткое (8.3) имя файла.В противном случае вы можете сопоставить каталог, в котором находится файл, как диск и получить доступ к файлу таким образом?