2

我正在使用 C# 和 .NET 2.0。我的应用程序需要某种方式来检查不同的用户,所以我将使用硬件 ID,但我看到我只能使用:

  • mac 地址 - 很容易更改,不是每个人都有它 // 否
  • 处理器 id - 使用 WMI 它返回 cpu 模型的值,它不是唯一的 // 否
  • 主板串行 - 并非每个主板都有它 // 否
  • Windows 的卷序列号 - 我不确定它是否会在 Windows 重新安装和卷格式时更改

那么有什么我没有提到的 hwid 吗?我想要每个人都拥有的东西,并且不会在重新安装 Windows 时被删除。否则我必须使用 Windows 的卷序列号。


编辑:从评论中我认为最好使用 HDD id。如何得到它?EDIT2:我刚刚读到 SCSI 驱动器没有串行。真的吗?

最终编辑:我已经在我的应用程序上使用了根驱动器序列号。它工作得很好。谢谢大家。

4

5 回答 5

2

硬盘序列号:唯一,不可更改,人人都有。

不是一个完美的选择,但......

于 2010-08-06T15:26:38.643 回答
1

好吧,我会选择不止一个 id。如果您组合了足够多的 ID,它们将为您提供足够的唯一性。

编辑:您也可以选择安装程序的硬盘上的位置(盘片、气缸等)

于 2010-08-06T15:29:32.053 回答
0

为什么要使用硬件 ID?我自己会采用某种基于表单(或基于 AD)的安全性。

然而,鉴于此:关于 HWID 的事情在于它识别特定的计算机配置:它旨在在系统发生更改时进行更改。您提到 Windows Volume Serial 可能会在重新安装和重新格式化时发生变化,但您的软件是否也必须在那时重新安装?如果用户出于某种原因更换了 HDD,HDD Serial 也可能会发生变化。

如果您必须使用 HWID,您可能需要选择一个(或多个)可用选项以提供唯一性,并围绕代码或通知用户需要重新安装和/或重新配置软件的硬件更改.

于 2010-08-06T15:31:20.897 回答
0

MAC地址不是很可靠。您应该使用无法更改的东西,例如 CPU ID 或 HDD IDE ID。

我的意思是:http:
//www.soft.tahionic.com/download-hdd_id/index.html
http://www.soft.tahionic.com/download-hdd_id/hardware%20ID%20programmer%27s%20DLL .html


回答您的问题,是的,SCSI 没有硬件 ID。

于 2011-01-07T13:47:04.290 回答
0

您是否必须考虑安全性或仅考虑可靠性,即用户是否想篡改您的 ID 检查?如果您需要(高)安全性,请购买“软件保护”产品之一,这比自己做要便宜得多。

不需要高安全性?=> 另一种可能性是使用用户或机器 SID。您必须考虑到您的应用程序执行提升 => 然后用户是管理员。

最后但同样重要的是:将一些字节的随机值写入 HKEY_CURRENT_USER 下的注册表(可能在不同的地方),并将其用作 ID。

于 2011-01-07T14:05:27.947 回答