Vb6 管理软件的演示版本

Vb6 管理软件的演示版本,vb6,software-design,demo,trial,Vb6,Software Design,Demo,Trial,我有一个用VB6编写的软件产品。这是一款付费软件产品,演示版本为1个月。演示版本没有单独的设置文件。输入产品密钥后,软件会将演示变为完整版本。我过去常常在注册表中写入信息,以跟踪演示版本的1个月,之后软件将无法工作。此外,如果windows用户不是管理员,则无法将注册表写入HKLM。如果我将注册表写入HKCU,用户可以创建新用户,并通过安装重新使用软件。那么,我如何管理演示版本到1个月,而用户在1个月后如果不购买密钥就不能使用它呢 最好的方法是让您的软件连接到服务器,并在那里注册安装日期,然后让

我有一个用VB6编写的软件产品。这是一款付费软件产品,演示版本为1个月。演示版本没有单独的设置文件。输入产品密钥后,软件会将演示变为完整版本。我过去常常在注册表中写入信息,以跟踪演示版本的1个月,之后软件将无法工作。此外,如果windows用户不是管理员,则无法将注册表写入HKLM。如果我将注册表写入HKCU,用户可以创建新用户,并通过安装重新使用软件。那么,我如何管理演示版本到1个月,而用户在1个月后如果不购买密钥就不能使用它呢

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

这就要求你的软件能够访问你的服务器,所以它应该能够访问互联网,这可能并不总是正确的


这种方法的另一个优点是,您的软件可以检查服务器上是否有可用的更新。我原以为您需要创建一个许可证密钥文件,并将其与.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

我无法使用此方法,因为用户可能无法将其PC连接到internet,因此它对我不起作用。还有其他想法吗?如果用户能够安装软件,则安装程序正在写入安装位置,安装程序也可以将许可证文件写入安装位置。为什么您认为安装程序无法写入与可执行文件相同的位置?对不起,我是从用户的角度考虑的,即由应用程序创建的。您没有指定安装程序。日期(试用/演示)键+1。当然,用户可以更改windows日期,但通常不会:)@Deanna但在windows 8中,未经管理员许可,我们无法向HKLM写入。因此,我如何管理它?@navanet自windows NT以来,您一直无法以非管理员用户的身份执行此操作。正如我在文章中所说的,您可以在HKLM中设置一个特定的密钥,并具有允许您的非管理员程序写入该密钥的权限。这取决于您的安装程序。@Deanna我正在使用NSIS准备安装程序。那我怎么做呢?如何在没有管理员权限的情况下将注册表写入HKLM,以及如何像您之前所说的那样为特定的项设置正确的权限?我不使用NSIS。Inno在
[注册表]
部分有一个
权限
参数,允许所有用户写入。我希望NSIS也有类似的情况。