如何获取磁盘序列号呢?获取磁盘序列号的方法有很多、如通过调用"\.\PhysicalDrive0"
、"\.\SCSI0: "等驱动,也可以通过"WMI Services",不过本文中都不会使用前面列举的
方法,而是通过“系统核心库”导出的GetVolumeinformation函数,或许你会感到疑惑 从
字面看应该是“取音量信息”与“磁盘序列号”没有任何关系吧,在当初我接触到这方面得资
料时也有不小疑惑,但是如果翻译成“取磁卷信息”那么或许便可以理解了吧、
在上图中,可以看到通过GetVolumeinformation函数,可以获取“磁盘卷标”、“文件系统”
包括“磁盘序号”等信息,当然从本文标题中可以看到,只需要“磁盘序号”的信息、
Public Declare Function GetVolumeinformation lib "kernel32.dll" Alias "GetVolumeinformationA" (ByVal lpRootPathname As String,ByVal lpVolumenameBuffer As String,ByVal nVolumenameSize As Integer,ByRef lpVolumeSerialNumber As Integer,ByRef lpMaximumComponentLength As Integer,ByRef lpfileSystemFlags As Integer,ByVal lpfileSystemnameBuffer As String,ByVal nfileSystemnameSize As Integer) As Boolean上面是“GetVolumeinformation”函数的导入声明,我阐述下该函数参数的信息吧、
lpRootPathname 欲取信息磁卷根路径
lpVolumenameBuffer 磁卷名称缓冲区
nVolumenameSize 磁卷名称缓冲区尺寸
lpVolumeSerialNumber 磁盘序号缓冲区
lpMaximumComponentLength 文件名称分段尺寸
lpfileSystemFlags 文件系统标志
lpfileSystemnameBuffer 文件系统名称缓冲区
nfileSystemnameSize 文件系统名称缓冲区尺寸
取磁卷信息,如果成功返回真否则返回假
Public Const MAX_BYTE = 255 Public Const NulL = 0 Sub Main() Console.Title = "取磁盘序列号" Dim iNumOfSerials As Integer = NulL Dim strLabelBuffer = Space(MAX_BYTE),strfileSysname = Space(MAX_BYTE) If (GetVolumeinformation("C:\",strLabelBuffer,MAX_BYTE,iNumOfSerials,strfileSysname,MAX_BYTE)) Then Console.Writeline("磁盘卷标: " + strLabelBuffer.TrimEnd()) Console.Writeline("文件系统: " + strfileSysname.TrimEnd()) Console.Writeline("磁盘序号: " + iNumOfSerials.ToString("X2")) End If Console.ReadKey(False) End Sub上面是一个很简单的示例代码,但是需要导入以来的命名空间,所以你需要在
你的文件代码页顶部使用下面这句话
imports System.Runtime.InteropServices
示例代码: http://pan.baidu.com/s/1kUxEIMV 总结
以上是内存溢出为你收集整理的VB 取磁盘序列号全部内容,希望文章能够帮你解决VB 取磁盘序列号所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)