J'ai eu un cas intéressant.
Mon logiciel a signalé un échec causé par un chemin plus long que MAX_PATH.
Le chemin d'accès était simplement un 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'utilisait pas un disque dur externe ou quelque chose comme ça. Il s'agissait d'un fichier sur un disque géré par Windows.
Alors ma question est la suivante. Dois-je m'en soucier ?
Je ne dis pas peut Je m'occupe des longs chemins, je demande debe I. Oui, je suis au courant du piratage de l'unicode "\?\" sur certaines API Win32, mais il semble que ce piratage n'est pas sans risque (car il modifie le comportement de la façon dont les API analysent les chemins) et n'est pas non plus pris en charge par toutes les API .
Quoi qu'il en soit, permettez-moi d'exposer ma position et mes affirmations :
- D'abord, on peut supposer que la seule façon dont l'utilisateur a pu dépasser cette limite est que l'application qu'il a utilisée utilise le hack spécial Unicode. Il s'agit d'un fichier PDF, donc peut-être que l'outil PDF qu'elle a utilisé utilise ce piratage.
- J'ai essayé de reproduire cela (en utilisant le hack unicode) et j'ai expérimenté. Ce que j'ai trouvé, c'est que bien que le fichier apparaisse dans l'explorateur, je ne peux rien en faire. Je ne peux pas l'ouvrir, je ne peux pas choisir "Propriétés" (Windows 7). D'autres applications courantes ne peuvent pas ouvrir le fichier (par exemple, IE, Firefox, Notepad). L'explorateur ne me laisse pas non plus créer des fichiers/répertoires trop longs - il refuse tout simplement. Idem pour l'outil de ligne de commande cmd.exe.
En gros, on pourrait voir les choses ainsi : un outil rouge a permis à l'utilisateur de créer un fichier qui n'est pas accessible par un grand nombre de Windows (par exemple, l'Explorateur). Je pourrais me dire que je ne devrais pas avoir à m'occuper de cela.
(En passant, il ne s'agit pas d'un vote d'approbation pour une longueur maximale de chemin courte : Je pense que 260 caractères est une plaisanterie, je dis simplement que si le shell Windows et certaines API ne peuvent pas gérer > 260 alors pourquoi le ferais-je ?).
Alors, est-ce un point de vue juste ? Devrais-je dire "Pas mon problème" ?
UPDATE : Un autre utilisateur a eu le même problème. Cette fois, il s'agissait d'un fichier mp3. Est-ce que quelque chose m'échappe ? Comment ces utilisateurs peuvent-ils créer des fichiers qui violent la règle MAX_PATH ?
9 votes
Il est facile de créer un fichier dont le nom est trop long : il suffit de renommer l'un de ses répertoires ancêtres pour qu'il soit suffisamment long pour faire basculer le fichier. Dans votre exemple :
rename "C:\Documents and Settings\Bill\New Folder" "Some Stupid FOlder Name"
.