3个回答
展开全部
Private Declare Function 获得硬盘序列号 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
Private Sub Form_Load()
On Error GoTo Err_Form_Load
Dim AA, 硬盘序列号, Maxlen, Sysflag As Long: Dim VolName, FsysName As String
AA = 获得硬盘序列号("c:\", VolName, 256, 硬盘序列号, Maxlen, Sysflag, FsysName, 256)
Form1.Caption = "C硬盘序列号(16制): " & Hex(硬盘序列号)
Exit Sub
Err_Form_Load:
End Sub
Private Sub Form_Load()
On Error GoTo Err_Form_Load
Dim AA, 硬盘序列号, Maxlen, Sysflag As Long: Dim VolName, FsysName As String
AA = 获得硬盘序列号("c:\", VolName, 256, 硬盘序列号, Maxlen, Sysflag, FsysName, 256)
Form1.Caption = "C硬盘序列号(16制): " & Hex(硬盘序列号)
Exit Sub
Err_Form_Load:
End Sub
参考资料: http://zhidao.baidu.com/question/31294320.html
展开全部
上面的硬盘序列号都是逻辑盘序列号
每次格式化时都会改变而且很容易更改
你需要的应是物理序列号,是硬盘出厂时固化的
全球唯一的十位字符
网上有人编好的getdiskinfo
好像vsit不能用
或用WMI:Win32_PhysicalMedia
不过用在vsit里得出的是20位的16进制字符串
你要设法检测与转换
我现在是把多种方法组合起来用
WMI功能比较强但初始化比较慢
我还用汇编试过,快不过不太稳定
例程我就不提供了,自己去搜索一下。
每次格式化时都会改变而且很容易更改
你需要的应是物理序列号,是硬盘出厂时固化的
全球唯一的十位字符
网上有人编好的getdiskinfo
好像vsit不能用
或用WMI:Win32_PhysicalMedia
不过用在vsit里得出的是20位的16进制字符串
你要设法检测与转换
我现在是把多种方法组合起来用
WMI功能比较强但初始化比较慢
我还用汇编试过,快不过不太稳定
例程我就不提供了,自己去搜索一下。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Private Sub Form_Load()
Set FSO = CreateObject("Scripting.FileSystemObject")
Set d = FSO.getdrive("C:")
MsgBox "C盘的序列号是(16进制): " & Hex(d.SerialNumber)
End Sub
Set FSO = CreateObject("Scripting.FileSystemObject")
Set d = FSO.getdrive("C:")
MsgBox "C盘的序列号是(16进制): " & Hex(d.SerialNumber)
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询