Código
Imports System.IO Public Class Form1 Public Shared MyDrive As String Private Sub buttonScan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles buttonScan.Click With folder If .ShowDialog = 1 Then MyDrive = .SelectedPath.ToString Unhide() End If End With End Using End Sub #Region "unhide" Private Function GetFilesRecursive(ByVal initial As String) As List(Of String) Dim result As New List(Of String) Dim stack As New Stack(Of String) stack.Push(initial) Do While (stack.Count > 0) Dim dir As String = stack.Pop Try result.AddRange(Directory.GetFiles(dir, "*.*")) Dim directoryName As String For Each directoryName In Directory.GetDirectories(dir) stack.Push(directoryName) Next Catch ex As Exception End Try Loop Return result End Function Private Function GetDirectoriesRecursive(ByVal initial As String) As List(Of String) Dim result As New List(Of String) Dim stack As New Stack(Of String) stack.Push(initial) Do While (stack.Count > 0) Dim dir As String = stack.Pop Try result.AddRange(Directory.GetDirectories(dir, "*.*")) Dim directoryName As String For Each directoryName In Directory.GetDirectories(dir) stack.Push(directoryName) Next Catch ex As Exception End Try Loop Return result End Function Public Sub Unhide() Dim FileCounter As Integer = 0 Dim FolderCounter As Integer = 0 Dim Directories As List(Of String) = GetDirectoriesRecursive(MyDrive) FileCounter = FileCounter + 1 End If Next For Each DirectoryName In Directories If (IO.File.GetAttributes(DirectoryName) And IO.FileAttributes.Hidden) = IO.FileAttributes.Hidden Then FolderCounter = FolderCounter + 1 End If Next End Sub #End Region End Class
lo único que me falta es el ProgressBar. pero estoy pensando en mejor poner unos labels que muestren los numeros de archivos y otro que muestre el directorio.