2013-02-18 107 views
3

我有用VB6编写的软件产品。它是一个付费软件产品,它有一个月的演示版本。演示版本没有单独的设置文件。进入产品密钥的软件变成演示版本的完整版本。我曾经在注册表中编写信息以跟踪演示版本的1个月之后,软件将无法工作。另外,如果Windows用户不是管理员,则注册表不能写入HKLM。如果我向HKCU写入注册表,用户可以创建新用户并通过安装它来重新使用该软件。那么如何管理演示版本到1个月,并且用户在1个月后不能使用它而无需购买密钥?管理软件的演示版本

回答

2

我本来以为你会需要创建一个许可证密钥文件并将其与.exe文件一起存储。它应该以某种方式进行加密,并保存它的创建时间和机器等的详细信息。您可能会规避它,但它肯定会足够满足您的要求。

+0

如果用户能够安装软件,则安装程序正在写入安装位置,安装程序也可以将许可证文件写入安装位置。你为什么会认为安装程序无法写入与可执行文件相同的位置? – 2013-02-18 12:00:27

+0

对不起,我从用户的角度思考,即由应用程序创建。你没有指定安装程序。 – Deanna 2013-02-18 12:43:29

0

最好的办法是让你的软件连接到服务器,并有注册它的安装日期,并让它连接到你的服务器会在每次启动

时间,这需要你的软件有您的服务器的访问虽然,所以它应该可能有网络连接可能并不总是正确

这种方法的另一个好处是,你的软件可以检查服务器上的可用更新

+0

我不能用这种方法,因为用户可能无法将他的电脑连接到互联网,所以它不会为我工作。还有其他想法吗? – Navaneet 2013-02-18 11:20:23

1

如果您担心用户创建新用户帐户以重新开始演示,那么您需要写入全球位置。 如果您在设置过程中设置了适当的位置,您可以作为标准写入HKLM。

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

没有中央激活服务的最佳选择是将演示版本以某种有意义的方式进行排列以防止它们长时间使用。

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

+0

对于过期的(试用版/演示版)键+1。当然,用户可以更改Windows日期,但通常他们不会:) – Arvo 2013-02-18 14:29:41

+0

@Deanna但是在Windows 8中,我们无法在没有管理员权限的情况下写入HKLM。因此,我如何管理它? – Navaneet 2013-02-19 05:53:36

+0

@Navaneet自Windows NT以来,您一直无法成为非管理员用户。正如我在帖子中所说的,您可以在HKLM中设置一个特定的密钥,并拥有正确的权限以允许非管理员程序写入。你如何做到这一点取决于你的安装程序。 – Deanna 2013-02-19 08:56:08

0

另一个想法,虽然我从来没有尝试过:

,你可以让你的应用程序检查应用程序的EXE文件proporties和比较,为当前日期/时间

当然

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

我不知道您的应用程序是否可以访问它自己的属性,但运行时会给出一些数据,当我运行该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