1

在网页中输入有效的序列号后,会下载一个 Windows 程序。现在,我想限制用户仅在一台 PC 上安装程序,即他或她第一次安装的那台。

我需要一些关于创建这样一个系统的建议。谢谢你。

PS 序列号必须在网页而不是安装程序上输入。

4

6 回答 6

1

通常的解决方案是:
创建一个描述系统的哈希(虽然不知道获取它的确切方法,GIYF)并将它与序列号结合起来,所以当用户安装程序时,他必须输入序列号,然后得到一个他必须在网站上输入的密钥,该网站将输入的密钥拆分为序列号和系统哈希,并检查系统哈希和序列号是否与存储的匹配,然后返回另一个密钥(如果序列号已经使用,则返回错误)他有进入程序。

使用 Mac 地址作为系统密钥并不是一个好的解决方案,因为它很容易被伪造。

于 2010-01-25T15:37:49.107 回答
1

听起来您需要创建一个可下载的 activex 控制程序,该程序将在客户端机器上运行,它将在其中询问:

  • 网络适​​配器的 MAC
  • Windows 版本,包括 SP
  • 硬盘序列号
  • 处理器品牌和 CPU 类型

并将信息转发回网站,然后生成密钥,并将密钥附加到下载安装程序并允许用户下载安装程序,然后在运行时读取密钥并检查正在运行的机器在。

唯一的问题是 ActiveX 必须用 C/C++ 编写,因为你不能在 .NET 语言上这样做,因为这是假设客户端的机器将安装运行时,恕我直言,这是一个危险的假设。

希望这会有所帮助,最好的问候,汤姆。

于 2010-01-25T15:41:16.290 回答
0

序列号基于某些硬件配置。如果硬件发生变化,则使序列号无效。Microsoft windows在产品激活期间使用这种方法。

希望这会有所帮助。

于 2010-01-25T15:35:14.813 回答
0

如果您编写自定义安装程序,那么您可以在成功安装后向您的 Web 服务器发送一个确认,该确认发送一个从硬件生成的序列号,以及他们用来下载文件的序列号。

然后,如果您发现相同的序列号#但硬件序列号不同,您可以回复说您无法激活软件...

编辑

以下是有关获取硬件信息的一些信息(假设是 .NET 环境,但您可以在所使用的环境中找到类似的信息)。

于 2010-01-25T15:37:30.813 回答
0

建立一个网络服务和数据库......他们必须验证才能安装。目前您的模型的问题是您正在保护或隐藏服务器后面的软件。您希望人们拥有该软件,即使他们(通常)不能使用它。串行密钥阶段应该在运行时解锁软件。

它是唯一适用于电脑游戏的模型。

您需要轮询各种硬件以生成 guid,将其与产品密钥进行哈希处理,并且您拥有可重现但复杂且难以伪造的数据。

http://edn.embarcadero.com/article/26040指向 .com 界面的链接以获取 guid

另一种方法是使用 sysinfo 或 dxdiag 之类的东西并将结果保存到文件中……对其进行哈希处理并将其用作序列号。涉及的编码更少 - 但有点混乱。

存储它并发出安装密钥 - 然后很容易发现和管理重新安装。即你真的不想去'电脑说不' - 这真的是一个营销机会

于 2010-01-25T15:38:24.180 回答
0

您可以尝试在安装时阻止密钥并在卸载时取消阻止密钥。这样,他们在每次卸载之间只能使用一次密钥。

于 2010-01-25T15:39:39.100 回答