44 votes

Dépassement des restrictions de longueur maximale du chemin d'accès de fichier dans Windows

Un de nos clients utilise habituellement des noms de chemins très longs (plusieurs dossiers imbriqués, avec des noms longs) et nous rencontrons régulièrement des "problèmes d'éducation des utilisateurs" afin de raccourcir le chemin à moins de 260 caractères.

Existe-t-il une solution technique disponible, pouvons-nous activer une sorte de commutateur dans Windows 7 et Windows 2008 R2 pour dire "oui, ignorez simplement ces problèmes historiques et faites fonctionner les noms de chemins de plus de 260 caractères".

P.S. J'ai lu et été totalement édifié par Nommer les fichiers, les chemins et les espaces de noms

35voto

Ryan Ries Points 54671

Il suffit de mentionner un truc que je ne vois pas encore mentionné ici.

Prenons cet exemple de fichier :

C:\Dossier1\Chemin Vraiment Long\Telle Récursion\Si Profond\Wow\Encore en Cours\Je vais bientôt manquer d'idées\J'ai des problèmes d'organisation\Trouble obsessionnel compulsif des sous-répertoires\Voici un guid pour aucune raison valable\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Presque là\Déclarations Fiscales\2013\Déclaration_fiscale_2013.pdf

Ce chemin de fichier complet fait 290 caractères de long. L'interpréteur de commandes (Windows Explorer) et la plupart des utilitaires en ligne de commande ne vous permettront probablement pas de le toucher.

Utilisez la commande subst comme ceci :

subst X: "C:\Dossier1\Chemin Vraiment Long\Telle Récursion\Si Profond\Wow"

Maintenant, vous pouvez accéder (et supprimer, déplacer, etc.) au fichier comme suit :

X:\Encore en Cours\Je vais bientôt manquer d'idées\J'ai des problèmes d'organisation\Trouble obsessionnel compulsif des sous-répertoires\Voici un guid pour aucune raison valable\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Presque là\Déclarations Fiscales\2013\Déclaration_fiscale_2013.pdf

Et maintenant, le nom de fichier n'a plus que ~235 caractères environ, donc vous n'encounterez plus les problèmes de "Nom de fichier trop long".

Dans l'API Windows, il y a une constante tristement célèbre appelée MAX_PATH. MAX_PATH est de 260 caractères. Le système de fichiers NTFS prend en charge les chemins de fichiers allant jusqu'à 32 767 caractères. Et vous pouvez toujours utiliser des noms de chemins de fichiers de 32 767 caractères en accédant aux versions Unicode (ou "larges") des fonctions de l'API Windows, et également en préfixant le chemin avec \\?\.

MAX_PATH a été défini il y a très longtemps dans le monde Windows. Je pense que cela a quelque chose à voir avec les normes ANSI à l'époque... mais c'est une de ces choses très difficiles à changer pour Microsoft maintenant, car nous avons maintenant des milliers de programmes et applications, y compris certains écrits par Microsoft eux-mêmes, qui utilisent MAX_PATH et échoueraient de manière étrange si la constante était soudainement modifiée. (Dépassements de tampon, corruption de la pile, etc.)

13voto

sysadmin1138 Points 129885

Les méthodes sont là, mais tant que Microsoft ne recode pas le widget du navigateur de fichiers, nous sommes pratiquement bloqués avec ce vieux problème. C'est suboptimal, mais c'est comme ça que ça fonctionne.

13voto

barrymac Points 809

Vous pouvez contourner cette limitation en utilisant la notation \\?\C:. C'est moche, mais cela prend en charge des longueurs de fichier allant jusqu'à 2^15.

http://msdn.microsoft.com/en-us/library/aa365247(v=vs.85).aspx#maxpath

10voto

JimNim Points 2736

Microsoft propose maintenant une solution pour cela à partir de Windows 10, qui est expliquée dans l'article MSDN "Nommer fichiers, chemins et espaces de noms".

darthcoder a déjà répondu avec des détails sur le contournement de la notation \\?\C:, mais il existe désormais une clé de registre à HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled (Type: REG_DWORD) qui peut être utilisée pour supprimer les limitations de MAX_PATH pour un seul système. L'article mentionne également la prise en charge du contrôle par la stratégie de groupe à Configuration de l'ordinateur > Modèles d'administration > Système > Système de fichiers > Activer les longs chemins NTFS pour une implémentation au niveau de l'organisation ou du groupe si nécessaire.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X