Доступ к файлам через сеть Windows с длиной, близкой к MAX_PATH - PullRequest
3 голосов
/ 22 сентября 2008

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

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

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

Ответы [ 2 ]

10 голосов
/ 22 сентября 2008

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

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

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

0 голосов
/ 22 сентября 2008

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

...