
Windows 11 permet d’attribuer aux fichiers des noms de 200 caractères remplis d’espaces et d’émojis, mais l’Explorateur de fichiers refuse de nommer un fichier ou un dossier CON. CON, PRN, AUX, NUL, COM1 à COM9 et LPT1 à LPT9 sont des noms de périphériques réservés. L’ingénieur de MS Raymond Chen fait remonter leur origine à DOS 1.0, une version qui ne prenait même pas en charge les dossiers.
J’ai testé cette règle sur un PC exécutant Windows 11 26H2. La restriction introduite par le système d’exploitation de 1981 reste fermement en vigueur, même si Windows Latest a constaté qu’une partie de celle-ci ne fonctionne plus comme l’indique la documentation de MS.

CON, PRN, AUX et NUL sont des périphériques, et non des noms de fichiers, dans Windows 11
Chaque nom réservé correspond à un périphérique. NUL est particulièrement remarquable : il agit comme un trou noir qui supprime tout ce qui lui est envoyé.
La documentation de MS sur la dénomination des fichiers indique toujours aux développeurs : « N’utilisez pas les noms réservés suivants comme nom de fichier. » Ces restrictions s’appliquent également aux dossiers, car Windows considère un dossier comme un type particulier de fichier.

Selon MS, l’ajout d’une extension ne devrait pas permettre de contourner la restriction, bien que cela fonctionne dans certains cas. L’entreprise précise : « NUL.txt et NUL.tar.gz sont tous deux équivalents à NUL. » Même les chiffres en exposant ne sont pas exemptés. Windows interprète ¹, ² et ³ comme des chiffres, ce qui signifie que des noms tels que COM¹ et LPT³ sont réservés « dans chaque répertoire ».
Sur le plan architectural, COM1 est un lien vers le port série au sein du noyau Windows. MS appelle cela un nom de périphérique MS-DOS : saisir COM1 permet donc d’accéder au port plutôt qu’à un fichier.
Raymond Chen explique pourquoi une règle de DOS 1.0 reste active dans Windows 11
L’histoire commence avec CP/M, le système d’exploitation avec lequel MS-DOS cherchait à être compatible. Sous CP/M, les noms de périphériques comportaient toujours deux-points, comme CON:. MS-DOS a rendu ces deux-points facultatifs, une décision que Michal Necasek, de l’OS/2 Museum, qualifie de « défaut fatal ». Un nom simple tel que CON ne donne à DOS aucune indication permettant de savoir s’il désigne un fichier ou la console.

Dans un article publié en 2003 sur son blog Old New Thing, Chen expliquait que « DOS 1.0 ne prenait pas en charge les sous-répertoires, les minuscules ni les noms de fichiers dépassant le format 8.3. » Cette limitation explique également, de manière assez inhabituelle, pourquoi certains des plus anciens fichiers système de Windows 11 conservent des noms datant de l’époque de DOS.
À l’époque, lorsqu’un assembleur demandait où enregistrer sa sortie et que l’utilisateur souhaitait l’imprimer, « il fallait saisir “PRN” comme nom de fichier. » Saisir NUL supprimait la sortie, tandis que CON l’affichait à l’écran.
Comme les disques ne comportaient qu’un seul répertoire, ces noms spéciaux ne pouvaient fonctionner nulle part ailleurs. Lorsque les dossiers sont apparus avec DOS 2.0 en 1983, les noms de périphériques ont également dû fonctionner à l’intérieur de ceux-ci. Comme l’a expliqué Chen, dans le cas contraire, les utilisateurs n’auraient pas pu passer dans un autre dossier, exécuter un assembleur et saisir NUL pour supprimer sa sortie. MS a donc fait en sorte que ces noms fonctionnent dans tous les dossiers, raison pour laquelle il reste aujourd’hui impossible de créer un fichier nommé PRN dans le dossier Documents.
Pourquoi MS n’a-t-il pas supprimé ce comportement après plus de 40 ans ? « Parce que tout le monde en dépend encore », a écrit Chen. Les fichiers batch suppriment leur sortie en la redirigeant vers >NUL, les scripts vérifient l’existence d’un dossier avec « if exist directoryname\nul », et d’anciens guides indiquent aux utilisateurs de créer des fichiers avec « copy CON ».
Si cette règle était supprimée, tous les scripts qui redirigent leur sortie vers NUL commenceraient à créer de véritables fichiers à la place.
Cette règle a autrefois provoqué le plantage de PC entiers. Windows 95 et Windows 98 rejetaient les chemins contenant un nom de périphérique, mais plantaient lorsqu’un chemin en contenait deux, comme C:\con\con. Le bulletin MS00-017 de MS, publié en mars 2000, reconnaissait que cela « entraîne généralement un plantage ».
J’ai testé cette règle héritée de DOS sous Windows 11 26H2, et NUL.txt est passé entre les mailles du filet
Sur un PC exécutant Windows 11 26H2, le fait de renommer un nouveau dossier en CON a affiché le message « Le nom de périphérique spécifié n’est pas valide. » PRN, AUX, NUL et COM1 ont également été refusés.
Cependant, NUL.txt a été accepté sans erreur, tout comme CON.txt, alors même que la documentation de MS indique toujours que NUL.txt est équivalent à NUL.

Bien que la documentation de MS n’ait pas été mise à jour, des développeurs examinant la prise en charge de Windows par Python ont constaté en 2022 que Windows 11 avait cessé de traiter les noms de périphériques dotés d’une extension comme des noms spéciaux lors du traitement des chemins de fichiers.
Malheureusement, ces fichiers peuvent se comporter de manière imprévisible. Un utilisateur de MS Q&A a constaté que PowerShell pouvait répertorier NUL.txt, mais ne pouvait ni l’ouvrir ni le supprimer. Un conseiller de la communauté lui a répondu que « le résultat peut être imprévisible ». Cela pourrait expliquer pourquoi MS continue d’affirmer que les extensions n’ont aucun effet sur des noms tels que NUL.txt et CON.txt.

L’Invite de commandes permet toujours d’observer l’ancien comportement de DOS. L’exécution de echo hello > CON a affiché « hello » à l’écran au lieu de créer un fichier, tandis que echo test > COM¹ a échoué exactement comme l’indique la documentation de MS.
Avant de critiquer Windows, il convient de noter que les responsables de Linux ont renommé un fichier de pilote graphique de aux.c en auxch.c en 2024, car son nom d’origine empêchait les utilisateurs de cloner le noyau Linux sous Windows.
Windows peut néanmoins toujours être critiqué, car Linux a modifié son code pour s’adapter à Windows, tandis que Windows continue de préserver une règle datant de 1981 pour des scripts qui n’ont peut-être pas été modifiés depuis des décennies.
Windows 11 a suffisamment assoupli la restriction pour autoriser NUL.txt, mais CON est toujours traité comme un périphérique plutôt que comme un nom de fichier. À l’image du gestionnaire de tas de Windows 95 toujours fourni avec Windows 11, il s’agit d’un autre composant hérité que MS ne peut pas supprimer sans risquer de rendre inutilisable le fichier batch vieux de 30 ans de quelqu’un.
Windows Latest dépend de lecteurs comme vous. Faites de nous votre source privilégiée sur Google Discover et Google Search, et aidez nos reportages indépendants à toucher davantage de personnes.
