Otra entrada migrada de la vieja web Electrónica a Martillazos, porque desde hace una década no hago más que programar y programar, asi que de electrónica ya nada. Y de paso me deshago de la fuente Comic Sans :D
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