Pas de con ni de nul chez Microsoft

Résolu
cuq Messages postés 345 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 21 mars 2008 - 23 févr. 2005 à 19:27
cuq Messages postés 345 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 21 mars 2008 - 24 févr. 2005 à 08:42
Ceci n'est pas vraiement une question mais plus une info. Cela fait suite a un truc qui m'est arrivé : je voulais créer un répertoire en VB pour stocker des infos temporaires et j'ai voulu utiliser un nom pour mon répertoire "nul" : impossible de créer le répertoire j'utilisai la fonction : CreateDirectory et en plus cette salope de fonction me retournai 1 pour dire pas de problème je l'ai créé ton répertoire à la con . Lassé de ne pas trouvé le pourquoi du comment j'ai changé le nom en "bidon" et là ca marche . J'ai finalement trouvé l'info :

De DOS à Windows XP, tous les systèmes refuseraient de créer un fichier ou un dossier nommé "con" ainsi que "nul" Ces différentes variables seraient réservées au système d'exploitation.

Et vous pouvez le testé sur votre PC.. pas pasooble de créer un répertoire ayant comme nom "con" ou "nul "

Et Idem en VB avec C
reateDirectory .. le truc bizarre c'est que C
reateDirectory retourne 0 si tu utilises comme nom "con" et 1 si tu utilises "nul" mais sans pour autant créer le répertoire .

Pour ceux qui veulent tester en VB dans une feuille VB rajouter un bouton et le code suivant :

'Declaration
Private Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA" (ByVal lpPathName As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long
Private Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type


Private Sub Command1_Click()
Dim ret As Long
Dim Security As SECURITY_ATTRIBUTES

'Creation du répertoire à la Con c'est le cas de le dire
ret = CreateDirectory("C:\con", Security)
'Normalement si pas possible de créer le répertoire retourne 0 ici c'est bon
If ret = 0 Then MsgBox "C'est Con hein !", vbCritical + vbOKOnly

'Creation du répertoire nul c'est le cas de le dire
ret = CreateDirectory("C:\nul", Security)
'Normalement si pas possible de créer le répertoire retourne 0
If ret = 1 Then MsgBox "C'est encore plus nul hein !", vbCritical + vbOKOnly

End Sub

12 réponses

Nix Messages postés 831 Date d'inscription samedi 15 mai 1999 Statut Membre Dernière intervention 18 juillet 2009
23 févr. 2005 à 20:10
Tout comme le "com1", "lpt1" etc.. ce sont des noms réservés
Essayez de nommer un dossier "com1" il ne voudra pas non plus

A++

Nix

[MVP VB, VB .NET ASP .NET]
Membre fondateur de Developers Association
3
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
23 févr. 2005 à 21:45
Remarque sur le NUL et le commentaire de Casy < Comme tout informaticien le sait Chaque dossier depuis le DOS contient "un fichier" virtuel" si on peut dire, dont le nom est "NUL". Celui-ci est non visible, lors d'une lecture du contenu d'un dossier (sous DOS, windows toute version) quelle que soit la méthode employé. En fait il n'y a qu'une seul façon de le détecter (et c'est a cela qu'il sert en pratique !)
En DOS , il existe une Commande nommée "IF EXIST UnNomDeFichier UneCommande" Qui execute UneCommande si "UnNomDeFichier" est le nom d'un fichier existant !! Or les programmeur aime parfois tester l'existance d'un répertoire, plutot que d'un fichier, alors comme IF EXIST n'accepte que le nom d'un fichier en argument, on utilise le fichier NUL.
IF EXIST c:\Windows\NUL Echo "Dossier Windows OK" affichera "Dossier Windows OK" si un dossier c:\windows\ existe sur la machine !!

Pour conclure : Son CreateDirectory se fout du fait que "Nul" soit le mot-réservé de la redirection dans les abysses intersidérale d'une sortie de commande ! Ce qui l'empeche de créer en répertoire nommé NUL, c'est que quelque soit le dossier ou tu te trouve, un fichier nommé NUL est présent et détecté par les opérations disques de bas-niveau de la machine.
Tout informaticien sait cela !!

maintenant, il reste un mystère !! Pourquoi CreateDirectory() ne déclenche pas d'érreur du type "Invalid Dir Path" !! Le pire, c'est que sous une commande DOS, un "MKDIR NUL" ne plante pas non plus !!

Christophe R
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
23 févr. 2005 à 22:19
Il n'y a rien de mysterieux, les noms interdits sont spécifiés dans MSDN par le lien 'Naming a file' depuis la page de CreateDirectory():

The following reserved device names cannot be used as the name of a file: CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9. Also avoid these names followed by an extension (for example, NUL.tx7).
Windows NT: CLOCK$ is also a reserved device name.

ciao...
BruNews, MVP VC++
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
23 févr. 2005 à 19:45
Evidemment, tout informaticien sait ça



Le périphérique Nul ou NULL est un péripherique qui sert à orienter une
sortie vers 'pas de sortie', en fait les données sont envoyer comme
vers un fichier mais elle se perdent dans les abbysses.



Le périphérique Con est la console c'est à dire habituellement le clavier en entrée, et l'écran en sortie.



Ca existe depuis DOS jusqu'a Win XP, mais sous unix aussi je crois ainsi que sur d'autre système.




<hr size="2" width="100%">Si le cerveau était assez simple pour que nous puissions le comprendre,

nous serions assez bête pour ne pas le comprendre malgré tout.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_algori Messages postés 868 Date d'inscription dimanche 26 décembre 2004 Statut Membre Dernière intervention 26 février 2008 1
23 févr. 2005 à 19:48
LOL.
Ca ! C'est un truc que je connaissais pas.
C'est pas mal ce coup-là !
P'être qu'il y en a d'autres ???
@++ et cherche encore
0
cs_algori Messages postés 868 Date d'inscription dimanche 26 décembre 2004 Statut Membre Dernière intervention 26 février 2008 1
23 févr. 2005 à 19:51
Ah ! Casy, ton message est arrivé pendant que j'étais en train d'écrire le mien.
OK, maintenant je saurai ce que ça signifie.
Tchao !
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
23 févr. 2005 à 20:34
Allez savoir, si ca se trouve, Windows a un dictionnaire de gros mot
intégré pour empêcher de créer des noms de dossiers qui peuvent porter
préjudice à Microsoft... lol

DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : http://www.ProgOtoP.com/popapi/
0
cuq Messages postés 345 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 21 mars 2008 2
23 févr. 2005 à 20:35
Evidemment, tout informaticien sait ça -> ben désolé mais je suis pas informaticien
note : NULL tu peux

Exacte pour com et lpt mais seulement de com0 à com9 : com10 c'est bon et si tu veux 10 port serie sur ton pc :-)
0
cs_algori Messages postés 868 Date d'inscription dimanche 26 décembre 2004 Statut Membre Dernière intervention 26 février 2008 1
23 févr. 2005 à 20:44
>>DARKSIDIOUS
Si ça se trouve ! C'est ce qu'il ont fait !
Ah, les c*** (et c'est le cas de le dire)
@++ et bonne soirée !
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
23 févr. 2005 à 22:04
Tout à fait



Il sert aussi dans les fichiers batch à rediriger la sortie de
certaines commandes très bavardes pour les éxécuter de façon
silencieuse.



Petite précision encore Christophe, quoique tu fasse, quoique tu écrive
dans ce ficher (même un roman) il aura toujours une taille de 0 octets
d'où le terme se perdent dans les abbysses.



Ce fichier était quelque fois visible avec certains
éditeurs ('physiques') de disques sous DOS (norton ou pctools entre
autre) tout dépend de la manip que tu faisais.



MKDIR Nul marche sous la console de windows mais ne crée pas le répertoire quand même.

A voir sous DOS.

Par contre MKDIR NULL marche très bien, pourtant il me semble que sous DOS ça ne marchait pas.





<hr size="2" width="100%">Si le cerveau était assez simple pour que nous puissions le comprendre,

nous serions assez bête pour ne pas le comprendre malgré tout.
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
23 févr. 2005 à 22:37
Alors après une petite installation du DOS 6.22 ....

(Diable que ça rame des disquettes)



mkdir nul renvois l'erreur 'Création de répertoire impossible'

par contre, contrairement à ce que disait, il est possible de créer un répertoire Null



pour LPT c'est limiter à 3, COM c'est 4,


clock passe mais pas clock$ comme sous NT (et c'est pas à cause du $, a$ passe)


A ce bon vieux DOS, il fait toujours parler de lui






<hr size="2" width="100%">Si le cerveau était assez simple pour que nous puissions le comprendre,

nous serions assez bête pour ne pas le comprendre malgré tout.
0
cuq Messages postés 345 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 21 mars 2008 2
24 févr. 2005 à 08:42
Ha ben ca c'est du commentaire constructif ....

Merci en particulier pour les commentaires de crenaud76 et de BruNews

Par contre la doc de windows doit pas êter UP-TO-DATE car dans les interdits tu as aussi com0 et lpt0 ( enfin sur mon pc en XP et en 2000 ca marche pas ) et CLOCK$ sur XP et 2000 ca marche ..






Merci vos explications
0
Rejoignez-nous