我试图获取usb外置硬盘或磁盘的制造商序列号(不是卷号)?
[编辑] 我还不知道或者还没有关于如何做到这一点的代码。我试过的上一个方法只返回了卷序列号
答案 0 :(得分:1)
您可以使用WMI检索此信息。硬盘序列号位于Win32_PhysicalMedia
。我不打算花时间在这里写代码;如果你有任何在VB 6中查询WMI的经验,你应该能够毫不费力地做到这一点。否则,在线搜索示例代码。你不会发现任何关于硬盘序列号的具体内容,但你会发现很多WMI示例。
请注意,您不会总是以您期望的格式获得序列号。例如,对this article的评论表明您可能会得到类似的内容:
序列号:4a3532544e464137202020202020202020202020
在这种情况下,您必须解码序列号:
通过转换为十六进制字节,我们得到以下内容(0x20是空白字符并被删除):
0x4a, 0x35, 0x32, 0x54, 0x4e, 0x46, 0x41, 0x37
交换奇数和偶数字节得到以下结果:
0x35, 0x4a, 0x54, 0x32, 0x46, 0x4e, 0x37, 0x41
- 醇>
上述ASCII码等于序列号字符串:
"5JT2FN7A"
我也不肯定所有外置/可移动硬盘都提供此信息。您的里程可能会有所不同,但建议的方法 在内置硬盘上运行良好。
或者,您似乎可以使用DeviceIOControl
等低级Windows API执行此操作。您需要在VB 6应用程序中为模块添加必要函数的声明。代码项目的This article应该可以帮助您入门;代码是用原生C ++编写的,它适合像C#这样的.NET语言使用,但我认为将代码调整到VB 6没有任何困难。