DetailPage-MSS-KB

Base de Dados de Conhecimento

Artigo: 320081 - Última revisão: segunda-feira, 3 de Dezembro de 2007 - Revisão: 7.2

Este artigo foi publicado anteriormente em PT320081

Nesta página

INTRODUÇÃO

Este artigo descreve por que poderá não ser possível eliminar um ficheiro ou uma pasta num volume de sistema de ficheiros NTFS e como corrigir as diversas causas para resolver o problema.

Este artigo poderá conter hiperligações para conteúdo em inglês (ainda não traduzido).

Mais Informação

Nota: internamente, o NTFS trata as pastas como um tipo especial de ficheiro. Por esse motivo, o termo "ficheiro" indica neste artigo quer um ficheiro quer uma pasta.

Causa 1: O ficheiro utiliza uma ACL

Poderá não ser possível eliminar um ficheiro se o ficheiro utilizar uma lista de controlo de acesso (ACL, Access Control List). Para resolver este problema, altere as permissões do ficheiro. Poderá ser necessário obter propriedade dos ficheiros para poder alterar as permissões.

Os administradores têm a capacidade implícita de obter propriedade de qualquer ficheiro, mesmo que não lhes tenham sido explicitamente atribuídas quaisquer permissões sobre o ficheiro. Os proprietários dos ficheiros têm a capacidade implícita de modificar as permissões desses ficheiros, mesmo que não lhes sejam explicitamente atribuídas quaisquer permissões sobre os mesmos. Assim, poderá ter de obter propriedade de um ficheiro, atribuir a si próprio permissões para eliminar o ficheiro e finalmente eliminá-lo.

Não é possível utilizar certas ferramentas de segurança para visualizar ou modificar as permissões porque o ficheiro tem uma ACL não canónica

Para contornar este problema, utilize outra ferramenta (por exemplo, uma compilação mais recente de Cacls.exe).

As entradas de controlo de acesso (ACEs, Access Control Entries) de uma ACL têm uma determinada sequência preferencial, dependendo do seu tipo. Por exemplo, ACEs que negam o acesso precedem normalmente ACEs que concedem acesso. Contudo, nada impede um programa de escrever uma ACL que tenha ACEs em qualquer sequência arbitrária. Em algumas versões mais antigas do Windows, ocorriam problemas quando o Microsoft Windows tentava ler estas ACLs "não canónicas". Por vezes, não é possível modificar estas ACLs correctamente utilizando o editor de segurança gráfico do Explorador do Windows (Windows Explorer) da Microsoft. Este problema foi corrigido em versões mais recentes do Windows. Se encontrar este problema, utilize a versão mais recente do ficheiro Cacls.exe. Mesmo que não consiga visualizar ou editar localmente uma ACL, poderá escrever uma nova ACL que lhe permita obter acesso ao ficheiro.

Causa 2: O ficheiro está a ser utilizado

Poderá não ser possível eliminar um ficheiro se o ficheiro estiver a ser utilizado. Para resolver este problema, determine qual o processo que tem o identificador aberto e encerre esse processo.

Dependendo da forma como o ficheiro estiver aberto (por exemplo, está aberto para acesso exclusivo em vez de acesso partilhado), poderá não ser possível eliminar um ficheiro que esteja a ser utilizado. Sempre que quiser, pode utilizar diversas ferramentas para o ajudar a determinar quais os processos que têm identificadores abertos para ficheiros.

Para obter informações adicionais sobre ferramentas que ajudam a determinar os processos que têm identificadores abertos para ficheiros, clique nos números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft (KB, Microsoft Knowledge Base):
242131  (http://support.microsoft.com/kb/242131/ ) Como: Visualizar uma lista dos processos que têm ficheiros abertos
172710  (http://support.microsoft.com/kb/172710/ ) How to use the OH tool on the Windows NT 4.0 Resource Kit
Os sintomas deste problema poderão variar. Poderá ser possível utilizar o comando Eliminar (Delete) para eliminar um ficheiro, mas o ficheiro não será realmente eliminado até que o processo que tem o ficheiro aberto o liberte. Além disso, poderá não ser possível aceder à caixa de diálogo Segurança (Security) de um ficheiro cuja eliminação esteja pendente. Para resolver este problema, determine qual o processo que tem o identificador aberto e encerre esse processo.

Causa 3: Danos no sistema de ficheiros impedem o acesso ao ficheiro

Poderá não ser possível eliminar o ficheiro se o sistema de ficheiros estiver danificado. Para resolver este problema, execute o utilitário Chkdsk no volume de disco para corrigir eventuais erros.

Sectores do disco danificados, outros problemas de hardware ou erros de software podem danificar o sistema de ficheiros e causar problemas em ficheiros. Operações típicas poderão falhar de diversas formas. Quando o sistema de ficheiros detecta os danos, regista um evento no registo de eventos e, tipicamente, é emitida uma mensagem a pedir que execute o Chkdsk. Dependendo da natureza dos danos, o utilitário Chkdsk poderá ou não ser capaz de recuperar os dados dos ficheiros; contudo, o Chkdsk repõe o sistema de ficheiros num estado internamente consistente.

Para obter informações adicionais sobre a utilização do utilitário Chkdsk, clique nos números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft (KB, Microsoft Knowledge Base):
176646  (http://support.microsoft.com/kb/176646/ ) Error message: The file or directory is corrupt...
187941  (http://support.microsoft.com/kb/187941/ ) An explanation of CHKDSK and the New /C and /I switches

Causa 4: Existem ficheiros em caminhos com mais caracteres do que os especificados em MAX_PATH

Poderá não ser possível abrir, editar ou eliminar um ficheiro se existirem problemas com o caminho do mesmo.

Resolução 1: Utilizar um nome 8.3 gerado automaticamente para aceder ao ficheiro

Para resolver este problema, poderá pretender utilizar o nome 8.3 gerado automaticamente para aceder ao ficheiro. Esta resolução poderá ser a mais fácil se o caminho for longo por os nomes das pastas serem demasiado longos. Se o caminho 8.3 também for demasiado longo ou se os nomes 8.3 tiverem sido desactivados no volume, avance para a resolução 2.

Para obter informações adicionais sobre como desactivar nomes de ficheiro 8.3 em volumes NTFS, clique no número de artigo que se segue para visualizar o artigo na base de dados de conhecimento da Microsoft (KB, Microsoft Knowledge Base):
121007  (http://support.microsoft.com/kb/121007/ ) How to disable the 8.3 name creation on NTFS partitions

Resolução 2: Mudar o nome ou mover uma pasta com um caminho longo

Mude o nome da pasta de modo a que os ficheiros de destino com um caminho com mais caracteres do que os especificados em MAX_PATH deixem de existir. Se o fizer, comece na pasta raiz (ou noutro local conveniente) e mude o nome das pastas para que tenham nomes mais curtos. Se este passo não resolver o problema (por exemplo, se o caminho de um ficheiro tiver mais de 128 pastas), avance 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 ficheiro ou da pasta de destino. Este método diminui o caminho virtual.

Por exemplo, suponha que tem um caminho estruturado da seguinte forma:
\\Nome_do_servidor\Nome_da_subpasta1\Nome_da_subpasta2\Nome_da_subpasta3\Nome_da_subpasta4\...
Neste caminho, o número total de caracteres é superior a 255. Para diminuir o comprimento deste caminho para 73 caracteres, mapeie uma unidade para Nome_da_subpasta4.

Resolução 4: Utilizar uma partilha de rede ao nível da pasta

Se as resoluções 1, 2 e 3 não forem adequadas ou não resolverem o problema, crie uma partilha de rede a um nível tão profundo na árvore de pastas quanto possível e mude o nome das pastas acedendo à partilha.

Resolução 5: Utilizar uma ferramenta que consiga atravessar caminhos longos

Muitos programas do Windows requerem que o comprimento máximo dos caminhos seja inferior a 255 caracteres. Por isso, estes programas apenas atribuem o espaço interno suficiente para processar estes caminhos típicos. O sistema NTFS não tem este limite e pode comportar caminhos muito mais longos.

Poderá ter este problema se criar uma partilha em determinado ponto da sua estrutura de pastas que já seja bastante profundo e, depois, criar uma estrutura profunda a partir desse ponto utilizando a partilha. Algumas ferramentas que funcionem localmente na árvore de pastas poderão não conseguir atravessar a árvore completa a partir da raiz. Poderá ter de utilizar estas ferramentas de forma especial para que consigam atravessar a partilha. (A documentação da API CreateFile descreve um método para atravessar a árvore completa nesta situação.)

Geralmente, é possível gerir ficheiros utilizando o software que os criou. Se tiver um programa que consiga criar ficheiros em caminhos com mais caracteres do que os especificados em MAX_PATH, conseguirá normalmente utilizar esse mesmo programa para eliminar ou gerir os ficheiros. Geralmente é possível eliminar ficheiros criados numa partilha utilizando a mesma partilha.

Causa 5: O nome do ficheiro inclui um nome reservado no espaço de nomes Win32

Se o nome do ficheiro incluir um nome reservado (por exemplo, "lpt1") no espaço de nomes Win32, poderá não ser possível eliminar o ficheiro. Para resolver este problema, mude o nome do ficheiro com um programa que não pertença ao Win32. Pode utilizar uma ferramenta POSIX ou qualquer outra ferramenta que utilize a sintaxe interna adequada para utilizar o ficheiro.

Além disso, poderá ser possível utilizar alguns comandos incorporados para contornar as verificações de nomes reservados típicas do Win32 se utilizar uma sintaxe particular para especificar o caminho do ficheiro. Por exemplo, se utilizar o comando Del no Windows XP, poderá eliminar um ficheiro chamado "lpt1" se especificar o caminho completo do ficheiro utilizando a seguinte sintaxe especial:
del \\?\c:\caminho_do_ficheiro\lpt1
Para obter informações adicionais sobre como eliminar ficheiros com nomes reservados no Windows NT e no Windows 2000, clique no número de artigo que se segue para visualizar o artigo na base de dados de conhecimento da Microsoft (KB, Microsoft Knowledge Base):
120716  (http://support.microsoft.com/kb/120716/ ) How to remove files with reserved names in Windows
Para obter informações adicionais sobre como eliminar ficheiros com nomes reservados no Windows XP, clique no número de artigo que se segue para visualizar o artigo na base de dados de conhecimento da Microsoft (KB, Microsoft Knowledge Base):
315226  (http://support.microsoft.com/kb/315226/ ) How to remove files with reserved names in Windows XP
Se abrir um identificador para um ficheiro utilizando o mecanismo CreateFile típico do Win32, determinados nomes de ficheiro são reservados para dispositivos antigos do DOS. Para garantir a compatibilidade com versões anteriores, estes nomes de ficheiro não são permitidos e não podem ser criados utilizando chamadas a ficheiro típicas do Win32. No entanto, este problema não é uma limitação do NTFS.

Poderá ser possível utilizar um programa do Win32 para contornar as verificações de nomes típicas que são efectuadas quando um ficheiro é criado (ou eliminado) utilizando a mesma técnica que utiliza para atravessar pastas cujos caminhos tenham mais caracteres do que os especificados em MAX_PATH. Além disso, algumas ferramentas POSIX não estão sujeitas a estas verificações de nomes.

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

Poderá não ser possível eliminar um ficheiro se o nome do ficheiro incluir um nome inválido (por exemplo, o nome do ficheiro tem um espaço adjacente ou um ponto final ou é constituído apenas por um espaço). Para resolver este problema, utilize uma ferramenta que use a sintaxe interna adequada para eliminar o ficheiro. Pode utilizar a sintaxe "\\?\" com algumas ferramentas para efectuar operações nestes ficheiros, como por exemplo:
del "\\?\c:\caminho_do_ficheiro_que_contém_um_espaço_adjacente.txt "
A causa deste problema é semelhante à causa 4. Contudo, se utilizar a sintaxe típica do Win32 para abrir um ficheiro cujo nome contenha espaços adjacentes ou pontos finais, estes são removidos antes de o ficheiro ser aberto. Assim, se tiver dois ficheiros na mesma pasta denominados "Ficheiro.txt" e "Ficheiro.txt " (repare no espaço após o nome do segundo ficheiro), e se tentar abrir o segundo ficheiro utilizando chamadas padrão do Win32, o primeiro ficheiro será aberto em vez dele. Do mesmo modo, se tiver um ficheiro cujo nome seja apenas " " (um carácter de espaço) e tentar abri-lo utilizando chamadas padrão do Win32, será aberta a pasta principal em vez do ficheiro. Nesta situação, se tentar alterar as definições de segurança destes ficheiros poderá não ser possível alterar essas definições ou poderá alterar as definições de outros ficheiros de forma inesperada. Se este comportamento ocorrer, poderá pensar que tem permissões para um ficheiro que na realidade tem uma ACL restritiva.

Combinações de causas

Por vezes poderá encontrar combinações destas causas, o que pode tornar mais complexo o procedimento para eliminar um ficheiro. Por exemplo, se iniciar sessão como administrador do computador poderá encontrar uma combinação da causa 1 (não tem permissões para eliminar um ficheiro) e da causa 5 (o nome do ficheiro contém um carácter adjacente que faz com que o acesso ao ficheiro seja redireccionado para um ficheiro diferente ou não existente) e poderá não ser possível eliminar o ficheiro. Se tentar resolver a causa 1 obtendo a propriedade do ficheiro e adicionando permissões, poderá continuar a não ser possível eliminar o ficheiro porque o editor de ACL da interface de utilizador não consegue aceder ao ficheiro adequado devido à causa 6.

Nesta situação, poderá usar o utilitário Subinacl com o parâmetro /onlyfile (este utilitário está incluído no Resource Kit) para alterar a propriedade e as permissões de um ficheiro inacessível de outra forma, por exemplo:
subinacl /onlyfile "\\?\c:\caminho_do_ficheiro_com_problemas" /setowner=domínio\administrador /grant=domínio\administrador=F
Nota: este comando é apresentado numa única linha; foi moldado para facilitar a leitura.

Este exemplo de linha de comandos modifica o ficheiro C:\caminho_do_ficheiro_com_problemas que contém um espaço adjacente para que a conta domínio\administrador seja a proprietária do ficheiro e tenha controlo total sobre o ficheiro. Agora já é possível eliminar este ficheiro utilizando o comando Del com a mesma sintaxe "\\?\".

A informação contida neste artigo aplica-se a:
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows 2000 Datacenter Server
  • Microsoft Windows XP Home Edition
  • Microsoft Windows XP Professional Edition
  • Microsoft Windows Advanced Server, Limited Edition
  • Microsoft Windows Datacenter Server Limited Edition
  • Microsoft Windows Server 2003, 64-Bit Datacenter Edition
  • Microsoft Windows Server 2003, Enterprise x64 Edition
  • Microsoft Windows Server 2003 Datacenter Edition
  • Microsoft Windows Server 2003 Enterprise Edition
  • Microsoft Windows Server 2003 Standard Edition
  • Microsoft Windows Server 2003 Web Edition
  • Microsoft Windows Small Business Server 2003 Premium Edition
  • Microsoft Windows Small Business Server 2003 Standard Edition
Palavras-chave: 
kbinfo kbfilesystems KB320081
Partilhar
Opções de suporte adicionais
Fóruns de Suporte da Comunidade Microsoft
Contacte-nos directamente
Encontre um parceiro certificado Microsoft
Loja Microsoft