Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique pourquoi ne peut pas supprimer un fichier ou un dossier sur un volume de système de fichiers NTFS. Il fournit également de l’aide pour résoudre ce problème.
Numéro de base de connaissances d’origine : 320081
Note
En interne, NTFS traite les dossiers comme un type spécial de fichier. Par conséquent, le fichier word de cet article indique un fichier ou un dossier.
Cause 1 : Le fichier utilise une liste de contrôle d’accès
Vous ne pouvez pas supprimer un fichier si le fichier utilise une liste de contrôle d’accès (ACL). Pour résoudre ce problème, modifiez les autorisations sur le fichier. Vous devrez peut-être prendre possession des fichiers pour modifier les autorisations.
Les administrateurs ont la possibilité implicite de prendre possession d’un fichier, même s’ils n’ont pas été explicitement autorisés à accéder au fichier. Les propriétaires de fichiers ont la possibilité implicite de modifier les autorisations de fichier, même s’ils n’ont pas explicitement accordé d’autorisations au fichier. Par conséquent, vous devrez peut-être prendre possession d’un fichier, vous accorder des autorisations pour supprimer le fichier, puis supprimer le fichier.
Vous ne pouvez pas utiliser certains outils de sécurité pour afficher ou modifier des autorisations, car le fichier a une liste de contrôle d’accès non canonique
Pour contourner ce problème, utilisez un autre outil (par exemple, une build ultérieure de Cacls.exe).
Les entrées de contrôle d’accès dans une liste de contrôle d’accès ont une séquence préférée en fonction de leur type. Par exemple, les AE qui refusent l’accès sont généralement avant les ACL qui accordent l’accès. Toutefois, rien n’empêche un programme d’écrire une liste de contrôle d’accès qui possède des ACL dans une séquence arbitraire. Dans certaines versions antérieures de Windows, des problèmes se sont produits lorsque Windows a essayé de lire ces listes de contrôle d’accès non canoniques. Parfois, vous ne pouvez pas modifier ces listes de contrôle d’accès correctement à l’aide de l’éditeur de sécurité graphique de l’Explorateur Microsoft Windows. Ce problème a été corrigé dans les versions ultérieures de Windows. Si vous rencontrez ce problème, utilisez la version la plus récente de Cacls.exe. Même si vous ne pouvez pas afficher ou modifier une liste de contrôle d’accès en place, vous pouvez écrire une nouvelle liste de contrôle d’accès pour accéder au fichier.
Cause 2 : Le fichier est utilisé
Vous ne pouvez pas supprimer un fichier si le fichier est utilisé. Pour résoudre ce problème, déterminez le processus qui a le handle ouvert, puis fermez ce processus.
Selon la façon dont le fichier est ouvert, vous ne pouvez peut-être pas supprimer un fichier en cours d’utilisation. Par exemple, le fichier est ouvert pour un accès exclusif au lieu d’un accès partagé. Vous pouvez utiliser différents outils pour déterminer les processus qui ont des handles ouverts sur des fichiers chaque fois que vous le souhaitez.
Les symptômes de ce problème peuvent varier. Vous pouvez utiliser la commande Delete pour supprimer un fichier. Toutefois, le fichier n’est pas supprimé tant que le processus sur lequel le fichier est ouvert libère le fichier. En outre, vous ne pourrez peut-être pas accéder à la boîte de dialogue Sécurité d’un fichier en attente de suppression. Pour résoudre ce problème, déterminez le processus qui a le handle ouvert, puis fermez ce processus.
Cause 3 : La corruption du système de fichiers empêche l’accès au fichier
Vous ne pouvez pas 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 de disque pour corriger les erreurs.
Les raisons suivantes peuvent endommager le système de fichiers et placer des fichiers dans un état problématique :
- Secteurs incorrects sur le disque
- Autre matériel défectueux
- Bogues logiciels
Les opérations classiques peuvent échouer de différentes façons. Lorsque le système de fichiers détecte une altération, il enregistre un événement dans le journal des événements et vous recevez généralement un message vous invitant à exécuter Chkdsk. Selon la nature de l’altération, Chkdsk peut ou ne pas récupérer les données de fichier. Toutefois, Chkdsk retourne le système de fichiers à un état cohérent en interne.
Cause 4 : Les fichiers existent dans des chemins d’accès plus profonds que MAX_PATH caractères
Vous ne pouvez pas ouvrir, modifier ou supprimer un fichier en cas de problème avec le chemin d’accès au fichier.
Ré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 résolution peut être la résolution la plus simple si le chemin d’accès est profond, car les noms de dossiers sont trop longs. Si le chemin 8.3 est également trop long ou si les noms 8.3 ont été désactivés sur le volume, accédez à Résolution 2. Pour plus d’informations sur la désactivation des noms de fichiers 8.3 sur les volumes NTFS, consultez Comment désactiver la création de noms 8.3 sur les partitions NTFS.
Résolution 2 : Renommer ou déplacer un dossier profond
Renommez le dossier afin que les fichiers cibles plus profonds que ceux MAX_PATH
qui n’existent plus. Si vous le faites, commencez au dossier racine ou à tout autre endroit pratique. Renommez ensuite les dossiers afin qu’ils aient des noms plus courts. Si cette étape ne résout pas ce problème, par exemple, si un fichier dépasse 128 dossiers, accédez à Résolution 4.
Résolution 3 : Mapper un lecteur à un dossier dans la structure du chemin d’accès
Mappez un lecteur à un dossier à l’intérieur de la structure du chemin d’accès du fichier ou dossier cible. Cette méthode raccourcit le chemin d’accès virtuel.
Par exemple, supposons que vous disposez d’un chemin d’accès structuré comme suit :
\\ServerName\SubfolderName1\SubfolderName2\SubfolderName3\SubfolderName4\...
Dans ce chemin, le nombre total de caractères est supérieur à 255 caractères. Pour raccourcir la longueur de ce chemin, à 73 caractères, mappez un lecteur à SubfolderName4.
Résolution 4 : Utiliser un partage réseau aussi profond que le dossier
Si les résolutions 1, 2 et 3 ne sont pas pratiques ou ne résolvent pas le problème, créez un partage réseau aussi profond dans l’arborescence des dossiers que vous pouvez. Renommez ensuite les dossiers en accédant au partage.
Résolution 5 : Utiliser un outil capable de parcourir des chemins profonds
De nombreux programmes Windows s’attendent à ce que la longueur maximale du chemin d’accès soit inférieure à 255 caractères. Ces programmes allouent uniquement suffisamment de stockage interne pour gérer ces chemins classiques. NTFS n’a pas cette limite et peut contenir des chemins beaucoup plus longs.
Vous pouvez rencontrer ce problème si vous créez un partage à un moment donné dans votre structure de dossiers qui est déjà assez profonde, puis créez une structure approfondie en dessous de ce point à l’aide du partage. Certains outils qui fonctionnent localement sur l’arborescence de dossiers peuvent ne pas être en mesure de parcourir l’arborescence entière à partir de la racine. Vous devrez peut-être utiliser ces outils de manière spéciale afin qu’ils puissent traverser le partage. La documentation de l’API CreateFile décrit une méthode permettant de parcourir toute l’arborescence dans cette situation.
En règle générale, vous pouvez gérer des fichiers à l’aide du logiciel qui les crée. Si vous avez un programme qui peut créer des fichiers plus profonds que MAX_PATH
, vous pouvez généralement utiliser ce même programme pour supprimer ou gérer les fichiers. Vous pouvez généralement supprimer des fichiers créés sur un partage à l’aide du même partage.
Cause 5 : Le nom de fichier inclut un nom réservé dans l’espace de nom Win32
Si le nom de fichier inclut un nom réservé dans l’espace de nom Win32, tel que lpt1, vous ne pouvez pas 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 qui utilise la syntaxe interne appropriée pour utiliser le fichier.
En outre, vous pouvez utiliser certaines commandes intégrées pour contourner les vérifications de nom réservé Win32 standard si vous utilisez une syntaxe particulière pour spécifier le chemin d’accès du fichier.
Si vous ouvrez un handle sur un fichier à l’aide du mécanisme Win32 CreateFile classique, certains noms de fichiers sont réservés aux appareils DOS de style ancien. Pour une compatibilité descendante, ces noms de fichiers ne sont pas autorisés et ne peuvent pas être créés à l’aide d’appels de fichiers Win32 classiques. Ce problème n’est pas une limitation de NTFS.
Vous pouvez utiliser un programme Win32 pour contourner les vérifications de nom classiques effectuées lors de la création ou de la suppression d’un fichier à l’aide de la même technique que celle utilisée pour parcourir les dossiers plus profonds que MAX_PATH
. En outre, certains outils POSIX ne sont pas soumis à ces vérifications de nom.
Cause 6 : Le nom de fichier inclut un nom non valide dans l’espace de noms Win32
Vous ne pouvez pas supprimer un fichier si le nom du fichier inclut un nom non valide. Par exemple, le nom de fichier a un espace de fin ou un point de fin, ou le nom de fichier est constitué d’un espace uniquement. Pour résoudre ce problème, utilisez un outil qui utilise la syntaxe interne appropriée pour supprimer le fichier. Vous pouvez utiliser la "\\?\"
syntaxe avec certains outils pour fonctionner sur ces fichiers. Voici un exemple :
del "\\?\c:\<path_to_file_that contains a trailing space.txt>"
La cause de ce problème est similaire à la cause 4. Si vous utilisez une syntaxe Win32 classique pour ouvrir un fichier comportant des espaces de fin ou des points de fin dans son nom, les espaces ou points de fin sont supprimés avant l’ouverture du fichier réel. Par exemple, vous avez deux fichiers dans le même dossier nommé AFile.txt
et AFile.txt
notez l’espace après le nom du fichier. Si vous essayez d’ouvrir le deuxième fichier à l’aide d’appels Win32 standard, vous ouvrez le premier fichier à la place. De même, si vous avez un fichier dont le nom n’est qu’un espace et que vous essayez de l’ouvrir à l’aide d’appels Win32 standard, vous ouvrez le dossier parent du fichier à la place. Dans ce cas, si vous essayez de modifier les paramètres de sécurité sur ces fichiers, vous ne pourrez peut-être pas le faire, ou vous pouvez modifier de manière inattendue les paramètres sur différents fichiers. Si ce comportement se produit, vous pouvez penser que vous avez l’autorisation d’accéder à un fichier qui a réellement une liste de contrôle d’accès restrictive.
Combinaisons de causes
Parfois, vous pouvez rencontrer des combinaisons de ces causes. Il peut rendre la procédure de suppression d’un fichier plus complexe. Par exemple, si vous vous connectez en tant qu’administrateur de l’ordinateur, vous pouvez rencontrer une combinaison de Cause 1 (vous n’avez pas les autorisations nécessaires pour supprimer un fichier) et Cause 5 (le nom du fichier contient un caractère de fin qui entraîne la redirection de l’accès au fichier vers un fichier différent ou inexistant) et vous ne pouvez pas supprimer le fichier. Si vous essayez de résoudre la cause 1 en prenant possession du fichier et en ajoutant des autorisations, il se peut que vous ne puissiez toujours pas supprimer le fichier, car l’éditeur de liste de contrôle d’accès 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 /onlyfile
commutateur (cet utilitaire est inclus dans le Kit de ressources) pour modifier la propriété et les autorisations sur un fichier autrement inaccessible. Voici un exemple :
subinacl /onlyfile "\\?\c:\<path_to_problem_file>" /setowner= domain\administrator /grant= domain\administrator=F
Note
Cette commande est une seule ligne de commande qu’elle a été encapsulée pour la lisibilité.
Cet exemple de ligne de commande modifie le C:\<path_to_problem_file>
fichier qui contient un espace de fin afin que le compte domaine\administrateur soit le propriétaire du fichier et que ce compte dispose d’un contrôle total sur le fichier. Vous pouvez maintenant supprimer ce fichier à l’aide de la commande Del avec la même "\\?\"
syntaxe.