2008-09-22 4 views
3

J'utilise C++ et j'accède à un chemin UNC sur le réseau. Ce chemin est légèrement supérieur à MAX_PATH. Donc, je ne peux pas obtenir un handle de fichier.Accès aux fichiers sur le réseau Windows avec une longueur proche de MAX_PATH

Mais si j'exécute le programme sur l'ordinateur en question, le chemin n'est pas supérieur à MAX_PATH. Donc, je peux obtenir un handle de fichier. Si je renommer le fichier pour avoir moins de caractères (moins la longueur du nom de l'ordinateur), je peux accéder au fichier.

Peut-on accéder à ce fichier sur le réseau même si le nom de l'ordinateur dans le chemin UNC le place au-dessus de la limite MAX_PATH?

Répondre

10

Je rappelle qu'il existe une fonctionnalité comme l'utilisation \\?\ au début du chemin pour contourner la limite MAX_PATH. Voici une référence sur MSDN:

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

Pour les machines à distance, vous pouvez utiliser un nom de chemin tels que: \\?\unc\server\share\path\file. Le \\?\unc\ est le préfixe spécial et n'est pas utilisé dans le nom de fichier réel.

+0

Je l'utilise pour les chemins locaux, mais je ne sais pas si/comment il s'applique aux ordinateurs distants. –

0

Vous pouvez obtenir un handle du fichier si vous essayez d'ouvrir le fichier après la conversion du nom de fichier en un nom de fichier court (8.3). A défaut, pouvez-vous mapper le répertoire dans lequel le fichier se trouve en tant que lecteur et accéder au fichier de cette façon?

Questions connexes