Seguridad programas

Quiero darle seguridad a un programa por medio del número de serie del disco duro de tal modo que si el número de serie del disco duro no es el correcto el form1 no se ejecute

1 respuesta

Respuesta
1
Aquí te propongo la siguiente solución:
'--------- MODULO
Declare Function GetVolumeInformation Lib "kernel32.dll" Alias _
"GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal _
lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Integer, _
lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, _
lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal _
nFileSystemNameSize As Long) As Long
'---------- FORMULARIO
Function GetSerialNumber(strDrive As String) As Long
Dim SerialNum As Long
Dim res As Long
Dim Temp1 As String
Dim Temp2 As String
Temp1 = String$(255, Chr$(0))
Temp2 = String$(255, Chr$(0))
res = GetVolumeInformation(strDrive, Temp1, _
Len(Temp1), SerialNum, 0, 0, Temp2, Len(Temp2))
GetSerialNumber = SerialNum
End Function
Private Sub Command1_Click()
Call MsgBox(GetSerialNumber("c:\"))
End Sub
Una vez obtenido el número de serie del HD podrías compararlo con el que le pidas al usuario, con un textbox, un inputbox, etc.
Ya probé el código pero me da una serie de números que no corresponden al numero de serie o S/N de la etiqueta del disco duro como por ejemplo si es western digital debe salir WD-WCAL77401477 Y me da unos números que no corresponden a la serie del disco duro.
Si todavía tienes el problema de sacar el numero de serie de fabrica
del disco duro, busca en internet el dll "DiskSerial.dll", con este te
da el serial de fabrica del disco duro.
Después que lo tengas, en un formulario create 2 combos y agrega el siguiente código:
Private Declare Function GetSerialNumber Lib "DiskSerial.dll" (ByVal nDrive As Integer, ByVal lpBuffer As String) As Long
Private Declare Function GetModelNumber Lib "DiskSerial.dll" (ByVal nDrive As Integer, ByVal lpBuffer As String) As Long
Private Sub Command1_Click()
Dim HDDserialno As String * 256
Call GetSerialNumber(0, HDDserialno)
MsgBox HDDserialno
End Sub
Private Sub Command2_Click()
Dim HDDModelno As String * 256
Call GetModelNumber(0, HDDModelno)
MsgBox HDDModelno
End Sub
Con esto deberías tener para sacar el numero de serie.
tendras algun linl de descarga del diskserial.dll por que en internet no lo encuentro

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas