在vb中如何得到唯一id,用什么函数

解决方案 »

  1.   

    唯一id????是指硬盘的还CPU的?
      

  2.   

    用API函数GetVolumeInformation:模块:
    Option ExplicitPublic Declare Function GetVolumeInformation& Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal pVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long)
    Public Const MAX_FILENAME_LEN = 256
    Public Function DriveSerial(ByVal sDrv As String) As Long
    Dim RetVal As Long
    Dim str As String * MAX_FILENAME_LEN
    Dim str2 As String * MAX_FILENAME_LEN
    Dim a As Long
    Dim b As Long    Call GetVolumeInformation(sDrv & ":\", str, MAX_FILENAME_LEN, RetVal, a, b, str2, MAX_FILENAME_LEN)
        DriveSerial = RetVal
    End Function窗体:
    Option ExplicitPrivate Sub Command1_Click()
        MsgBox DriveSerial(Left(Drive1.Drive, 1))
    End Sub
      

  3.   

    序列号是写在磁盘的引导区的,不同的文件系统略有不同。可以通过直接读取磁盘的相关区域来修改,而不需要格式化。对于FAT分区,可以使用DOS中断Int 21h的440DH功能的46H子功能来设置序列号。这在VB中不容易实现,但在其它软件中可以实现。所以序列号作为加密的依据不是特可靠。但现在的确有很多软件都利用序列号来生成注册号,因为毕竟大多数人都无法修改序列号。 
      

  4.   

    可以通过创建Guid的方法来创建唯一的ID:
    http://www.applevb.com/sourcecode/guid.zip
      

  5.   

    http://vip.6to23.com/NowCan1/tech/diskid.htm