我正在为我的软件使用硬盘 ID 来检查真实用户是否正在使用该软件。
对于 IDE 类型硬盘,我使用过程 GetIdeSerialNumber 获取 id。
但如果是 SATA 驱动器,则 ID 为空。
然后,对于 SATA 驱动器,我使用卷 ID 作为唯一 ID。
但是当系统格式化时卷ID会改变
现在我想知道我正在使用哪个硬盘,以及如何在delphi 7中获取SATA驱动器的硬盘ID?
EDIT:根据客户规范的软件需要锁定到硬件,相关的ID是
- MAC地址
- 硬盘 ID(SATA 或 IDE)
- 控制器ID(这是驱动软件开发的硬件的电机,ID是唯一的)
客户端已接受如果系统发生更改,身份验证层将失败,
但我们已经获得了将软件锁定到硬件的许可。
所以我想知道如何获取SATA ID
WMI http://msdn.microsoft.com/en-us/library/windows/desktop/aa394346.aspx是检索硬盘序列号的最佳选择,但不支持旧版本的 Windows(95 和 98)。
我建议您使用卷序列号 http://msdn.microsoft.com/en-us/library/windows/desktop/aa364993.aspx。它与硬件无关。它将与 Windows 安装相关联,而不是与物理硬盘驱动器相关联。这很有意义并且应该足够好。
请注意,如果用户重新安装 Windows 或其他一些恢复情况,则必须重新激活,因此您需要留出一些余地。这是实施起来最棘手的部分。当然,这就是使用多个ID的原因。您允许更改一项或多项,但不是全部,无需重新激活。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)