3

我有一个用 VB6 编写的软件产品。这是一款付费软件产品,有1个月的demo版。demo版没有单独的安装文件。输入产品密钥的软件将demo变成完整版。我以前在注册表中写信息来跟踪演示版的 1 个月后,该软件将无法运行。此外,如果 windows 用户不是管理员,则无法将注册表写入 HKLM。如果我将注册表写入 HKCU,用户可以创建新用户并通过安装来重用该软件。那么如何将演示版管理到 1 个月,并且用户在 1 个月后不购买密钥就无法使用它?

4

4 回答 4

2

我原以为您需要创建一个许可证密钥文件并将其与 .exe 文件一起存储。它应该以某种方式加密,并保存它的创建时间和在什么机器上等详细信息。你可能会绕过它,但它肯定会足够强大以满足你的要求。

于 2013-02-18T11:10:18.293 回答
1

如果您担心用户创建新用户帐户来重新启动演示,那么您需要写入全球位置。如果您在设置期间设置了适当的位置,则可以将其写入 HKLM 作为标准。

请注意,如果用户能够/愿意每 30 天创建一个新用户帐户,那么也没有注册表项会阻止他们。

没有中央激活服务的最佳选择是以某种重要的方式调整演示版本,以阻止它们长时间使用。

我们软件的演示版会在 30 分钟后关闭,但他们可以注册一个(过时的)试用密钥,允许完全访问,到期后退回到演示版。

于 2013-02-18T11:56:07.840 回答
0

最好的方法是让您的软件连接到您的服务器,并在那里注册其安装日期,并让它在每次启动时连接到您的服务器

这需要您的软件可以访问您的服务器,因此它可能应该可以访问互联网,这可能并不总是正确的

这种方法的另一个优点是您的软件可以检查服务器上的可用更新

于 2013-02-18T09:37:43.850 回答
0

另一个想法,虽然我从未尝试过:

您可以让您的应用程序检查您的应用程序 exe 的文件属性并将其与当前日期/时间进行比较

当然,用户总是可以在未来设置他的日期/时间,然后安装您的应用程序,或者在当前日期/时间安装它,并在运行之前将其日期/时间更改为过去

我不知道您的应用程序是否可以访问它自己的属性,但是当我运行 exe 并单击文本框时,运行它会提供一些数据:

'1 form with
'    1 textbox : name=Text1    multiline=true

Option Explicit

Private Sub Form_Resize()
  Text1.Move 0, 0, ScaleWidth, ScaleHeight
End Sub

Private Sub Text1_Click()
  Dim intFile As Integer
  Dim strFile As String
  Dim lngSize As Long
  Dim dateMod As Date
  Dim fs As New Scripting.FileSystemObject
  Dim f As File
  Text1.Text = ""
  ' length of file
  strFile = App.Path & "\FileProp.exe"
  intFile = FreeFile
  Open strFile For Input As #intFile
    lngSize = LOF(intFile)
  Close intFile
  Text1.SelText = "LOF : " & CStr(lngSize) & vbCrLf
  ' last modified
  dateMod = FileDateTime(strFile)
  Text1.SelText = "FileDateTime : " & CStr(dateMod) & vbCrLf
  ' filesystemobject
  Set f = fs.GetFile(strFile)
  Text1.SelText = "fs.DateCreated : " & f.DateCreated & vbCrLf
  Text1.SelText = "fs.DateLastAccessed : " & f.DateLastAccessed & vbCrLf
  Text1.SelText = "fs.DateLastModified : " & f.DateLastModified & vbCrLf
End Sub
于 2013-02-18T14:22:10.980 回答