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
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