明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2903|回复: 6

[提问] 借用某大侠的注册码程序,为什么第二次还需要输注册码?

[复制链接]
发表于 2015-5-28 15:53:03 | 显示全部楼层 |阅读模式
程序如下:
(defun UseLimit                (/  FIND_SERIALNUMBER           regNumber     num    regnum reg_path      *error*        )
  (defun *error* (msg / ent count)
    (princ)
  ) ;_ 结束defun
  (defun FIND_SERIALNUMBER (DRIVE / FILSYS VAL)
    (setq FILSYS (vlax-create-object "Scripting.FileSystemObject"))
    ;;(vlax-dump-object FILSYS t)
    (setq VAL (vlax-invoke FILSYS "GetDrive" DRIVE))
    ;;(vlax-dump-object VAL t)
    (setq VAL (vl-catch-all-apply
                'vlax-get
                (list VAL "SerialNumber")
              ) ;_ 结束vl-catch-all-apply
    ) ;_ 结束setq
    (vlax-release-object FILSYS)
    (if        (vl-catch-all-error-p VAL)
      (setq VAL NIL)
      VAL
    ) ;_ 结束if
  ) ;_ 结束defun

  (setq reg_path "HKEY_CURRENT_USER\\Software\\autodesk\\temp")
  (setq regNumber (vl-registry-read reg_path "注册码"))
  (if
    (/=        regNumber;有这个判断函数为什么判断不出来?
        (itoa
          (fix
            (+ (/ (atoi
                    (rtos (atoi (rtos (FIND_SERIALNUMBER "C:"))))
                  ) ;_ 结束atoi
                  3.14
               ) ;_ 结束/
               1357926480
            ) ;_ 结束+
          ) ;_ 结束fix
;;;注册码=申请码/3.14+1357924680取整
        ) ;_ 结束itoa
    ) ;_ 结束/=
     (progn
       (alert
         (strcat
           "请注册!"
         ) ;_ 结束strcat
       ) ;_ 结束alert
       (setq num (rtos (FIND_SERIALNUMBER "C:")))
       (setq regnum
              (itoa
                (fix (+ (/ (atoi (rtos (atoi num))) 3.14) 1357924680))
              ) ;_ 结束itoa
       ) ;_ 结束setq
;;;注册码=申请码/3.14+1357924680取整
       (textscr)
       (princ
         (strcat "您的申请码为: " num)
       ) ;_ 结束princ
       (setq regNumber (getstring "\n请输入注册码:"))
       (if (/= regNumber regnum)
         (progn
           (alert "注册码无效!")
           (exit)
         ) ;_ 结束progn
         (progn
           (vl-registry-write reg_path "注册码" regnum)
           (alert "您已成功注册!")
         ) ;_ 结束progn
       ) ;_ 结束if
       T
     ) ;_ 结束progn
  ) ;_ 结束if
  (princ)
) ;_ 结束defun

借用大侠的注册码程序,我改了点注册码算法,不知道为什么第一次,输入注册码,后正常,注册码也正确的保存在了注册表里,可是第二次运行,依然需要输入注册码,程序里明明有if判断,为什么断不出来?还有就是visual lisp里监视时,各个参数均为nil,不知道为什么,哪位大侠帮着看看,谢谢。
发表于 2015-5-29 08:06:19 | 显示全部楼层
一个数字1357926480,另一个数字1357924680,当然不相等,永远都要注册!
 楼主| 发表于 2015-5-29 08:37:33 | 显示全部楼层
犯了一个低级错误,改过后确实好了。不过为什么每次都能注册成功哪?
发表于 2015-5-29 10:12:20 | 显示全部楼层
刚开始时,我们都是与你一样的想法,保护再保护,时间长了就觉得没必要了
知识是互相学的,把自己封闭起来了,其它的东西也就进不来了。

评分

参与人数 1明经币 +1 收起 理由
lucas_3333 + 1 赞一个!

查看全部评分

 楼主| 发表于 2015-5-29 15:13:02 | 显示全部楼层
USER2128 发表于 2015-5-29 10:12
刚开始时,我们都是与你一样的想法,保护再保护,时间长了就觉得没必要了
知识是互相学的,把自己封闭起来 ...

这是帮朋友写的一个小程序,他怕员工离职后带走程序,所以--------。我借网友的加密程序用一下,要是我自己,我恨不得全给同事,他们提高效率,我也省不少事。另外我觉得高手的话这个还是容易破解的。
发表于 2015-5-29 21:53:37 | 显示全部楼层
我都贡献出来了,给我们同事用,也传在了论坛,取之于此用于此。WDY工具箱:http://bbs.mjtd.com/thread-108389-1-1.html
发表于 2015-6-8 19:57:16 | 显示全部楼层
(defun UseLimit                (/  FIND_SERIALNUMBER           regNumber     num    regnum reg_path      *error*        )
  (defun *error* (msg / ent count)
    (princ)
  ) ;_ 结束defun
  (defun FIND_SERIALNUMBER (DRIVE / FILSYS VAL)
    (setq FILSYS (vlax-create-object "Scripting.FileSystemObject"))
    ;;(vlax-dump-object FILSYS t)
    (setq VAL (vlax-invoke FILSYS "GetDrive" DRIVE))
    ;;(vlax-dump-object VAL t)
    (setq VAL (vl-catch-all-apply
                'vlax-get
                (list VAL "SerialNumber")
              ) ;_ 结束vl-catch-all-apply
    ) ;_ 结束setq
    (vlax-release-object FILSYS)
    (if        (vl-catch-all-error-p VAL)
      (setq VAL NIL)
      VAL
    ) ;_ 结束if
  ) ;_ 结束defun

  (setq reg_path "HKEY_CURRENT_USER\\Software\\autodesk\\temp")
  (setq regNumber (vl-registry-read reg_path "注册码"))
  (if
    (/=        regNumber;有这个判断函数为什么判断不出来?
        (itoa
          (fix
            (+ (/ (atoi
                    (rtos (atoi (rtos (FIND_SERIALNUMBER "C:"))))
                  ) ;_ 结束atoi
                  3.14
               ) ;_ 结束/
               1357924680
            ) ;_ 结束+
          ) ;_ 结束fix
;;;注册码=申请码/3.14+1357924680取整
        ) ;_ 结束itoa
    ) ;_ 结束/=
     (progn
       (alert
         (strcat
           "请注册!"
         ) ;_ 结束strcat
       ) ;_ 结束alert
       (setq num (rtos (FIND_SERIALNUMBER "C:")))
       (setq regnum
              (itoa
                (fix (+ (/ (atoi (rtos (atoi num))) 3.14) 1357924680))
              ) ;_ 结束itoa
       ) ;_ 结束setq
;;;注册码=申请码/3.14+1357924680取整
       (textscr)
       (princ
         (strcat "您的申请码为: " num)
       ) ;_ 结束princ
       (setq regNumber (getstring "\n请输入注册码:"))
       (if (/= regNumber regnum)
         (progn
           (alert "注册码无效!")
           (exit)
         ) ;_ 结束progn
         (progn
           (vl-registry-write reg_path "注册码" regnum)
           (alert "您已成功注册!")
         ) ;_ 结束progn
       ) ;_ 结束if
      
     ) ;_ 结束progn
  ) ;_ 结束if
  (princ)
) ;_ 结束defun
你去掉判断后的T看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-16 02:28 , Processed in 0.221411 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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