我有一个用 VB6 编写的软件产品。这是一款付费软件产品,有1个月的demo版。demo版没有单独的安装文件。输入产品密钥的软件将demo变成完整版。我以前在注册表中写信息来跟踪演示版的 1 个月后,该软件将无法运行。此外,如果 windows 用户不是管理员,则无法将注册表写入 HKLM。如果我将注册表写入 HKCU,用户可以创建新用户并通过安装来重用该软件。那么如何将演示版管理到 1 个月,并且用户在 1 个月后不购买密钥就无法使用它?
4 回答
我原以为您需要创建一个许可证密钥文件并将其与 .exe 文件一起存储。它应该以某种方式加密,并保存它的创建时间和在什么机器上等详细信息。你可能会绕过它,但它肯定会足够强大以满足你的要求。
如果您担心用户创建新用户帐户来重新启动演示,那么您需要写入全球位置。如果您在设置期间设置了适当的位置,则可以将其写入 HKLM 作为标准。
请注意,如果用户能够/愿意每 30 天创建一个新用户帐户,那么也没有注册表项会阻止他们。
没有中央激活服务的最佳选择是以某种重要的方式调整演示版本,以阻止它们长时间使用。
我们软件的演示版会在 30 分钟后关闭,但他们可以注册一个(过时的)试用密钥,允许完全访问,到期后退回到演示版。
最好的方法是让您的软件连接到您的服务器,并在那里注册其安装日期,并让它在每次启动时连接到您的服务器
这需要您的软件可以访问您的服务器,因此它可能应该可以访问互联网,这可能并不总是正确的
这种方法的另一个优点是您的软件可以检查服务器上的可用更新
另一个想法,虽然我从未尝试过:
您可以让您的应用程序检查您的应用程序 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