【问题标题】:Get serial num of removable usb harddrive in vb6在vb6中获取可移动USB硬盘驱动器的序列号
【发布时间】:2011-02-22 09:43:18
【问题描述】:

正在尝试获取 USB 外部硬盘驱动器或磁盘的制造商序列号(不是卷号)?

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

【问题讨论】:

  • -1:您能告诉我们您遇到了什么问题,以及您自己尝试过什么吗?
  • Win32_PhysicalMedia 似乎没有返回可移动媒体的序列号。我要看看 DeviceIOControl 选项。

标签: vb6 usb-drive serial-number


【解决方案1】:

您可以使用 WMI 来检索此信息。硬盘序列号在Win32_PhysicalMedia。我不会花时间在这里写代码。如果您有任何在 VB 6 中查询 WMI 的经验,您应该可以轻松完成。否则,在线搜索示例代码。您不会找到很多关于硬盘驱动器序列号的具体内容,但您会发现很多 WMI 示例。

请注意,您不会总是以您期望的格式获得序列号。例如,this article 的 cmets 表示您可能会得到如下信息:

序列号:4a3532544e464137202020202020202020202020

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

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

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

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

    "5JT2FN7A"
    

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


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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 2015-07-05
    • 2012-03-29
    • 2012-05-24
    • 1970-01-01
    • 2011-03-24
    • 2018-05-15
    相关资源
    最近更新 更多