如何获取磁盘序列号呢?获取磁盘序列号的方法有很多、如通过调用"\\.\PhysicalDrive0"
、"\\.\SCSI0: "等驱动,也可以通过"WMI Services",不过本文中都不会使用前面列举的
方法,而是通过“系统核心库”导出的GetVolumeInformation函数,或许你会感到疑惑 从
字面看应该是“取音量信息”与“磁盘序列号”没有任何关系吧,在当初我接触到这方面得资
料时也有不小疑惑,但是如果翻译成“取磁卷信息”那么或许便可以理解了吧、
在上图中,可以看到通过GetVolumeInformation函数,可以获取“磁盘卷标”、“文件系统”
包括“磁盘序号”等信息,当然从本文标题中可以看到,只需要“磁盘序号”的信息、
上面是“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