叶曲冰寒 发表于 2014-6-7 09:10:48

没事弄个注册程序和注册机提提兴趣





qwsss31 发表于 2024-6-9 20:14:56

各位大佬求教一下,比如这个代码怎么加需要注册的流程,测试了几次都是乱码跪谢,(princ "\n程序:统计线段长度 命令:zz")
(defun C:zz (/ CURVE TLEN SS N SUMLEN)
(vl-load-com)(setq SUMLEN 0)
(setq SS (ssget '((0 . "CIRCLE,ELLIPSE,LINE,*POLYLINE,SPLINE,ARC"))))
(setq N 0)
(repeat (sslength SS)
(setq CURVE (vlax-ename->vla-object (ssname SS N)))
(setq TLEN (vlax-curve-getdistatparam CURVE (vlax-curve-getendparam CURVE)))
(setq SUMLEN (+ SUMLEN TLEN))
(setq N (1+ N))
)
(princ (strcat "\n共选择 " (itoa (sslength SS)) " 条线段. 线段总长: " (rtos SUMLEN 2 3) ".")) (princ)
)   


qwsss31 发表于 2024-6-10 22:35:30

大佬们知道这个注册成功后怎么删除吗?两次成功已经没办法测试了。。。注册表搜索不到

阿猪蛋 发表于 2024-6-11 09:13:11

正是要找的,学习一下,谢谢!

sicky111 发表于 2014-6-7 10:14:53

楼主放源码上来学习下啊。

lucas_3333 发表于 2014-6-7 11:00:14

sicky111 发表于 2014-6-7 10:14 static/image/common/back.gif
楼主放源码上来学习下啊。

论坛这类主题很多的,都是源码
;;-----------------------------------------------------------------------------------
;;2012-7-26 soly2006 调试成功!简单加密,目的是要用也要问别人,不问也要花些时间来破
;;理解所有为代码付出的优秀人才!
;;如果看到有你代码的影子,请不要见怪。
;;正式版应增加:
;;1、补齐已注册码与申请码一致;
;;2、求余要每机不同;
;;3、没必要用DCL,又不是经常用到,何必考虑人机界面;
;;4、用法:在命令后面加上(rere)就是。
;;5、再奉劝你,多用中文
;;-----------------------------------------------------------------------------------
;;;(defun rere( / 已注册码 注册码 输入注册码)
(defun c:tt( / 已注册码 注册码 输入注册码)
(setq 已注册码 (vl-registry-read "HKEY_CURRENT_USER\\Software\\solycad" "SN"))
(setq cpusn (cpu))
(setq 注册码 (strcat (加密字串 (substr cpusn 2 4) ) (加密字串 (substr cpusn 7 4) )))
(princ (strcat " 你要给别人的注册码为:" 注册码 "\n")) ;显示已注册码 便于调试,给程序不要有这条啊,
(if (/= 已注册码 注册码)
   (progn
   (setq 已注册码 注册码)
   (princ (strcat "    申请码为:    " "\n\n" cpusn))
   (setq 输入注册码 (getstring "\n请输入已注册码:"))
   (if (/= 已注册码 输入注册码)
    (progn
   (alert "请输入正确的已注册码")
   (exit)
    )
    (progn
   (vl-registry-write "HKEY_CURRENT_USER\\Software\\solycad" "SN" 输入注册码)
       (princ "注册成功!")
    )
   )
   )
   (alert " \n   已注册")
)
(princ)
)

;;------------------------CPU--------------------------------
;;不明出处
(defun CPU (/ Vlist VObj lcom lExecQuery item)
(vl-load-com)
(setq Vlist '())
(if (setq VObj (vlax-create-object "wbemscripting.swbemlocator"))
    (progn
      (SETQ lcom (VLAX-INVOKE
   VObj       'ConnectServer   "."
   "\\root\\cimv2"""   ""
   ""       ""128   nil
    ) ;_ 结束VLAX-INVOKE
      ) ;_ 结束SETQ
      (setq lExecQuery
      (vlax-invoke
      lcom
      'ExecQuery
      ;;"Select * From Win32_BIOS"
      "Select * from Win32_Processor"
      ) ;_ 结束vlax-invoke
      ) ;_ 结束setq
      (vlax-for item lExecQuery
(setq Vlist (vlax-get item 'ProcessorId) ;_ 结束cons
) ;_ 结束setq
      ) ;_ 结束vlax-for
      (vlax-release-object lExecQuery)       
      (vlax-release-object lcom)
      (vlax-release-object Vobj)
    )
)
Vlist
)

;; --------------------字串分解----------------------------------
(defun 字串分解 (字串 / i k s lst)
(setq i 0 k (chr 160))
(while (/= "" (setq s (substr 字串 (setq i (1+ i)) 1)))
    (if (< s k)
      (setq lst (cons s lst))
      (setq lst (cons (substr 字串 i 2) lst)
   i (1+ i))
    )
)(reverse lst)
)

;;-------------------------加密字串---------------------------------------------
(defun 加密字串(字串 / 字串表 串)
(setq 串 字串)
(setq 字串表 (字串分解 串))
(setq 串 (apply 'strcat (mapcar '(lambda (X)(加密字符 X)) 字串表)))
)

;;-----------------------------加密字符------------------------------------------------
;;精华所在:密=字符+字符对5求余
(defun 加密字符(字符 )
(chr (+ (ascii 字符) (rem (ascii 字符) 5)))
)

ysq101 发表于 2014-6-7 12:12:17

lucas_3333 发表于 2014-6-7 11:00 static/image/common/back.gif
论坛这类主题很多的,都是源码

这个具体怎么用呢??能教一下吗?

lucas_3333 发表于 2014-6-7 12:33:37

ysq101 发表于 2014-6-7 12:12 static/image/common/back.gif
这个具体怎么用呢??能教一下吗?

论坛还有很多,这个只是其中一个
在你程序前加rere即可

阿俊子 发表于 2014-6-7 14:07:24

学习看看是怎么个用法

lucas_3333 发表于 2014-6-7 14:30:42

本帖最后由 lucas_3333 于 2014-6-7 14:35 编辑

阿俊子 发表于 2014-6-7 14:07 static/image/common/back.gif
学习看看是怎么个用法
http://bbs.mjtd.com/thread-95792-1-1.html

http://bbs.mjtd.com/forum.php?mod=viewthread&tid=99025


叶曲冰寒 发表于 2014-6-7 17:59:48

sicky111 发表于 2014-6-7 10:14 static/image/common/back.gif
楼主放源码上来学习下啊。

那位仁兄说的很对,论坛上很多,不过关系到具体的自己来写的话新手会遇到蛮多问题。一个东西做到了就会很容易,没做到就不晓得从何处着手。多看看帮助文档吧

1993063 发表于 2014-6-7 22:53:47

lucas_3333 发表于 2014-6-6 17:00 static/image/common/back.gif
论坛这类主题很多的,都是源码

注册码存注册表很容易找出来

lucas_3333 发表于 2014-6-11 15:04:12

无意中又看到一个,贴出来大家学习

;;;初学liSP编程,编了一个lisp程序注册功能的模块,里边好多的语句都是明经网友的,深表感谢
;;;现将源程序拿出来共享。程序编的可能罗唆一些,望老鸟不要见笑,恳请指点。
;;;
;;;在C:\langjs目录下存储一个key.txt文件
;;;将对话框文件zhuc.dcl拷贝到AUTOCAD搜索支持的目录
;;;在你想要保护的lisp程序插入一句:
;;;(jiany)
;;;加载并运行程序。
;;;
;;;当想要保护的程序执行到(jiany)时
;;;程序打开C:\langjs\key.txt并取得里边存储的授权码,
;;;检验其和硬盘序列号之间的算法关系是否成立,(我的程序中只是简单的判断相等,可以改复杂一些)
;;;如果正确,则继续执行lisp程序
;;;如不成立
;;;则弹出注册对话框,输入正确的授权码,才能继续执行lisp程序,如授权码不正确,则退出。
;;;同时将正确的授权码存储在C:\langjs\key.txt中,以便下次进行检验
;;;
;;;如果想要改变key.txt存储路径和算法请自己在程序中修改。
;;;
;;;
;;;检验授权码程序
(defun c:jiany()
   (setq f (open "C:\\key.txt""r"))
   (setq fee2 (read-line f));;读取key为fee2
   (close f)
   (getmcid);;;获取物理序列号
(if (/= fee1 fee2)   ;;;这里是检验算法
(zhuc)
(prin1)
)
)
;;;对话框驱动程序
(defun zhuc()
(setq dcl_id (load_dialog "custom.dcl"))
   (new_dialog "zhuc" dcl_id)
   (getmcid)
   (set_tile "c01"fee1)
   (action_tile "c03" "(gsouqm) (done_dialog 1)")
   (setq bb (start_dialog))
   (cond ((= bb 1)(wsouqm ))
         (t (exit))
   )
(prin1)
)
(defun gsouqm();;;获取授权密码
   (setq ppp(get_tile "c02"))
   (prin1)
)
(defun wsouqm ();;;写入授权密码
   (setq f (open "C:\\key.txt" "w"))   
   (write-line ppp f)
   (close f)
;;;   (jiany)
   (prin1)
)
;;;获得硬盘虚拟序列号程序
;;获取网卡号cpu序列号
;;Test OK with XP
;;Use WMI to Get Networkadapter MAC.
;;Author : eachy [eachy@xdcad.net]
;;Web : http://www.xdcad.net
;;2005.11.22
(defun getmcid (/ mac WMIobj serv lox sn)
(vl-load-com)
;;;以下读取mac地址
(setq mac '())
(if (SETQ WMIobj (VLAX-CREATE-OBJECT "wbemScripting.SwbemLocator"))
    (progn (SETQ serv (VLAX-INVOKE WMIobj 'ConnectServer "." "\\root\\cimv2" "" "" "" "" 128 nil))
         (setq lox (vlax-invoke serv 'ExecQuery "Select * From Win32_NetworkAdapter "))
         (vlax-for item lox
             (if (and (= (vlax-get item 'NetConnectionID) "本地连接") ;中文系统
                      (not (member (setq sn (vlax-get item 'MACAddress)) mac))
               )
               (setq mac (cons sn mac))
             )
         )
    )
)
;;;(setq macid mac)
(print mac)
;;;(setq fee1 mac )
(princ)
)
;;;-----------------------------------
;;;取出串中字母数字 明经 ZZXXQQ 2008.9.15
;;;-----------------------------------
(defun qzmsz (txt)
;;;   (setq txt "1a2b3))::"
;;;         i 1
;;;         j 1
;;;ntxt "")
   (repeat (strlen txt);;;对txt进行其长度次数的循环计算
    (setq tx (substr txt j 1)) ;;;取出第j个字符
    (if (or (<= "a" (strcase tx T) "z") (<= "0" tx "9")) ;;;将其转换为大写字母判断是否为A-Z之间或者0-9
   (setq ntxt (strcat ntxt tx)) ;;;不是的话将其追加到ntxt
    )
    (setq j (1+ j))
   )
   (print ntxt)
(princ)
)

//
//注册对话框
//
zhuc:dialog{
label="注册信息";
spacer_1;
:text {label="                软件注册";}
:edit_box{label="机器码";key="c01";edit_width=30;}
:edit_box{label="授权码";key="c02";edit_width=30;}

spacer_1;
:row{
:text {label="       ";}
:button {label="注册";key="c03";
width=12;
fixed_width=true;
}
cancel_button;
:text {label="";}
}
}
页: [1] 2
查看完整版本: 没事弄个注册程序和注册机提提兴趣