为什么小弟我的获取硬盘序列号的代码,在有些电脑下没法获取到硬盘序列号,即返回值为空白
为什么我的获取硬盘序列号的代码,在有些电脑上没法获取到硬盘序列号,即返回值为空白?
'取得硬盘信息:型号/物理系列号(唯一)
Function GetHardDiskInfo(Optional ByVal numDisk As eumDiskNo = hdPrimaryMaster, Optional ByVal numType As eumInfoType = hdOnlySN) As String
On Error GoTo Errc
If GetDiskInfo(numDisk) = 1 Then
Dim pSerialNumber As String, pModelNumber As String
pSerialNumber = StrConv(m_DiskInfo.sSerialNumber, vbUnicode)
pModelNumber = StrConv(m_DiskInfo.sModelNumber, vbUnicode)
Select Case numType
Case hdOnlyModel '仅型号
GetHardDiskInfo = Trim(pModelNumber)
Case hdOnlySN '仅系列号
GetHardDiskInfo = Trim(pSerialNumber)
Case Else '型号,系列号
GetHardDiskInfo = Trim(pModelNumber) & "," & Trim(pSerialNumber)
End Select
End If
Dim l#, i#, str As String
str = GetHardDiskInfo
GetHardDiskInfo = Left(str, 20)
l# = Len(GetHardDiskInfo)
For i# = 1 To l#
str = Mid(GetHardDiskInfo, i#, 1)
If 32 < asc(str) And asc(str) < 127 Then
Else
Mid(GetHardDiskInfo, i#, 1) = "0"
End If
Next i#
Exit Function
Errc:
If Err.Description <> "" Then MsgBox Err.Description
End Function
Private Function OpenSMART(ByVal nDrive As Byte) As Long
Dim hSMARTIOCTL As Long
Dim hd As String
Dim VersionInfo As OSVERSIONINFO
hSMARTIOCTL = INVALID_HANDLE_VALUE
VersionInfo.dwOSVersionInfoSize = Len(VersionInfo)
GetVersionEx VersionInfo
Select Case VersionInfo.dwPlatformId
Case VER_PLATFORM_WIN32s
OpenSMART = hSMARTIOCTL
Case VER_PLATFORM_WIN32_WINDOWS
hSMARTIOCTL = CreateFile("\\.\SMARTVSD", 0, 0, 0, CREATE_NEW, 0, 0)
Case VER_PLATFORM_WIN32_NT
If nDrive < MAX_IDE_DRIVES Then
hd = "\\.\PhysicalDrive" & nDrive