用vb获得硬盘序列号
请问用vb中的serialnumber获得的硬盘序列号究竟是什么,format/fdisk后会不会改变? 获取逻辑区序列号format以后就会变!物理序列号就不会! 在硬盘格式化后都会重新生成,且不会重复。 vb怎样获得物理序列号呢? Private 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 nFilesSystemNameSize As Long) As Long
Function GetSerialNumber(sRoot As String) As Long
Dim lSerialNum As Long
Dim R As Long
Dim strLabel As String, strType As String
strLabel = String$(255, Chr$(0))
strType = String$(255, Chr$(0))
R = GetVolumeInformation(sRoot, strLabel, Len(strLabel), _
lSerialNum, 0, 0, strType, Len(strType))
GetSerialNumber = lSerialNum
End Function
用法:lserial = GetSerialNumber("c:\")
lserial = GetSerialNumber("d:\")
lserial = GetSerialNumber("e:\")
如果驱动器不存在,则返回0。
本程序还可得到:磁盘卷标(strLabel),文件系统类型(strType)。 谢,待会试试 试过了.还有些问题:
1 获得的是硬盘物理序列号吗?为什么输入不同的逻辑分区得到的值不同?
2 重新分区后改变了c盘的大小,获得的值还相同吗?
3 重新分区后改变了分区数目,获得的值还相同吗?
4 获得的值位数有规定么,我用硬盘获得的是9位数,软驱是10位数,别的(网络映射,移动存储等)怎样? 获取物理序列号我前一段时间在一个网站上看到过,需要用他们提供的控件,而且要注册,所以就没有去下载! 请看主题:
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=10152 看过了,但不知道用法.上面所说的例子链接已经失效了,请9楼再指点一下.
页:
[1]
2