DetailPage-MSS-KB

Base de Dados de Conhecimento

ID do artigo: 320081 - Última revisão: segunda-feira, 3 de dezembro de 2007 - Revisão: 8.2

Nesta página

INTRODUÇÃO

Este artigo descreve porque talvez não seja possível excluir um arquivo ou uma pasta em um volume com sistema de arquivos NTFS e como proceder diante de causas diferentes e resolver o problema.

Mais Informações

Observação Internamente, o NTFS trata as pastas como um tipo especial de arquivo. Por isso, a palavra "arquivo" neste artigo indica tanto uma pasta quanto um arquivo.

Causa 1: O arquivo usa uma ACL

Talvez não seja possível excluir um arquivo caso ele use uma ACL (Lista de Controle de Acesso). Para resolver este problema, altere as permissões do arquivo. Talvez seja preciso assumir a propriedade dos arquivos para poder alterar as permissões.

Os administradores têm a capacidade implícita de assumir a propriedade de todos os arquivos, mesmo que não tenham recebido explicitamente a permissão para isso. Os proprietários de arquivo têm a capacidade implícita de modificar as permissões de arquivo, mesmo que não tenham recebido explicitamente a permissão para isso. Portanto, talvez seja necessário se apropriar de um arquivo, conceder a você mesmo permissões para excluir o arquivo e, então, excluí-lo.

Não é possível usar determinadas ferramentas de segurança para exibir ou modificar as permissões pois o arquivo tem uma ACL não canônico

Para solucionar este problema, use outra ferramenta (por exemplo, uma compilação mais recente do Cacls.exe).

As ACE (Entradas de Controle de Acesso) em uma ACL têm uma determinada seqüência, dependendo do tipo. Por exemplo, as ACEs que negam acesso normalmente vêm antes de ACEs que concedem o acesso. No entanto, nada impede que um programa de grave uma ACL com as ACEs em uma seqüência arbitrária. Nas versões anteriores do Windows, havia problemas quando o Microsoft Windows tentava ler essas ACLs "não-canônicas". Às vezes, você não pode modificar essas ACLs corretamente, usando o editor de segurança gráfica do Microsoft Windows Explorer. Este problema foi corrigido nas versões mais recentes do Windows. Se estiver passando por esse problema, use a versão mais recente de Cacls.exe. Mesmo que não possa exibir ou editar uma ACL localmente, é possível gravar uma nova que lhe dê acesso ao arquivo.

Causa 2: O arquivo está sendo usado

Talvez não seja possível excluir um arquivo caso ele esteja sendo usado. Para resolver este problema, determine o processo com identificador aberto e feche o processo.

Dependendo da forma como o arquivo é aberto (por exemplo, aberto para o acesso exclusivo, e não compartilhado), talvez não seja possívelexcluir um arquivo já em uso. Você pode usar várias ferramentas para determinar o processo que tem o identificador aberto para os arquivos sempre que necessário. Para obter mais informações sobre as ferramentas que auxiliam os processos com os identificadores abertos para os arquivos, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento Microsoft (alguns artigos podem estar em inglês):
242131  (http://support.microsoft.com/kb/242131/ ) Como exibir uma lista de processos que tem arquivos abertos
172710  (http://support.microsoft.com/kb/172710/ ) Como usar a ferramenta OH no Windows NT 4.0 Resource Kit
Os sintomas do problema podem variar. Talvez seja possível usar o comando Excluir para excluir um arquivo, mas ele não é efetivamente excluído até que o processo com o arquivo aberto solte-o. Além disso, talvez não seja possível acessar a caixa de diálogo Segurança para um arquivo que esteja com a exclusão pendente. Para resolver este problema, determine o processo com identificador aberto e feche o processo.

Causa 3: Dano no sistema de arquivos está impedindo o acesso ao arquivo

Talvez não seja possível excluir o arquivo caso o sistema esteja corrompido. Para resolver este problema, execute o utilitário Chkdsk no volume do disco para corrigir os erros.

Setores defeituosos no disco, outros hardwares com falha ou bugs de software podem corromper o sistema de arquivos e colocá-los em um estado problemático. Operações comuns podem falhar de várias formas. Quando o sistema de arquivos detecta o dano, ele registra um evento no log e uma mensagem é normalmente exibida solicitando a execução do Chkdsk. Dependendo da natureza do dano, o Chkdsk pode ou não recuperar os dados do arquivo; no entanto, o Chkdsk retorna o sistema de arquivos a um estado internamente consistente. Para obter informações adicionais sobre como usar o utilitário Chkdsk, clique nos números abaixo para ler os artigos na Base de Dados de Conhecimento Microsoft (alguns artigos podem estar em inglês):
176646  (http://support.microsoft.com/kb/176646/ ) Mensagem de erro: O arquivo ou diretório está corrompido...
187941  (http://support.microsoft.com/kb/187941/ ) Uma explicação sobre o CHKDSK e as novas opções /C e /I

Causa 4: Há arquivos em caminhos mais longos do que os caracteres MAX_PATH

Talvez não seja possível abrir, editar ou excluir um arquivo caso haja problemas com o caminho do arquivo.

Resolução 1: Usar o nome 8.3 gerado automaticamente para acessar o arquivo

Para resolver este problema, talvez seja necessário usar o nome 8.3 gerado automaticamente para acessar o arquivo. Esta resolução pode ser a mais simples caso o caminho seja longo, já que os nomes de pasta são muito longos. Se o caminho 8.3 for muito longo ou os nomes 8.3 foram desativados no volume, vá para a Resolução 2. Para obter informações adicionais sobre como desativar nomes de arquivo 8.3 em volumes com o NTFS, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento Microsoft (a página pode estar em inglês):
121007  (http://support.microsoft.com/kb/121007/ ) Como desativar a criação do nome 8.3 em partições NTFS

Resolução 2: Renomear ou mover uma pasta longa

Renomeie a pasta para que os arquivos de destino menores do que o MAX_PATH não existam mais. Se fizer isso, inicie na pasta raiz (ou em qualquer outro local apropriado) e renomeie as pastas para que elas tenham nomes menores. Se esta etapa não resolver este problema (por exemplo, se um arquivo tiver mais de 128 pastas de comprimento), vá para a Resolução 4.

Resolução 3: Mapear uma unidade para uma pasta na estrutura do caminho

Mapeie uma unidade para uma pasta dentro da estrutura do caminho do arquivo ou da pasta de destino. Este método encurta o caminho virtual.

Por exemplo, suponha que você tenha um caminho estruturado da seguinte maneira:
\\Nome_do_servidor\Nome_da_subpasta1\Nome_da_subpasta2\Nome_da_subpasta3\Nome_da_subpasta4\...
Nesse caminho, a contagem de caractere total está acima de 255 caracteres. Para encurtar o comprimento desse caminho, para 73 caracteres, mapeie uma unidade para Nome_da_subpasta4.

Resolução 4: Usar um compartilhamento de rede tão longo quanto a pasta

Se as resoluções 1 ou 2 e 3 não forem apropriadas ou não resolverem o problema, crie um compartilhamento de rede o mais longo possível na árvore de pastas e renomeie as pastas, acessando o compartilhamento.

Resolução 5: Usar uma ferramenta que cruze caminhos longos

Muitos programas do Windows esperam que o tamanho máximo do caminho seja inferior a 255 caracteres. Por isso, eles só conseguem alocar armazenamento interno suficiente para identificar esses caminhos convencionais. O NTFS é não possui esse limite e pode ter muitos mais caminhos.

Você pode enfrentar este problema, caso crie um compartilhamento em algum ponto de na estrutura de pasta que já seja razoavelmente longo e crie uma estrutura longa abaixo, usando o compartilhamento. Algumas ferramentas que funcionam localmente na árvore de pastas talvez não consigam cruzar toda a árvore da raiz. Talvez seja preciso usar essas ferramentas de uma forma especial, para que elas cruzem todo o compartilhamento. (O documento CreateFile API descreve um método para cruzar toda a árvore nessa situação.)

Normalmente, é possível gerenciar arquivos, usando o software que os criou. Se houver um programa capaz de criar arquivos mais longos do que o MAX_PATH, você normalmente usa o mesmo programa para excluir ou gerenciar os arquivos. Normalmente, é possível excluir os arquivos criados em um compartilhamento com o mesmo compartilhamento.

Causa 5: O nome de arquivo inclui um nome reservado no espaço Win32

Caso o nome do arquivo inclua um nome reservado (por exemplo, "lpt1") no espaço Win32, talvez não seja possível excluir o arquivo. Para resolver esse problema, use um programa diferente do Win-32 para renomear o arquivo. É possível usar uma ferramenta POSIX ou qualquer outra que use a sintaxe interna correspondente para usar o arquivo.

Além disso, talvez seja possível usar alguns comandos incorporados para ignorar as verificações de nome reservado Win32, caso use uma determinada sintaxe para especificar o caminho do arquivo. Por exemplo, se você usa o comando Del no Windows XP, é possível excluir um arquivo chamado "lpt1" caso especifique o caminho completo, usando a seguinte sintaxe especial:
del \\?\c:\caminho_do_arquivo\lpt1
Para obter mais informações sobre como excluir arquivos com nomes reservados no Windows NT ou no Windows 2000, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento Microsoft (a página pode estar em inglês):
120716  (http://support.microsoft.com/kb/120716/ ) Como remover arquivos com nomes reservados no Windows
Para obter mais informações sobre como excluir arquivos com nomes reservados no Windows XP, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento Microsoft (a página pode estar em inglês):
315226  (http://support.microsoft.com/kb/315226/ ) Como remover arquivos com nomes reservados no Windows XP
Se um manipulador é aberto para um arquivo, usando o mecanismo convencional CreateFile Win32, determinados nomes de arquivo são reservados para os dispositivos DOS ao estilo antigo. Por questões de compatibilidade com versões anteriores, esses nomes de arquivo não são permitidos e não podem ser criados, usando chamadas de arquivo Win32 convencionais. No entanto, esse problema não é uma limitação do NTFS.

Talvez seja possível usar um programa Win32 para ignorar as verificações de nome convencionais realizadas quando um arquivo é criado (ou excluído), usando a mesma técnica usada para cruzar pastas mais longas do que o MAX_PATH. Além disso, algumas ferramentas POSIX não estão sujeitas a essas verificações de nome.

Causa 6: O nome de arquivo inclui um nome inválido no espaço Win32

Talvez não seja possível excluir um arquivo se o nome do arquivo inclui um nome inválido (por exemplo, o nome de arquivo com um espaço ou ponto no fim ou um nome de arquivo formado apenas por espaços). Para resolver esse problema, use uma ferramenta que use a sintaxe interna correspondente para excluir o arquivo. É possível usar a sintaxe "\\?\" com algumas ferramentas para operação nesses arquivos, por exemplo:
del "\\?\c:\caminho_do_arquivo_que contém um espaço no fim.txt "
A causa desse problema é similar à Causa 4. No entanto, se você usar uma sintaxe Win32 convencional para abrir um arquivo com espaços no fim ou pontos no nome, os espaços ou pontos serão retirados antes do arquivo real ser aberto. Por isso, se houver dois arquivos na mesma pasta com nomes "UmArquivo.txt" e "UmArquivo.txt " (observe o espaço após o nome do arquivo) e você tentar abrir o segundo arquivo usando as chamadas Win32 padrão, o primeiro é aberto. Da mesma forma, se houver um arquivo chamado apenas " " (espaço) e você tentar abri-lo usando as chamadas Win32 padrão, será aberta a pasta-pai do arquivo. Nessa situação, se você tentar alterar as configurações de segurança desses arquivos, talvez não seja possível fazer isso ou talvez as configurações de arquivos diferentes sejam alteradas inesperadamente. Se este comportamento ocorrer, talvez você ache que tenha permissões para um arquivo que realmente possua uma ACL restritiva.

Combinação de causas

Às vezes, é possível que haja combinações dessas causas, que podem tornar o procedimento de exclusão de um arquivo mais complexo. Por exemplo, se você fizer logon como administrador do computador, é possível que haja uma combinação da Causa 1 (sem permissões para excluir um arquivo) e da Causa 5 (o nome do arquivo contém um caractere no fim que faz o acesso ser redirecionado para outro arquivo ou não-existente) e não sej apossível excluir o arquivo. Se você tentar resolver a Causa 1 assumindo a propriedade do arquivo e adicionando permissões, talvez ainda não possa excluir o arquivo porque o editor ACL na interface de usuário não pode acessar o arquivo correspondente da Causa 6.

Nessa situação, é possível usar o utilitário Subinacl com a opção /onlyfile (esse utilitário está incluso no Resource Kit) para alterar a propriedade e as permissões de um arquivo que antes era inacessível, por exemplo:
subinacl /onlyfile "\\?\c:\caminho_do_arquivo_problemático" /setowner=domínio\administrador /grant=domínio\administrador=F
Observação Este comando é um comando de linha única cuja linha foi quebrada para fins de legibilidade.

Esta linha de comando de amostra modifica o arquivo C:\caminho_do_arquivo_problemático que contém um espaço para que a conta do domínio\administrador seja a proprietária do arquivo e essa conta tenha total controle sobre ele. Agora é possível excluir esse arquivo, usando o comando Del com a mesma sintaxe "\\?\".

Referências

Para obter mais informações, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento Microsoft (a página pode estar em inglês):
319368  (http://support.microsoft.com/kb/319368/ ) Uma mensagem de erro "Acesso negado" é exibida ao excluir pastas de uma unidade montada

A informação contida neste artigo aplica-se a:
  • Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
  • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows Server 2003, Web Edition
  • Microsoft Windows Small Business Server 2003 Premium Edition
  • Microsoft Windows Small Business Server 2003 Standard Edition
  • Microsoft Windows XP Professional
  • Microsoft Windows XP Home Edition
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows 2000 Datacenter Server
  • """Microsoft Windows Advanced Server, Limited Edition"""
  • Microsoft Windows Datacenter Server Limited Edition
Palavras-chave: 
kbinfo kbfilesystems KB320081
Compartilhar
Opções de suporte adicionais
Fóruns de Suporte do Microsoft Community
Contate-nos diretamente
Localize um parceiro certificado da Microsoft
Microsoft Store