vb6 - ver - ¿Cómo puedo leer el número de serie del volumen de HDD usando VB 6?
obtener serial disco duro c# (3)
Private Declare Function GetVolumeInformation _
Lib "kernel32" Alias "GetVolumeInformationA" _
(ByVal lpRootPathName As String, _
ByVal pVolumeNameBuffer As String, _
ByVal nVolumeNameSize As Long, _
lpVolumeSerialNumber As Long, _
lpMaximumComponentLength As Long, _
lpFileSystemFlags As Long, _
ByVal lpFileSystemNameBuffer As String, _
ByVal nFileSystemNameSize As Long) As Long
Public Function GetSerialNumber( _
ByVal sDrive As String) As Long
If Len(sDrive) Then
If InStr(sDrive, "//") = 1 Then
'' Make sure we end in backslash for UNC
If Right$(sDrive, 1) <> "/" Then
sDrive = sDrive & "/"
End If
Else
'' If not UNC, take first letter as drive
sDrive = Left$(sDrive, 1) & ":/"
End If
Else
'' Else just use current drive
sDrive = vbNullString
End If
'' Grab S/N -- Most params can be NULL
Call GetVolumeInformation( _
sDrive, vbNullString, 0, GetSerialNumber, _
ByVal 0&, ByVal 0&, vbNullString, 0)
End Function
Llamar:
Dim Drive As String
Drive = InputBox("Enter drive for checking SN")
MsgBox Hex$(GetSerialNumber(Drive))
¿Cómo puedo leer el número de serie del volumen de HDD utilizando VB 6 pero sin usar ningún control ActiveX o complementos de terceros?
El siguiente ejemplo proporciona una serie de la unidad donde está su EXE
''APi declaration
Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
Sub subHDsn()
Dim TempAPi, VolumeSerial As Long
Dim strPATH As String
On Error Resume Next
TempAPi = 0
VolumeSerial = 0
If App.Path Like "*:*" Then
''checking whether the drive is local or mapped
strPATH = Left(App.Path, 3)
Else
''if it''s a UNC
strPATH = Left(App.Path, InStr((InStr(3, App.Path, "/") + 1), App.Path, "/"))
End If
''call API
TempAPi = GetVolumeInformation(strPATH, VolumeName, 100, VolumeSerial, 100, FileSystemFlags, FileSystemName, 100)
If TempAPi = 0 Then
MsgBox "Error calling API!", 16
End
End If
''convert from HeX
HDsn = Hex(VolumeSerial)
End Sub
La siguiente muestra sin necesidad de API.
Public Function GetSerialNumber(ByVal sDrive As String) As String
On Error Resume Next
Open "Vol.bat" For Output As 1
Print #1, "@vol %1%>DSN"
Close
Kill "DSN"
Shell ("Vol.bat " + sDrive)
Do
Open "DSN" For Input As 1
Input #1, GetSerialNumber
Input #1, GetSerialNumber
Close
Loop While GetSerialNumber = ""
GetSerialNumber = Right$(GetSerialNumber, 9)
Kill "Vol.bat"
Kill "DSN"
End Function