DetailPage-MSS-KB

Base de connaissances

Numéro d'article: 320081 - Dernière mise à jour: lundi 4 avril 2011 - Version: 8.0

Pour continuer à recevoir des mises à jour de sécurité pour Windows XP, assurez-vous que vous exécutez Windows XP avec Service Pack 3 (SP3). Pour plus d'informations, reportez-vous à la page Web suivante de Microsoft : Certaines versions de Windows ne seront bientôt plus prises en charge ( http://windows.microsoft.com/fr-fr/windows/help/end-support-windows-xp-sp2-windows-vista-without-service-packs?os=xp )

Sommaire

Résumé

Il est possible que vous ne puissiez pas supprimer un fichier ou un dossier sur un volume NTFS (Windows NT File System). Cet article décrit les différentes causes possibles de ce problème et les procédures de résolution correspondantes.

Plus d'informations

REMARQUE : en interne, le système de fichiers NTFS traite les dossiers comme un type spécial de fichier. Par conséquent, le terme "fichier" employé dans cet article réfère à la fois à un fichier et à un dossier.

Cause 1 : le fichier utilise une liste de contrôle d'accès

Il est possible que vous ne puissiez pas supprimer un fichier si celui-ci utilise une liste de contrôle d'accès (ACL, Access Control List). Pour résoudre ce problème, modifiez les autorisations relatives au fichier. Vous devrez peut-être prendre possession des fichiers pour pouvoir modifier les autorisations.

Les administrateurs peuvent prendre possession de n'importe quel fichier de manière implicite, même si aucune autorisation relative à ce fichier ne leur a été accordée de manière explicite. Les propriétaires de fichiers peuvent modifier les autorisations relatives aux fichiers de manière implicite, même si aucune autorisation relative à ces fichiers ne leur a été accordée de manière explicite. Par conséquent, avant de supprimer un fichier, vous devrez peut-être en prendre possession et vous donner les autorisations de le supprimer.

Vous ne pouvez pas utiliser certains outils de sécurité pour afficher ou modifier des autorisations car le fichier possède une ACL non réglementaire

Pour contourner ce problème, utilisez un autre outil (une version ultérieure de l'outil Cacls.exe par exemple).

Selon leur type, les entrées de contrôle d'accès (ACE, Access Control Entries) d'une ACL sont organisées dans un ordre préférentiel. Par exemple, les ACE qui refusent l'accès sont généralement positionnées avant d'autres ACE qui autorisent l'accès. Toutefois, rien n'empêche un programme d'écrire une ACL contenant des ACE dans un ordre arbitraire. Dans certaines versions antérieures de Windows, des problèmes survenaient lorsque Windows essayait de lire ces ACL "non réglementaires". Dans certains cas, vous ne pouvez pas modifier correctement ces ACL à l'aide de l'éditeur de sécurité graphique de l'Explorateur Windows. Ce problème a été résolu dans les versions ultérieures de Windows. Si vous êtes confronté à ce problème, utilisez la dernière version de l'outil Cacls.exe. Même si vous ne pouvez pas afficher ni modifier une ACL en place, vous pouvez écrire une nouvelle ACL qui vous autorise à accéder au fichier.

Cause 2 : le fichier est en cours d'utilisation

Vous pouvez ne pas parvenir à supprimer un fichier si celui-ci est en cours d'utilisation. Pour résoudre ce problème, déterminez le processus avec le handle ouvert, puis fermez ce processus.

Selon la manière dont le fichier est ouvert (pour un accès exclusif ou pour un accès partagé par exemple), vous pouvez ne pas être en mesure de supprimer un fichier en cours d'utilisation. De nombreux outils peuvent vous aider à déterminer les processus qui ont des handles ouverts sur des fichiers à un moment donné.

Pour plus d'informations sur les outils permettant de déterminer les processus avec des handles ouverts sur des fichiers, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la Base de connaissances Microsoft :
242131  (http://support.microsoft.com/kb/242131/ ) PROCÉDURE : Afficher la liste des processus avec des fichiers ouverts
172710  (http://support.microsoft.com/kb/172710/ ) Utilisation de l'outil permettant l'ouverture de handles dans le Kit de ressources de Microsoft Windows NT 4.0
Ce problème peut revêtir plusieurs formes. Vous pouvez être en mesure d'utiliser la commande delete pour supprimer un fichier, mais celui-ci n'est pas supprimé tant que le processus avec ce fichier ouvert ne le libère pas. Par ailleurs, vous pouvez ne pas parvenir à accéder à la boîte de dialogue Sécurité pour un fichier en instance d'être supprimé. Pour résoudre ce problème, déterminez le processus avec le handle ouvert, puis fermez ce processus.

Cause 3 : le système de fichiers est endommagé, ce qui empêche d'accéder au fichier

Vous pouvez ne pas parvenir à supprimer le fichier si le système de fichiers est endommagé. Pour résoudre ce problème, exécutez l'utilitaire Chkdsk sur le volume du disque pour corriger toute erreur éventuelle.

Des secteurs incorrects sur le disque, du matériel défectueux ou des bogues logiciels peuvent endommager le système de fichiers et créer des problèmes au niveau des fichiers. Des opérations normales peuvent échouer de plusieurs manières. Lorsque le système de fichiers détecte un problème, il enregistre un événement dans le journal des événements et affiche généralement un message vous invitant à exécuter Chkdsk. Selon la nature du problème, Chkdsk peut parvenir ou non à récupérer les données de fichiers ; toutefois, Chkdsk permet de ramener le système de fichiers à un état de cohérence interne.

Pour plus d'informations sur l'utilisation de l'utilitaire Chkdsk, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la Base de connaissances Microsoft :
176646  (http://support.microsoft.com/kb/176646/ ) Message d'erreur : Le fichier ou le répertoire est endommagé...
187941  (http://support.microsoft.com/kb/187941/ ) Explication de CHKDSK et des nouveaux commutateurs /C et /I

Cause 4 : les chemins d'accès des fichiers sont trop profonds par rapport au nombre de caractères de MAX_PATH

Vous pouvez ne pas parvenir à ouvrir un fichier si des problèmes affectent le chemin d'accès au fichier.

Solution 1 : utiliser un nom 8.3 généré automatiquement pour accéder au fichier

Pour résoudre ce problème, vous pouvez utiliser le nom 8.3 généré automatiquement pour accéder au fichier. Cette solution peut être la plus facile si le chemin d'accès est trop profond en raison de noms de dossiers longs. Si le chemin d'accès 8.3 est aussi trop long ou que les noms 8.3 ont été désactivés sur le volume, passez à la solution suivante.

Pour plus d'informations sur la désactivation des noms de fichiers 8.3 sur des volumes NTFS, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
121007  (http://support.microsoft.com/kb/121007/ ) Procédure pour désactiver la création de noms 8.3 sur des partitions NTFS

Solution 2 : renommer ou déplacer un dossier profond

Pour résoudre ce problème, renommez le dossier de sorte qu'aucun fichier cible ne soit plus profond que MAX_PATH. Si vous procédez ainsi, commencez au dossier racine (ou tout autre emplacement pratique), puis renommez les dossiers en leur attribuant des noms plus courts. Si cela ne résout pas le problème (si, par exemple, un fichier est à plus de 128 dossiers de profondeur), passez à la solution suivante.

Solution 3 : utiliser un partage réseau aussi profond que le dossier

Si les deux premières solutions s'avèrent peu pratiques ou ne résolvent pas le problème, créez un partage réseau aussi profond que possible dans l'arborescence des dossiers, puis renommez les dossiers en accédant au partage.

Solution 4 : utiliser un outil qui peut traverser des chemins d'accès profonds

De nombreux programmes Windows s'attendent à ce que la longueur d'un chemin d'accès ne dépasse pas 255 caractères ; par conséquent, ces programmes allouent uniquement un espace de stockage interne suffisant pour prendre en charge ces chemins d'accès. Le système de fichiers NTFS n'est pas limité de la sorte et peut prendre en charge des chemins d'accès bien plus longs.

Vous pouvez être confronté à ce problème si vous créez un partage à un emplacement relativement profond dans votre structure de dossiers et que vous créez par la suite une structure profonde sous cet emplacement en utilisant le partage. Certains outils qui agissent localement sur l'arborescence des dossiers peuvent ne pas traverser toute l'arborescence en partant de la racine. Vous devrez peut-être utiliser ces outils d'une manière spéciale afin qu'ils puissent traverser le partage (la documentation sur l'API de CreateFile décrit une méthode permettant de traverser toute l'arborescence dans cette situation).

En règle générale, vous pouvez gérer les fichiers en utilisant le logiciel qui les crée. Si vous possédez un programme qui crée des fichiers à une profondeur supérieure à MAX_PATH, vous pouvez généralement utiliser le même programme pour supprimer ou gérer ces fichiers. Vous pouvez généralement supprimer des fichiers créés sur un partage en utilisant le même partage.

Cause 4 : le nom de fichier inclut un nom réservé dans l'espace des noms Win32

Si le nom de fichier inclut un nom réservé (par exemple, "lpt1") dans l'espace des noms Win32, vous pouvez ne pas être en mesure de supprimer le fichier. Pour résoudre ce problème, utilisez un programme non-Win32 pour renommer le fichier. Vous pouvez utiliser un outil POSIX ou tout autre outil utilisant la syntaxe interne appropriée pour utiliser le fichier.

En outre, vous pourrez peut-être utiliser certaines commandes intégrées pour contourner les contrôles habituels des noms réservés Win32, en employant une syntaxe particulière pour spécifier le chemin d'accès au fichier. Par exemple, si vous utilisez la commande del dans Windows XP, vous pouvez supprimer un fichier nommé "lpt1" si vous spécifiez le chemin d'accès complet au fichier en employant la syntaxe spéciale suivante :
del \\?\c:\chemin_fichier\lpt1
Pour plus d'informations sur la suppression de fichiers avec des noms réservés sous Windows NT et Windows 2000, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
120716  (http://support.microsoft.com/kb/120716/ ) Procédure pour supprimer des fichiers avec des noms réservés dans Windows
Pour plus d'informations sur la suppression de fichiers avec des noms réservés sous Windows XP, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
315226  (http://support.microsoft.com/kb/315226/ ) Procédure pour supprimer des fichiers avec des noms réservés dans Windows XP
Si vous ouvrez le handle d'un fichier en utilisant le mécanisme CreateFile Win32 classique, certains noms de fichiers sont réservés pour les périphériques de versions antérieures du DOS. À des fins de compatibilité descendante, ces noms de fichiers ne sont pas autorisés et ne peuvent pas être créés en utilisant des appels de fichiers Win32 standard. Toutefois, ce problème n'est pas une limitation du système de fichiers NTFS.

Vous pouvez être en mesure d'utiliser un programme Win32 pour contourner les contrôles de noms standard qui sont effectués lors de la création (ou la suppression) d'un fichier, en utilisant la même technique que celle employée pour traverser des dossiers qui sont plus profonds que MAX_PATH. En outre, certains outils POSIX ne font pas l'objet de ces contrôles de noms.

Cause 5 : le nom de fichier inclut un nom non valide dans l'espace de noms Win32

Vous pouvez ne pas parvenir à supprimer un fichier si une partie de son nom n'est pas valide (par exemple, s'il contient un espace en fin de chaîne, un point en fin de chaîne ou uniquement des espaces). Pour résoudre ce problème, utilisez un outil qui emploie la syntaxe interne appropriée pour supprimer le fichier. Vous pouvez employer la syntaxe "\\?\" avec certains outils pour agir sur ces fichiers, par exemple :
del "\\?\c:\chemin_fichier_avec_espace_fin_chaîne.txt "
La cause de ce problème est semblable à la cause 4. Cependant, si vous employez une syntaxe Win32 classique pour ouvrir un fichier dont le nom contient des espaces ou des points en fin de chaîne, ceux-ci sont supprimés avant l'ouverture du fichier. Par conséquent, si vous possédez deux fichiers dans le même dossier nommés "FichierA.txt" et "FichierA.txt " (notez l'espace après le nom du fichier) et que vous essayez d'ouvrir le second fichier en utilisant des appels Win32 standard, vous ouvrez en fait le premier fichier. De la même manière, si vous disposez d'un fichier nommé " " (un espace) et que vous essayez de l'ouvrir en utilisant des appels Win32 standard, vous ouvrez en fait le dossier parent du fichier. Dans ce cas, si vous essayez de modifier les paramètres de sécurité de ces fichiers, vous pouvez soit ne pas y parvenir, soit modifier de manière inattendue les paramètres d'autres fichiers. Si cela se produit, vous pouvez penser que vous disposez d'autorisations sur un fichier qui a en fait une ACL restrictive.

Combinaisons de causes

Dans certaines situations, vous pouvez être confronté à plusieurs de ces causes, ce qui peut rendre la procédure de suppression d'un fichier plus complexe. Par exemple, si vous ouvrez une session en tant qu'administrateur de l'ordinateur, vous pouvez être confronté à la cause 1 (vous ne disposez pas des autorisations nécessaires pour supprimer un fichier) et à la cause 5 (le nom du fichier contient un espace en fin de chaîne, ce qui entraîne l'accès à un autre fichier ou à un fichier inexistant), et ne pas parvenir à supprimer le fichier. Si vous essayez de résoudre la cause 1 en prenant possession du fichier et en ajoutant des autorisations, vous pouvez toujours être dans l'incapacité de supprimer le fichier car l'éditeur ACL dans l'interface utilisateur ne peut pas accéder au fichier approprié en raison de la cause 6.

Dans ce cas, vous pouvez utiliser l'utilitaire Subinacl avec le paramètre /onlyfile (cet utilitaire est fourni avec le Kit de ressources) pour modifier l'appropriation et les autorisations sur un fichier autrement inaccessible, par exemple :
subinacl /onlyfile "\\?\c:\chemin_fichier_problématique" /setowner=domaine\administrateur /grant=domaine\administrateur=F
REMARQUE : cette commande constitue une seule ligne de commande ; des retours à la ligne ont été insérés pour une meilleure lisibilité.

Cet exemple de ligne de commande modifie le fichier C:\chemin_fichier_problématique contenant un espace en fin de chaîne, de façon que le compte domaine\administrateur soit le propriétaire du fichier et qu'il ait un contrôle total sur le fichier. Vous pouvez désormais supprimer ce fichier en utilisant la commande del avec la même syntaxe "\\?\".
Mots-clés : 
kbinfo KB320081
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.
Partager
Options de support supplémentaire
Forums du support Microsoft Community
Nous contacter directement
Trouver un partenaire Microsoft Certified Partner
Microsoft Store