获取vb6中可移动usb硬盘的序列号

时间:2011-02-22 09:43:19

标签: vb6 usb-drive serial-number

我试图获取usb外置硬盘或磁盘的制造商序列号(不是卷号)?

[编辑] 我还不知道或者还没有关于如何做到这一点的代码。我试过的上一个方法只返回了卷序列号

1 个答案:

答案 0 :(得分:1)

您可以使用WMI检索此信息。硬盘序列号位于Win32_PhysicalMedia。我不打算花时间在这里写代码;如果你有任何在VB 6中查询WMI的经验,你应该能够毫不费力地做到这一点。否则,在线搜索示例代码。你不会发现任何关于硬盘序列号的具体内容,但你会发现很多WMI示例。

请注意,您不会总是以您期望的格式获得序列号。例如,对this article的评论表明您可能会得到类似的内容:

  

序列号:4a3532544e464137202020202020202020202020

在这种情况下,您必须解码序列号:

  
      
  1. 通过转换为十六进制字节,我们得到以下内容(0x20是空白字符并被删除):

    0x4a, 0x35, 0x32, 0x54, 0x4e, 0x46, 0x41, 0x37
    
  2.   
  3. 交换奇数和偶数字节得到以下结果:

    0x35, 0x4a, 0x54, 0x32, 0x46, 0x4e, 0x37, 0x41
    
  4.   
  5. 上述ASCII码等于序列号字符串:

    "5JT2FN7A"
    
  6.   

我也不肯定所有外置/可移动硬盘都提供此信息。您的里程可能会有所不同,但建议的方法 在内置硬盘上运行良好。


或者,您似乎可以使用DeviceIOControl等低级Windows API执行此操作。您需要在VB 6应用程序中为模块添加必要函数的声明。代码项目的This article应该可以帮助您入门;代码是用原生C ++编写的,它适合像C#这样的.NET语言使用,但我认为将代码调整到VB 6没有任何困难。