• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

scorch

Filtrar ficheiros

9 mensagens neste tópico

Boas,

Estou a criar, em VB.Net, algo parecido com o Windows Explorer.

O meu problema é que algumas pastas que ele não me deixa aceder. (C:\Users\utilizador\Cookies por exemplo.)

Ao abri-la, o programa dá-me o seguinte erro: Access to the path 'C:\Users\Utilizador\Cookies' is denied.

Eu gostava de saber como fazer para estas pastas não aparecerem.

Cumps.

Scorch. :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tas a entrar como administrador... poderá estar relacionado com as permissões..

digo eu assim de repente...pois...e ainda por cima isso e vista.... é capaz de ter alguma protecção específica... google it

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, eu estou a entrar como administrador.

E pelo que procurei, nenhum é o que eu quero. Já para não dizer que metade são de Asp.Net e que não me aparece nada ao listar um directório.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

digo eu assim de repente...pois...e ainda por cima isso e vista.... é capaz de ter alguma protecção específica... google it

Vista.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Imports System.IO
Imports System.Security.Principal
Imports System.Security.AccessControl

    Private Function CheckReadAccess(ByVal User As WindowsIdentity, ByVal Directory As DirectoryInfo)

        Dim ReadPermission = False

        Try

      
            Dim acl As AuthorizationRuleCollection = Directory.GetAccessControl().GetAccessRules(True, True, Type.GetType("System.Security.Principal.SecurityIdentifier"))

            For i As Integer = 0 To acl.Count - 1

                Dim currentRule As FileSystemAccessRule = CType(acl(i), FileSystemAccessRule)
                If User.User.Equals(currentRule.IdentityReference) Or User.Groups.Contains(currentRule.IdentityReference) Then

                    If currentRule.AccessControlType.Equals(AccessControlType.Allow) Then
                        ReadPermission = True
                    Else
                        ReadPermission = True
                    End If

                End If

            Next

            Return ReadPermission

        Catch ex As Exception

            Return False

        End Try

    End Function

Exprimenta esta função... cuidado que não testei..

Essa função dá-te um valor booleano com a informação se podes ou não ler determinada directoria.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se eu colocar no parâmetro User, GetCurrent() ele dá-me true em todas, no  entanto, ao tentar entrar numa ele não deixa. :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

só agora li

"Eu gostava de saber como fazer para estas pastas não aparecerem."

podes testar a permissão da pasta...se nao tiveres permissão..podes passar por cima e voltar a proxima...

o ideal para isto deve ser uma função recursiva.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É este é o código que eu tenho.

For Each foundFile As String In My.Computer.FileSystem.GetDirectories(path & "\")
                lvItem = ListView.Items.Add(My.Computer.FileSystem.GetFileInfo(foundFile).Name)
                lvItem.ImageKey = "Dossier_2.png"
                lvItem.SubItems.AddRange(New String() {"", ""})
            Next

PS: Estou a trabalhar com a ListView.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora