Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rafaeloliveira83

[Resolvido] Exceção de HRESULT: 0x800A0046 (CTL_E_PERMISSIONDENIE

Recommended Posts

Estou com dificuldades em criar uma exceção para o erro HRESULT: 0x800A0046 (CTL_E_PERMISSIONDENIED) quando vou tentar apagar uma pasta que possui permissão na pasta C:\Windows\Temp.

 

Segue o código para apagar os arquivos e pastas da pasta TEMP do Windows:

 

        Dim objFSO
       Dim objFolder, objDir
       Dim objFile
       Dim i
       Dim pastaTemp = "C:\Windows\Temp"
       Dim Diretório As New IO.DirectoryInfo("C:\Windows\Temp")
       Dim ArquivosInfo As IO.FileInfo() = Diretório.GetFiles()

       objFSO = CreateObject("Scripting.FileSystemObject")
       objFolder = objFSO.GetFolder(pastaTemp)


       For Each Arquivos In ArquivosInfo
           ListBox1.Items.Add(Arquivos.Name.ToString & " - ( Excluido ) ")
       Next

       If Dir("C:\Windows\Temp\*.*") <> "" Then 
           For Each objFile In objFolder.Files
               objFile.delete(True)
           Next

           For i = 0 To 10
               For Each objDir In objFolder.SubFolders
                   objDir.Delete(True)
               Next
           Next
           ListBox1.Items.Add(vbNewLine)
           ListBox1.Items.Add("Limpeza Concluída")
       Else 
           MsgBox("Não existem arquivos na pasta " & " [ " & pastaTemp & " ] ")
       End If

 

For i = 0 To 10

For Each objDir In objFolder.SubFolders

objDir.Delete(True) ' Linha que gera o erro

Next

 

Ele apaga direitinho, porem quando existem pastas protegidas pelo sistema ele exibe a mensagem HRESULT: 0x800A0046 (CTL_E_PERMISSIONDENIED) e gostaria que ele não exibisse essa mensagem e não apagasse ao invés de exibir

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvi usando try, catch finally

 

            Try
               For i = 0 To 10
                   For Each objDir In objFolder.SubFolders
                       objDir.Delete(True)
                   Next
               Next
               ListBox1.Items.Add(vbNewLine)
               ListBox1.Items.Add("Limpeza Concluída")
           Catch exc As Exception
               ' MessageBox.Show("")
           Finally
               '  MessageBox.Show("")
           End Try

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.