是否正在尝试获取 USB 外部硬盘驱动器或磁盘的制造商序列号(不是卷号)?
[编辑] 我不知道或有任何关于如何做到这一点的代码。我尝试的上一个方法只返回卷序列号
是否正在尝试获取 USB 外部硬盘驱动器或磁盘的制造商序列号(不是卷号)?
[编辑] 我不知道或有任何关于如何做到这一点的代码。我尝试的上一个方法只返回卷序列号
您可以使用 WMI 来检索此信息。硬盘序列号在Win32_PhysicalMedia
. 我不会花时间在这里写代码。如果您有任何在 VB 6 中查询 WMI 的经验,您应该可以轻松完成。否则,在线搜索示例代码。您不会找到很多关于硬盘序列号的具体内容,但您会发现很多 WMI 示例。
请注意,您不会总是以您期望的格式获得序列号。例如,对本文的评论表明您可能会得到以下信息:
序列号:4a3532544e464137202020202020202020202020
在这种情况下,您必须解码序列号:
通过转换为十六进制字节,我们得到以下内容(0x20 是空白字符并被修剪掉):
0x4a, 0x35, 0x32, 0x54, 0x4e, 0x46, 0x41, 0x37
交换奇数和偶数字节得到以下结果:
0x35, 0x4a, 0x54, 0x32, 0x46, 0x4e, 0x37, 0x41
上面的 ASCII 码等于序列号字符串:
"5JT2FN7A"
我也不肯定所有外部/可移动硬盘驱动器都提供此信息。您的里程可能会有所不同,但建议的方法确实适用于内部硬盘驱动器。
或者,您似乎可以使用低级 Windows API(如DeviceIOControl
. 您需要在 VB 6 应用程序的模块中添加必要函数的声明。这篇关于代码项目的文章应该可以帮助您入门;该代码是用本机 C++ 编写的,适合 C# 等 .NET 语言使用,但我认为将代码改编为 VB 6 没有任何困难。