Hola.
Yo el primer problema no lo entiendo, basicamente por que aquí ya estás utilizando una iteración recursiva en busca de archivos con distintas extensiones:
Así que en teoría eso ya sabes como resolverlo, pero bueno, te hago saber que la función
System.IO.Directory.GetFiles() tiene una sobrecarga para que le indiques si la búsqueda debe realizarse de forma recursiva o no:
Dicho método no provee ninguna sobrecarga para especificar más de una extensión o patrón de búsqueda, para eso ya estabas utilizando la otra función,
My.Computer.FileSystem.GetFiles().
Si quieres sustituir la función
My.Computer.FileSystem.GetFiles() por
System.IO.Directory.GetFiles() y conservando la funcionalidad de buscar varias extensiones, pues sí o sí tienes que llamar a dicha función más de una vez para concatenar los resultados en una colección. Ejemplo:
Dim dirPath As String = ".\"
Dim fileExts As String() = {"*.vbs", "*.cmd", "*.js", "*.wsf", "*.ink", "*.bat"}
Dim filePaths As New List(Of String)
For Each fileExt As String In fileExts
filePaths.AddRange(Directory.GetFiles(dirPath, String.Format("*.{0}", fileExt), SearchOption.AllDirectories))
Next
For Each filePath As String In filePaths
Debug.
WriteLine(filePath
) Next
File.
SetAttributes(dirPath, FileAttributes.
Normal)
Eso es incorrecto, ya que así no solo estás eliminando el atributo Hidden, sino también todos los demás atributos que hayan sido asignados al archivo.
Tienes que conservar esos otros atributos. Ejemplo:
Dim filePath As String = "C:\file.txt"
Dim attribs
As FileAttributes
= File.
GetAttributes(filePath
)
File.
SetAttributes(filePath, attribs
And Not FileAttributes.
Hidden)
el code tiene que implementar la funcion de :
Dim dirPath As String = Form2.FolderBrowserDialog1.SelectedPath
para el directorio. no se si me entienden.
No, no lo entiendo bien. Supongo que te refieres a que quieres visualizar las carpetas ocultas en el árbol de carpetas de la ventana de diálogo FolderBrowserDialog, pues bien, eso no puedes hacerlo. El componente FolderBrowserDialog respeta la configuración del usuario, así que si el usuario no tiene activada la opción para ver archivos y carpetas ocultas, el componente no las mostrará.
De todas formas, una de las peores decisiones que un programador de .NET bajo tecnología WinForms puede tomar es utilizar el componente FolderBrowserDialog, ya que es límitadísimo y obsoleto, pues no le han modificado el diseño desde los 90. ¡Ni siquiera puedes introducir una ruta de directorio para navegar directamente!, no, tienes que clickar en los nodos hasta aburrirte. Es de lo peor, todo lo opuesto a productivo.
Por ese motivo te recomiendo encarecidamente que utilices los componentes gratuitos de
Ooki, que son un wrapper de los diálogos modernos del "buscador" de carpetas:
PD: Insisto, ningún diálogo de carpetas te va a mostrar carpetas ocultas a menos que la opción de mostrar archivos y carpetas ocultas esté activada en el sistema. Puedes activarla tu mismo, aquí abajo te muestro como hacerlo, pero ten en cuenta que llevar a cabo este tipo de actos se considera intrusismo (un programa intrusivo):
Imports Microsoft.Win32
Using reg As RegistryKey = RegistryKey.OpenBaseKey(RegistryHive.CurrentUser, RegistryView.Default)
reg.OpenSubKey("Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", writable:=True).
SetValue("Hidden", 1, RegistryValueKind.DWord)
End Using
Saludos.