设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 707|回复: 5
打印 上一主题 下一主题

用VBA限制非注册软件使用时间??

[复制链接]
跳转到指定楼层
1#
发表于 2002-10-11 22:24:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
对于共享软件来言,在软件未注册时仅提供有限时间和有限次数的使用权限,当超过使用期限,程序给出提示信息并关闭程序。在EXCEL中如果你用宏进行了两次开发,你希望使此开发程序在时间和次数上对非注册用户有所限制,那么不妨试一下以下方法。

  1、在工作簿中新建一工作表,本文命名为"时间次数限制"表。

  2、在"时间次数限制"表单元格IV65536键入 = TODAY();在单元格IV65533键入1;(可按"Ctrl+向下键"即可到IV65536)

  3、打开 Visual Basic 编辑器,在当前工作簿新建一模块,在代码窗口输入如下代码:(可不输入插入在程序内的解释语句)

Option Explicit

Const Degree As Integer = 30
'Degree 是程序使用次数的限制常量
Const Time As Integer = 30
'Time 是程序使用时间的限制常量

Sub auto_open()
    //auto_open()程序每次启动时自动运行
Dim I As Integer //当前程序的使用次数变量
    Dim ThisTime As Long //当前程序使用时间变量
    Dim LastTime As Long //上次程序使用时间变量
    Dim Comp As Long //时间比较变量
   
ActiveWindow.WindowState = xlMinimized
    //最小化当前程序窗口
    Application.ScreenUpdating = False
    //宏执行时,屏幕冻结
   
    Sheets("时间次数限制").Visible = xlSheetVisible
    //使"时间次数限制"表可见
    Sheets("时间次数限制").Select
   
    I = Sheets("时间次数限制").Range("IV65533").Value
    //读取保存在表"时间次数限制"中的程序的使用次数的值
  If I = 1 Then
     Sheets("时间次数限制").Range("IV65536").Select
     Selection.Copy
     Sheets("时间次数限制").Range("IV65535").Select
     Selection.PasteSpecial Paste:=xlValues
     Sheets("时间次数限制").Range("IV65534").Select
     Selection.PasteSpecial Paste:=xlValues
     Application.CutCopyMode = False
  Else
        
     Sheets("时间次数限制").Range("IV65536").Select
     Selection.Copy
     Sheets("时间次数限制").Range("IV65535").Select
     Selection.PasteSpecial Paste:=xlValues
     Application.CutCopyMode = False
   //将单元格IV65536中的当前时间以纯数字形式粘贴至
单元格IV65535
     ThisTime = Sheets("时间次数限").Range("IV65535")
     LastTime = Sheets("时间次数限制").Range("IV65534")
        Comp = ThisTime - LastTime
        
     If Comp <  Time And I <  Degree And Comp > -1 Then
        Sheets("时间次数限制").Range("IV65536").Select
        Selection.Copy
        Sheets("时间次数限制").Range("IV65534").Select
        Selection.PasteSpecial Paste:=xlValues
        Application.CutCopyMode = False
        //将单元格IV65536中的当前时间
以纯数字形式粘贴至单元格IV65534
     Else
        //当程序在超过使用期限或使用次数时提示用户,
并关闭工作簿,退出程序
       MsgBox "您已超过了未注册软件的使用时间!"
       Sheets("时间次数限制").Visible=xlSheetVeryHidden
       ActiveWorkbook.Close SaveChanges:=False
       Exit Sub
     End If
   
    End If
    I = I + 1
    Sheets("时间次数限制").Range("IV65533").Value = I
    //累加程序使用次数并回传至将单元格IV65533
    Sheets("时间次数限制").Visible = xlSheetVeryHidden
    //使"时间次数限制"表用户不可见
    ActiveWorkbook.Save
    //保存当前活动工作簿
    Application.ScreenUpdating = False
    //激活窗口
ActiveWindow.WindowState = xlMaximized
    //最大化当前程序窗口
End Sub
  4、在Visual Basic 编辑器的项目窗口单击"时间次数限制"表, 在属性窗口中的Visible选择xlSheetVeryHidden。
  5、在Visual Basic 编辑器的项目窗口右键点击VBAProject,选择VBAProject(属性)...,在保护标签中选中"查看时琐定工程"并在密码和确认密码中键入8位以上的密码。(不易被解密软件破译)

  6、保存本工作簿,退出即可。

  从安全的角度分析以上步骤,如果使用者修改系统时间,将时间恢复至安装软件之日,由于和最近软件使用时间相比为负值仍不能正常使用,另外对于使用次数又有逐次累计不可能被修改.

  如果使用者打开程序时按住"Shift"键,阻止auto_open宏的运行的话,由于任何一次打开程序时,填写使用次数和使用时间变量的工作表都处于" xlSheetVeryHidden"状态,在此状态下不可以从取消隐藏工作表的方法予以显示工作表,唯一显示工作表的途径VBAProject又被加密(一旦解密由于使用次数和使用时间变量的单元格位于工作表底端不易被发现).也不易被使用者修改,更何况在此种状态下所有宏程序都将被终止。充分保护了软件的使用权限。



  谁知道access中如何限制非注册软件使用时间,最好可以建立
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2002-10-12 02:07:00 | 只看该作者
我认为最彻底的方式就是get他的CPU id, 打开数据库便用它登陆到你的网站,进行核对!!!哈哈~~~
3#
发表于 2002-10-12 02:12:00 | 只看该作者
限制记录数量可能更方便一些。
4#
 楼主| 发表于 2002-10-14 17:23:00 | 只看该作者
谢谢!!我需要具体方案!!
5#
发表于 2002-10-15 00:34:00 | 只看该作者

hello?

把以前的例子改了一下,可以实现,但不安全
会修改注册表的人都会破解
你可以参考一下:)
文件下载


点击这里给我发消息

6#
发表于 2002-10-15 00:43:00 | 只看该作者
好多例子都是改注册表。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2025-1-10 20:52 , Processed in 0.223687 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表