Доступ к файлам через сеть Windows с длиной, близкой к MAX_PATH

Я использую C++ и получаю доступ к UNC-пути через сеть. Этот путь немного больше, чем MAX_PATH. Поэтому я не могу получить дескриптор файла.

Но если я запускаю программу на рассматриваемом компьютере, путь не превышает MAX_PATH. Так что я могу получить дескриптор файла. Если я переименую файл, чтобы он содержал меньше символов (минус длина имени компьютера), я могу получить доступ к файлу.

Можно ли получить доступ к этому файлу через сеть, даже если имя компьютера в пути UNC превысит предел MAX_PATH?

2 ответа

Решение

Я помню, что есть какая-то особенность, например, использование \\?\ в начале пути, чтобы обойти MAX_PATH предел. Вот ссылка на MSDN:

http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx

Для удаленных машин вы должны использовать путь, например: \\?\unc\server\share\path\file, \\?\unc\ является специальным префиксом и не используется как часть фактического имени файла.

Возможно, вы сможете получить дескриптор файла, если попытаетесь открыть файл после преобразования имени файла в короткое (8.3) имя файла. В противном случае вы можете сопоставить каталог, в котором находится файл, как диск и получить к нему доступ таким образом?

Другие вопросы по тегам