Dois-je traiter avec les fichiers de plus de MAX_PATH?

Juste eu un cas intéressant.

Mon logiciel rapporté une défaillance causée par un chemin plus long que MAX_PATH.

Le chemin était juste un simple vieux document dans Mes Documents, par exemple:

C:\Documents and Settings\Bill\Some Stupid FOlder Name\A really ridiculously long file thats really very very very..........very long.pdf

Longueur totale de 269 caractères (MAX_PATH==260).

L'utilisateur n'était pas à l'aide d'un disque dur externe ou quelque chose comme ça. Ce fut un fichier sur un Windows gérés en voiture.

Donc ma question est celle-ci. Dois-je prendre soin?

Je ne dis pas peut je traiter avec les longs chemins, je me demande devrait I. Oui je suis au courant de le "\?\" unicode hack sur certaines Api Win32, mais il semble que ce hack n'est pas sans risque (comme c'est un changement de comportement de la façon dont l'Api analyser des chemins) et n'est pas pris en charge par toutes les Api .

Quoi qu'il en soit, permettez-moi de ma position/affirmations:

  1. Premier sans doute la seule façon de l'utilisateur a été en mesure de briser cette limite est de savoir si l'application elle a utilisé usages spéciaux Unicode hack. C'est un fichier PDF, donc peut-être que l'outil de PDF elle a utilisé utilise ce hack.
  2. J'ai essayé de reproduire ce (à l'aide de l'unicode hack) et expérimenté. Ce que j'ai trouvé était que, bien que le fichier s'affiche dans l'Explorateur, je ne peux rien faire avec elle. Je ne peux pas l'ouvrir, je ne peux pas choisir "Propriétés" (Windows 7). D'autres applications ne pouvez pas ouvrir le fichier (par exemple, IE, Firefox, Notepad). L'explorateur ne permettez-moi de créer des fichiers/répertoires qui sont trop long il refuse juste. Idem pour l'outil de ligne de commande cmd.exe.

Donc en gros, on pourrait regarder cela de cette façon: un rouge outil permet à l'utilisateur de créer un fichier qui n'est pas accessible par un grand nombre de Fenêtres (par exemple, l'Explorateur). J'ai pu prendre le point de vue que je ne devrais pas avoir à traiter avec cela.

(En aparté, ce n'est pas un vote d'approbation pour une courte max longueur du chemin: je pense 260 caractères est une blague, je dis juste que si le shell Windows et certaines Api ne peut pas gérer > 260 alors pourquoi devrais-je?).

Cette dernière est-elle fidèle? Devrais-je dire "Pas mon problème"?

Mise à JOUR: Juste eu un autre utilisateur avec le même problème. Cette fois, un fichier mp3. Ai-je raté quelque chose? Comment ces utilisateurs de créer des fichiers qui enfreignent la MAX_PATH règle?

  • Il est facile de créer un fichier dont le nom est trop long: il suffit de renommer l'un de ses ancêtre des répertoires d'être assez long à faire basculer le fichier sur le bord. Dans votre exemple: rename "C:\Documents and Settings\Bill\New Folder" "Some Stupid FOlder Name".
InformationsquelleAutor John | 2010-05-13