Hola buenas!!
Tengo un problemilla y es que he hecho un arbol explorador de directorios, el tema es que en Windows xp funciona a la perfección, y en windows vista tambien funciona, pero cuando quiero cargar un array con System.IO.Directory.GetDirectories en ciertas carpetas como "Documents and Setings" o "Archivos de programa" me dice que no tengo los permisos necesarios. He ejecutado el programa como administrador y con compatibilidad Con windowsXp, pero nada, me gustaria saber si a alguien mas le ha pasado.
Gracias por antipado
Un saludo!!
Aqui os dejo el codigo posteado:
Private Sub cargar_arbol()
Dim i, x, z As Integer
Dim cadena() As String
Dim resultado As String
Dim tvRoot, tvNode1, tvNode2, tvNode3 As TreeNode
Dim unidades() As System.IO.DriveInfo
Dim Nivel1(), Nivel2() As String
'añade mipc
tvRoot = Me.TreeView.Nodes.Add("mipc", "Mi PC", 4)
unidades = System.IO.DriveInfo.GetDrives
'obtiene unidades
For i = 0 To UBound(unidades)
'carga unidades
cadena = Split(unidades(i).ToString, "\")
resultado = cadena(UBound(cadena) - 1)
If unidades(i).DriveType = DriveType.CDRom Then
tvNode1 = tvRoot.Nodes.Add(unidades(i).ToString, resultado, 3)
Else
tvNode1 = tvRoot.Nodes.Add(unidades(i).ToString, resultado, 2)
End If
Try
Nivel1 = System.IO.Directory.GetDirectories(unidades(i).ToString)
For x = 0 To UBound(Nivel1)
'carga unidades
cadena = Split(Nivel1(x).ToString, "\")
resultado = cadena(UBound(cadena))
tvNode2 = tvNode1.Nodes.Add(Nivel1(x).ToString, resultado)
Nivel2 = System.IO.Directory.GetDirectories(Nivel1(x).ToString)
For z = 0 To UBound(Nivel2)
cadena = Split(Nivel2(z).ToString, "\")
resultado = cadena(UBound(cadena))
tvNode3 = tvNode2.Nodes.Add(Nivel2(z).ToString, resultado)
Next
Next
Catch ex As Exception
End Try
Next
End Sub
Private Sub TreeView_BeforeExpand(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewCancelEventArgs) Handles TreeView.BeforeExpand
Dim x, z As Integer
Dim cadena() As String
Dim resultado As String
Dim tvNode2, tvNode3 As TreeNode
Dim Nivel1(), Nivel2() As String
If TreeView.SelectedNode.Name <> "mipc" Then
Try
Nivel1 = System.IO.Directory.GetDirectories(TreeView.SelectedNode.Name)
TreeView.SelectedNode.Nodes.Clear()
For x = 0 To UBound(Nivel1)
'carga unidades
cadena = Split(Nivel1(x).ToString, "\")
resultado = cadena(UBound(cadena))
tvNode2 = TreeView.SelectedNode.Nodes.Add(Nivel1(x).ToString, resultado)
If resultado <> "System Volume Information" Then
Nivel2 = System.IO.Directory.GetDirectories(Nivel1(x).ToString)
For z = 0 To UBound(Nivel2)
cadena = Split(Nivel2(z).ToString, "\")
resultado = cadena(UBound(cadena))
tvNode3 = tvNode2.Nodes.Add(Nivel2(z).ToString, resultado)
Next
End If
Next
Catch ex As Exception
MsgBox("Error " & TreeView.SelectedNode.Name)
End Try
End If
End Sub