Dim LogicalDiskSet
    Dim DiskId As String
    Dim ld
   Set LogicalDiskSet = GetObject("winmgmts:{impersonationLevel=impersonate}") _
.ExecQuery("select * from Win32_LogicalDisk")
   For Each ld In LogicalDiskSet
    DiskId = ld.VolumeSerialNumber
   Next以上代码DiskId获得的是所有硬盘的序列号,我现在只想获取C盘的序列号请问该怎么改?谢谢!

解决方案 »

  1.   


    ManagementClass mcHD = new ManagementClass("win32_logicaldisk");
                ManagementObjectCollection mocHD = mcHD.GetInstances();
                foreach (ManagementObject m in mocHD)
                {
                    if (m["DeviceID"].ToString() == "C:")
                    {
                        str[1] = m["VolumeSerialNumber"].ToString();
                        break;
                    }
                }
    这个是C#的代码,str[1]返回的就是C盘的序列号,我现在不知道VB6怎么取,我是搞.net开发的。请教谢谢!
      

  2.   

    为什么要用WMI呢?直接用API函数好了。GOOGLE,有源代码的。
      

  3.   

    Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
    Dim LogicalDiskSet, ld
    Private Sub Command1_Click()
       Set LogicalDiskSet = GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf("Win32_LogicalDisk")
       Me.Caption = "请稍侯!!"
       For Each ld In LogicalDiskSet
          If GetDriveType(ld.Name) = 3 Then Print ld.Name & "---" & ld.VolumeSerialNumber & "---" & CStr(ld.Size)
       Next
       Me.Caption = "检测完成!!"
    End Sub
      

  4.   

    to cbm666 :
    If GetDriveType(ld.Name) = 3 这个取出来的ld.VolumeSerialNumber 不是 C盘的啊,是E盘的
      

  5.   

    If GetDriveType(ld.Name) = 3  '3是代表硬盘 5是光驱....Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
    Dim LogicalDiskSet, ld
    Private Sub Command1_Click()
       Set LogicalDiskSet = GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf("Win32_LogicalDisk")
       Me.Caption = "请稍侯!!" 
       For Each ld In LogicalDiskSet
          If UCase(Left(ld.Name, 1)) = "C" Then Print ld.Name & "---" & ld.VolumeSerialNumber & "---" & CStr(ld.Size): Exit For
       Next
       Me.Caption = "检测完成!!" 
    End Sub
      

  6.   

    只要C盘的话,上面那个API就不要啦
      

  7.   

    感谢 cbm666  6楼就是我要的效果了,结贴!