Ho una treeview (collocata in un panel di uno splitcontainer) che popolo con la lettura delle cartelle del mio hard-disk.
Ecco il codice :
Sub LeggiDrive
Dim Nodo0 = IO.Directory.GetDirectories(drive)
Dim x, j, k As Integer
For Each cartella In Nodo0
Dim attributi = IO.File.GetAttributes(cartella)
If attributi = IO.FileAttributes.Directory And Not (attributi = IO.FileAttributes.Hidden Or attributi = IO.FileAttributes.System) Then
TreeView1.Nodes.Add(cartella)
x += 1
'inizio primo livello
Dim Nodo1 = IO.Directory.GetDirectories(cartella)
If Nodo1.Count > 0 Then
For Each subcartella In Nodo1
attributi = IO.File.GetAttributes(subcartella)
If attributi = IO.FileAttributes.Directory And Not (attributi = IO.FileAttributes.Hidden Or attributi = IO.FileAttributes.System Or attributi = 5) Then
TreeView1.Nodes(x - 1).Nodes.Add(subcartella)
k += 1
'secondo livello
Dim Nodo2 = IO.Directory.GetDirectories(subcartella)
If Nodo2.Count > 0 Then
attributi = IO.File.GetAttributes(cartella)
If attributi = IO.FileAttributes.Directory And Not (attributi = IO.FileAttributes.Hidden Or attributi = IO.FileAttributes.System) Then
For Each subsubcartella In Nodo2
Try
TreeView1.Nodes(x - 1).Nodes(j).Nodes.Add(subsubcartella)
Catch ex As Exception
End Try
j += 1
Next
j = 0
End If
End If
'fine secondo livello
End If
k = 0
Next
End If
'fine primo livello
End If
Next
End Sub
End Class
Il problema è che il programma si blocca su questa istruzione : Dim Nodo2 = IO.Directory.GetDirectories(subcartella ,cioè quando si appresta a leggere le cartelle di quel path.
L'errore è il seguente : System.UnauthorizedAccessException: 'Accesso al percorso 'c:\Windows\ServiceState' negato.'
Questo evento NON si verifica se uso una listview. In questo caso, le directories vengono lette ed esposte nella listview e mi danno accesso solo se accetto di accedervi.
Come posso "scavalcare" il System.UnauthorizedAccessException?
Grazie mille.