extraer numero disco fabricante

13- Número de Disco del Fabricante

 

Autor: Javier Gómez ("javier.mil")

 

Antes de empezar puedes bajarte  la DEMO 31,  ya se sabe un ejemplo es mejor que mil palabras.

PC Demo-31 Numero disco fabricante v2.2 



¿ Que es ?
Es un Numero identificativo y único que graba cada fabricante de discos, dentro del disco duro.

 
¿ Para que sirve ?
Su uso es múltiple, quizás el uso mas interesante, es utilizarlo como sistema de protección de tus aplicaciones. Por ejemplo para que solo se pueda ejecutar en el PC donde se instale y No sea ejecutado en otro ordenador No autorizado.

 
¿ Como se extrae ese numero ?
Para extraer el número simplemente deberías hacer una llamada a una de las 4 funciones básicas que están dentro de la MDE: Es decir 4 formas distintas de conseguir el mismo Número.

funNDFaplicacion '<< Permite saber el Numero de disco de
fabrica donde corre tu aplicación.


funNDFtodos '<< Escanea todos los discos físicos con Numero
de fabrica y Modelo.


funNDFfisico '<< Conociendo el numero físico del disco da
como resultado el Numero de disco de fabrica.


funNDFlogico '<< Conociendo la unidad (letra) del disco da
como resultado el Numero de disco de fabrica.


El número suele ser alfanumérico es decir contiene números y letras.
Para poder re-utilizar esta seguridad en tu aplicación deberás añadir la
REFERENCIA o LIBRERÍA NumeroDiscoFabrica_Ref , en tu aplicación. (Ver añadir referencia)
 


¿ Como se usa ?
Una vez extraído el numero del disco del fabricante, (usando una de las cuatro funciones propuestas en esta demo) debería comprobarse este dato con el que estuviese guardado en la aplicación (tabla, propiedad, fichero externo, registro
Windows) y cada vez que se inicie la aplicación debería comprobar si ese numero es el mismo que esta guardado y además coincide con el numero con el que corre la aplicación.
 

Ejemplo:
(En el evento al abrirse el formulario:)
Private Sub Form_Open(Cancel As Integer)
Const cNumDisco As String = "ABC123"
'<< Numero del disco.
Se puede guardar también en una tabla, propiedad , fichero
externo, registro Windows.


Dim bFlag As Boolean

If funNDFaplicacion = cNumDisco Then bFlag = True

If bFlag = False Then
MsgBox "PERMISO DENEGADO EN ESTE PC." & vbNewLine _
& "El programa ha sido copiado sin permiso del autor." & vbNewLine _
& "Para el uso de las utilidades de este programa," & vbNewLine _
& "contacte con su autor.", vbCritical, "Permiso denegado"
Cancel = True
DoCmd.Quit
Else
MsgBox "Acceso permitido,.......", vbInformation, "Correcto"
End If
End Sub


 

¿ Porque guardar el Numero ?
La idea es guardar dicho Número dentro de tu aplicación para comprobar que el Número que tienes guardado coincide con el Número del disco del fabricante, en tal caso, si coinciden, significaría que tu aplicación esta corriendo en un PC autorizado, lo contrario significaría que tu aplicación esta corriendo en un PC No autorizado y debería como mínimo cancelarse la aplicación.
 


¿Donde se guarda?
Access permite guardar dicho número en diversos sitios
1-En una Tabla
2-En una propiedad
3-En un fichero externo
4-En el registro Windows
5-Como una constante (ejemplo código arriba)
 

¿Por que es mejor el Numero de fabrica ?
Existen distintos Números más o menos validos que se pueden extraer de un PC como números identificativos y únicos,........ pero No todos los números son iguales. Hay números y números,……….

Por ejemplo el Número de Volumen. Pero tiene el inconveniente que es fácilmente duplicable o mejor dicho clonable.

También existe el Número de la CPU pero difícilmente extraíble en muchas casos, especialmente con los ordenadores más antiguos, al igual que el Numero de la Placa Base o Numero de la BIOS.

Otra posibilidad seria extraer el Número del tipo de CPU, pero este número que en principio seria fácil de extraer, podría repetirse en ordenadores con el mismo hardware (misma CPU).

Por tanto y como mejor opción (hasta la fecha) es extraer el Número del disco de fabricante, ya que es un número único e irrepetible y casi imposible de clonar.

 

¿ Discos Físicos o Discos Lógicos ?
Por ultimo solo decir, que existen 2 formas distintas de poder extraer el número de fábrica del disco duro.

Una forma seria haciendo referencia al disco físico y otra seria haciendo referencia al disco lógico.
funNDFfisico (+ numero)
funNDFlogico (+ letra)


Los primeros hacen referencia a los discos duros “reales” instalados en el PC. Y suelen referenciarse con números, empezando por el cero (0) , (1) , (2) etc,………
Ejemplo: Msgbox funNDFfisico(0)
Daría como resultado “ABC123”


En cambio, los discos lógicos hacen referencia a las particiones de los discos. Un mismo disco físico, puede estar dividido en diversas particiones y por tanto tener por cada partición una letra distinta, tantas como particiones se hubiesen creado por ejemplo: C: , D: E: F: etc…….. (Reservándose las letras A: y B: para los discos tipo floppy)

Así, un solo disco físico puede contener varios discos lógicos, pero el resultado seria el mismo, ya que ambos discos lógicos pertenecen al mismo disco físico.
 

Ejemplo: (1 disco con 2 particiones partición C: y D:)
Msgbox funNDFlogico(C:)
Daría como resultado “ABC123”

y también

Msgbox funNDFlogico(D:)
Daría el mismo resultado “ABC123”
 
 
 

[Atrás]