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

获取vb6中可移动usb硬盘的序列号,vb6,usb-drive,serial-number,Vb6,Usb Drive,Serial Number,我正在尝试获取usb外部硬盘或磁盘的制造商序列号(而不是卷号) [编辑] 我不知道或者还没有关于如何做到这一点的任何代码。我以前尝试的方法只返回卷序列号您可以使用WMI检索此信息。硬盘驱动器序列号位于Win32\u PhysicalMedia中。我不会花时间在这里写代码;如果您有在VB6中查询WMI的经验,您应该能够轻松地完成它。否则,请在线搜索示例代码。你不会找到很多关于硬盘序列号的具体信息,但是你会找到很多WMI示例 厌倦了这样一个事实:你不会总是以你期望的格式获得序列号。例如,表示您可能会

我正在尝试获取usb外部硬盘或磁盘的制造商序列号(而不是卷号)

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

您可以使用WMI检索此信息。硬盘驱动器序列号位于Win32\u PhysicalMedia中。我不会花时间在这里写代码;如果您有在VB6中查询WMI的经验,您应该能够轻松地完成它。否则,请在线搜索示例代码。你不会找到很多关于硬盘序列号的具体信息,但是你会找到很多WMI示例

厌倦了这样一个事实:你不会总是以你期望的格式获得序列号。例如,表示您可能会得到以下内容的注释:

序列号:4A3532544E464137020202020202020

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

  • 通过转换为十六进制字节,我们得到以下结果(0x20是空白字符,被删除):

  • 交换奇数和偶数字节会得到以下结果:

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

    "5JT2FN7A"
    
  • 我也不确定所有外部/可移动硬盘驱动器是否都提供此信息。您的里程数可能会有所不同,但建议的方法在内部硬盘驱动器上运行良好



    或者,您似乎可以使用诸如
    DeviceIOControl
    之类的低级Windows API来实现这一点。您需要在VB6应用程序的模块中添加必要函数的声明。关于代码的项目应该有助于你们开始;代码是用C++编写的,它是由C语言这样的.NET语言来消费的,但我不难看出代码是如何适应VB 6的。< /P> - 1:你能告诉我们你有什么问题吗?你尝试过什么?Wi32媒体似乎没有返回可移动媒体的序列号。我来看看DeviceIOControl选项。
    "5JT2FN7A"