Declare Function GetVolumeInformation 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 LongPrivate Sub Form_Load()
  Driver = "c:\"
  Dim res As Long
  res = GetVolumeInformation(Driver, VolName, 127, volNumber, MCM, FSF, Fsys, 127)  txtSerial.Text = Localid
End Sub

解决方案 »

  1.   

    好像部分Win9x系统会出现,不知道为什么顶
      

  2.   

    这个函数仅仅是获取逻辑盘的序列号,而不是物理硬盘的序列号,物理序列号肯定是唯一不变的。txtSerial.Text = Localid ‘Localid 是什么意思?
      

  3.   


     bluesky23(乐天_正在开发右半脑^_^) ( ) 信誉:96  2005-09-25 22:25:00  
    txtSerial.Text = Localid ‘Localid 是什么意思?是我用来保存序列号的变量,忘记整理了...现在序列号已经取得了,在它前面有一个"-",如何将其去除?
    顶~
      

  4.   

    这个方法获取的那个序列号是格式化硬盘的时候软件写进去的。就是DOS下面打dir的时候显示的那个东西:
    ‘------------
    E:\>dir
     驱动器 E 中的卷是 E_WIN2K
     卷的序列号是 0948-1BE6
    ’=======
    这个东西用磁盘编辑软件可以修改。而且格式化硬盘后就变了。做软件认证的话这个东西绝对不行。
    获取物理序列号的才行。不过是采用别人写好的一个DLL来获取。搜搜应该可以找到这个DLL。
      

  5.   

    ''先告诉我怎样把前面的"-"去掉好吗
    repalce(str,"-","")
      

  6.   

    RE: 回复人: couragetodream:找到了,要收费的...我在用的是免费的啊。没有说过要收费啊。:DiskID32.dll 这个。