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:
Código
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
Código
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