Sí, suena a tecnología antigua... Posiblemente haya personas que todavía no habrían nacido cuando la apliqué, pero el caso es dejar constancia de ella, es muy probable que se pueda seguir empleando los años venideros.
En el año 1997, D. Julián Moreno Clemente, Doctor Ingeniero jubilado de Industria y profesor emérito de la Universidad de Málaga, me localizó por dos vias: por un lado, una compañera de clase, Maricruz Cortés, le habló de mí; y por otra parte, del Departamento de Ingeniería Eléctrica, en el que ya hacía algunas de mis cabriolas técnicas, también le facilitaron mi teléfono.
El planteamiento era sencillo: necesitaba algún método de protección para los libros de Excel con los que él había descubierto que podía emplear, sin utilizar un programador profesional, y hacer llegar a todos los ingenieros, presentes y futuros, esos cálculos. El hecho de querer protegerlos se debió principalmente a que no fuera algo gratuito, sino que ése sería el último paso.
En aquellos entonces, estaba a plena potencia con Visual Basic 6, un lenguaje de programación que, si bien no era el C o Assembler que había empezado a utilizar años anteriores, daba suficiente juego como para hacer aplicaciones de gestión con relativa facilidad. Pero una hoja Excel... no sabía muy bien qué hacer con ella, hasta que descubrí VBA (Visual Basic para Aplicaciones): Es una versión muy limitada del VB6 pero permitía hacer algunas cosas graciosas, y conseguí hacer una que, incluso hoy día (30 de julio de 2018), sigue estando plenamente activa.
En la API de Win32 de Microsoft, existe una librería, llamada
GetVolumeInformation
mediante la cual, pasándole los apropiados parámetros, te puede devolver el tamaño del nombre del sistema de archivos. Esto no sería interesante si no fuera porque encontré un programa que, al formatear un disco de 3.5 pulgadas, se le podía modificar a voluntad este parámetro en la cabecera del disco, de forma tal que si intentabas copiar de un disco a otro, te copiaba el contenido de forma errónea.
Así pues, gracias a esta librería y a este descubrimiento, más de 10.000 disquetes se realizaron, y toda la obra se protegió, incluida una versión de su programa de cálculo de líneas eléctricas, protección que se tuvo que realizar en Turbo Pascal, empleando Ensamblador... Para finalmente liberar toda protección y ofrecerla sin restricciones al público.
Ah, qué buenos tiempos aquellos, nuestra cuenta Twitter @ks7000 todavía tiene el icono de un diskette, al recordar se vive dos veces, nunca pensé que alguien se recordara de esa función (de hecho, yo la había olvidado), acá la traigo de nuevo ¡enhorabuena por vuestro nuevo blog!
ResponderEliminarFunction GetSerialNumber(ByVal drive As String) As Long
Dim strVolName As String
Dim lngVolSerialNumber As Long
Dim lngMaxComp As Integer
Dim lngFSFlags As Integer
Dim strFSName As String
Dim lngDummy As Long
strVolName = Space$(256)
lngFSFlags = 0
strFSName = Space$(256)
lngDummy = GetVolumeInformation(drive, strVolName, Len(strVolName), _
lngVolSerialNumber, lngMaxComp, _
lngFSFlags, strFSName, Len(strFSName))
GetSerialNumber = lngVolSerialNumber
'MsgBox Str(Err.LastDllError)
'Debug.Print GetSerialNumber
End Function