请问各位高手,怎么设置软件使用期限(比如限制30天)?修改系统时间后也不能解除限制。

解决方案 »

  1.   

    http://community.csdn.net/Expert/topic/3457/3457757.xml?temp=.915951设法保存两个时间值:
    1 第一次运行的时间。这很容易做到,因为此时还没有记录。
    2 上一次运行的时间,每次启动(防止异常退出)和退出时都更新就可以了。你在程序中每次启动时检查:
    1 距离第一次运行是否超过了期限。
    2 当前时间是否小于等于上一次运行时间(检查用户是否作弊)。
    只要两项检查有任何一项是 True,就弹出对话框后结束程序。你可以用任何加密手段。最好是让用户找不到你保存记录的地方,例如像 CIH 那样保存在 DLL 文件的空隙中,或者彩色图片文件的各像素最后 1 bit 中。而这些文件又是不会被删除的。例如你的程序所要求的文件。
      

  2.   

    其实防止作弊的最可靠方案是C/S结构。用户每次启动程序时必须上网登录。你在 InterNet 上的服务程序给予它继续使用的授权。所有的用户数据都在服务器上。
      

  3.   

    这里是一个完整的30天,或30次的源代码:
    Private Sub Form_Load()
    Dim vTimes As Long
    Dim vDays As Long
    Dim vStr As String
    Dim vStrDays As String
    vTimes = GetSetting("CTYKT_TEST", "Times", "Times", 30)
    vStr = Left(Date, 4) & Mid(Date, 6, 2) & Right(Date, 2)
    vDays = GetSetting("CTYKT_TEST", "Days", "Days", vStr)
    vStrDays = Left(vDays, 4) & "-" & Mid(vDays, 5, 2) & "-" & Right(vDays, 2)
    If vTimes <= 0 Or DateDiff("d", vStrDays, Date) > 30 Then
        PUBTEST = True
        MsgBox "未知错误"
        Unload Me
        Exit Sub
    Else
        vTimes = vTimes - 1
        SaveSetting "CTYKT_TEST", "Times", "Times", vTimes
        SaveSetting "CTYKT_TEST", "Days", "Days", vDays
    End If
        End Sub