Modificando los Atributos de los Archivos con Visual Basic 6
De vez en cuando los virus infectan las computadoras de la facultad. Hubo uno muy molesto que modificaba los atributos de los archivos de tal forma que no pudieran "desocultarse":
Desde la ventana de "propiedades" es imposible "desocultar" el archivo. Intenté hallar cómo modificar esta propiedad, rebusqué hasta en el registro y nada.
Hasta que me topé con esta web: http://www.recursosvisualbasic.com.ar/htm/tutoriales/tutorial-basico7.htm#getattr-setattr
Dado que desde Visual Basic es muy pero muy fácil modificar los atributos de los archivos decidí hacerme mi propio programa para quitar las modificaciones que hizo el condenado virus:
Se abre el Visual y se carga un proyecto exe estándar. Luego, a la barra de controles, se le carga el control Conmon Dialog. Cómo hacerlo está acá: http://www.recursosvisualbasic.com.ar/htm/tutoriales/control-commondialog.htm
Éste control servirá para elegir el archivo cuyos atributos se van a modificar, ésta es la ventana que creé:
Ésta es la lista de los controles:
- Un Label para ver la ruta del archivo: label1
- Un Conmon Dialog: cmd
- Dos botones, uno para llamar al Conmon Dialog y escoger el archivo, y el otro para modificar sus atributos: Command2 y Command1 respectivamente.
- Seis OptionButton para escoger los atributos que se deseen modificar, sus nombres, de arriba a abajo y muy explícitos, son:
normal, lectura, oculto, sistema, s_oculto, s_oculto_lectura.
Cada OptionButton asigna un número a una variable tipo Integer llamada "attr" ya que los atributos están definidos por números, acá la lista de todos los que pude encontrar:
0 - Archivo Normal
1 - Archivo de Sólo Lectura
2 - Archivo Oculto
4 - Archivo de Sistema
16 - Directorio o Carpeta
32 - Archivo Modificado
38 - Archivo de Sistema Oculto
39 - Archivo de Sistema Oculto y Sólo Lectura
18 - Carpeta Oculta
6 - Oculto (en la caja ventana de propiedades no está el check en "archivo")
7 - Archivo? de sistema oculto y sólo lectura (en la caja ventana de propiedades no está el check en "archivo", es posible que sea aplicable para carpetas, no lo he comprobado)
Y el código fuente es (un par de líneas comentadas se colaron por ahí):
Option Explicit Dim ruta As String Dim ret As Long Dim attr As Integer Private Sub Command1_Click() 'cmd.Action = 1 If ruta <> "" Then SetAttr ruta, attr End If End Sub Private Sub Command2_Click() cmd.DialogTitle = "Seleccione un archivo" cmd.ShowOpen If cmd.FileName <> "" Then ruta = cmd.FileName Label1 = ruta End If End Sub Private Sub Form_Load() 'ret = GetAttr("c:\IO.SYS") Me.Top = Screen.Height / 2 - Me.Height / 2 Me.Left = Screen.Width / 2 - Me.Width / 2 attr = 0 End Sub Private Sub lectura_Click() attr = 1 End Sub Private Sub normal_Click() attr = 0 End Sub Private Sub oculto_Click() attr = 2 End Sub Private Sub s_oculto_Click() attr = 38 End Sub Private Sub s_oculto_lectura_Click() attr = 39 End Sub Private Sub sistema_Click() attr = 4 End Sub |
Y para quienes no quieren programarse esto, les dejo el ejecutable que me llevó 15 minutos de mi vida hacerlo: