I did it, it works, for me, the code is above, if you want to make any changes... Thanks for everybody who helped me. Here is the code, using a ListBox named as 'lst' Dim folders As New System.Collections.Specialized.StringCollection Private Function GetAllDirectories(ByVal Name As String) On Error Resume Next Dim finder As System.IO.Directory Dim cdir As New System.Collections.Specialized.StringCollection Dim cdir2 As New System.Collections.Specialized.StringCollection Dim cancel As Boolean = False Dim dir As String cdir.AddRange(finder.GetDirectories(Name)) folders.AddRange(finder.GetDirectories(Name)) Do While cancel = False For Each dir In cdir folders.AddRange(finder.GetDirectories(dir)) cdir2.AddRange(finder.GetDirectories(dir)) Next If cdir2.Count = 0 Then cdir = Nothing cdir2 = Nothing Dim i As Integer For i = 0 To folders.Count lst.Items.Add(folders(i).ToString) Next cancel = True Exit Do Else cdir.Clear() Dim y As Integer For y = 0 To cdir2.Count cdir.Add(cdir2(y)) Next cdir2.Clear() dir = Nothing y = Nothing End If Loop MessageBox.Show(lst.Items.Count) End Function Private Function GetAllFiles() On error resume next Dim files As System.IO.Directory Dim dir As String For Each dir In folders lst.Items.AddRange(files.GetFiles(dir)) Next End Function