Desocultar Carpetas Ocultadas por Virus con Linq en Visual C# Express 2008


Un día puse mi memoria USB en una notebook y se llenó de virus. Aunque mi antivirus pudo limpiar mi memoria no corrigió los cambios que había hecho a mis carpetas:

El virus declaró como ocultas y de sistema a todas mis carpetas ¡Incluyendo aquellas que corresponden al curro (las que están con los nombres tachados)!

Si una carpeta es declarada como de sistema, no se pude desocultar a menos que se use Attrib desde la línea de comandos y esto ya me parecía muy encorroso. Primero pensé en descargar una aplicación que simplemente desocultara todas las carpetas que encontrara en mi memoria USB. Como no hallé nada que me gustara (Google tampoco arroja gran cosa cuando se busca "Desocultar carpetas descargar") pensé en escribir yo misma la aplicación. Busqué en internet las clases para manejar carpetas y drivers desde .Net, y usando Linq, terminé escribiendo menos de una docena de líneas de código.

En media hora ya tenía el programita listo:

Lo que hace este programita es listar todos los discos duros y las memorias extraíbles, al escoger uno de ellos muestra las carpetas ocultas y de sistema que encuentre en el directorio raíz. Al presionar el botón, las desoculta todas. Esto lo hace cambiando sus atributos de "Hidden" y "System" a "Normal". 

El código fuente es el siguiente:

En Linq, la expresión "Where" busca en una colección de objetos aquellos que cumplan la condición indicada por la espresión lambda, la cual siempre debe devolver un valor booleano. "Where" sólo enumerará aquellos objetos de la colección en los que la expresión lambda devuelve "verdadero".

"Select" hará las conversiones u operaciones que indice su expresión lambda a los objetos devueltos por "Where". En el caso de no hacer nada con los objetos devueltos por "Where" se omitirá el "Select".

En .Net un objeto puede ser un string, un bool, un integer, un DirectoryInfo, un objeto de una clase creada por el usuario, etc. Una colección puede ser una lista, un array, un IEnumerable...

El proyecto completo, con el formulario y el código, se puede descargar de aquí. Se compila con Visual C# Express 2008 y corre sobre .Net Framework 3.5.

El ejecutable se puede encontrar dentro de la carpeta /bin. Pero también se puede descargar de aquí.

Al programa se le pueden hacer muchas mejoras, por ejemplo el DirectoryInfo "dir" puede declararse a nivel de la clase Form1 y cargarse con las carpetas ocultas una sola vez.

 

www.000webhost.com