明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 荒野孤行

[源码] 【源码】程序使用权限

    [复制链接]
发表于 2014-2-24 20:50:38 | 显示全部楼层
llsheng_73 发表于 2014-2-18 10:00
我的做法是生成申请码时,结合了当时的计算机时间和MAC地址生成申请码,进行注册时对其时效进行一定的验证, ...

也就是说每次生成的申请码都不是一样的,如此一来倒是可以的。

但是如果用户忘记了申请码,就再也不能注册了。还有就是在用杀毒软件清理注册表时,怎么才能让我们写入的相关信息不被删除呢?
发表于 2014-2-18 10:00:15 | 显示全部楼层
本帖最后由 llsheng_73 于 2014-2-18 10:05 编辑

我的做法是生成申请码时,结合了当时的计算机时间和MAC地址生成申请码,进行注册时对其时效进行一定的验证,比如它是不是超前或者严重滞后,这些都不被允许。生成的注册码包含注册码的生成时间、MAC地址、有效使用时间。注册时将其写入注册表。以后每次运行程序时将系统时间与两个时间进行比对,如果有效,将注册表内容的起始时间更改为当前系统时间,也就是总是记录下它的最后运行时间,这样应该没机会改系统时间
假如到期后删除注册表相关内容,再用最初得到的注册码进行注册,因为其生成时间过长而被拒绝注册,只能重新生成申请码获取注册码进行注册
当然,整个想法应该还是有一些问题可能会被钻空子,当整个思路人家清楚了之后,这也基本上是没办法的事,严格的说来就没有打不开的锁,不管他是不是有唯一的钥匙
 楼主| 发表于 2014-2-17 23:48:34 来自手机 | 显示全部楼层
ggdlove 发表于 2014-2-17 17:36
我有一个疑问,虽然将申请注册码的日期写入了注册表中,然后加入了使用期限。。。

但是,如果当使用期限 ...

你可以在另外一个隐藏的地方(比如可以写到系统文件里面)保存第一次的注册日期,通过与注册表日期进行对比,如果删除了,还是会提示注册信息的。
发表于 2014-2-17 17:36:11 | 显示全部楼层
我有一个疑问,虽然将申请注册码的日期写入了注册表中,然后加入了使用期限。。。

但是,如果当使用期限到了之后,我将注册表中的内容删除掉会怎样?
程序又认为是第一次使用的,重新开始计算使用期限?
发表于 2014-2-13 09:35:06 | 显示全部楼层
  1. (defun Macaddress(/ mac WMIobj serv lox sn)
  2.   (setq mac'())
  3.   (if (SETQ WMIobj(VLAX-CREATE-OBJECT "wbemScripting.SwbemLocator"))
  4.     (progn
  5.       (SETQ serv(VLAX-INVOKE WMIobj'ConnectServer".""\\root\\cimv2"""""""""128 nil)
  6.             lox(vlax-invoke serv'ExecQuery"Select * From Win32_NetworkAdapter "))
  7.       (vlax-for item lox
  8.         (if(and(=(vlax-get item'NetConnectionID)"本地连接")(not(member(setq sn(vlax-get item'MACAddress))mac)))
  9.           (setq mac(cons sn mac))))
  10.       (mapcar 'vlax-release-object (list lox serv WMIobj))))
  11.   (car(reverse mac)))

以上代码来源于网络
发表于 2014-2-12 16:47:25 | 显示全部楼层
本帖最后由 edata 于 2014-2-12 17:10 编辑

不知道为什么有时候用(open "c:\\dd.txt" "r")的路径会找不到文件 而用 (open "c:/dd.txt" "r") 可以。。
  1. (defun c:tt(/ f str str1)
  2.   (vl-load-com)
  3.   (command "shell" "ipconfig.exe /all >c:/mactest.txt")
  4.   (setq f (open "c:/mactest.txt" "r"))
  5.   (if f
  6.     (progn
  7.     (while (setq str(read-line f))
  8.       (if(wcmatch str "*Physical Address*")
  9.   (setq str1(substr str 45 17))
  10.   )
  11.       )  
  12.   (if str1 (alert (strcat "您的网卡MAC地址是:" str1)))
  13.     (close f)
  14.     )
  15.     (alert "\n未读取到mac:")
  16.     )  
  17.   (vl-file-delete "c:/mactest.txt")
  18.     (princ)
  19.   )
发表于 2014-2-12 13:02:45 | 显示全部楼层
用cmd即使无网络也可以,







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2014-2-12 12:56:12 来自手机 | 显示全部楼层
edata 发表于 2014-2-11 23:23
不知道你采用什么方式获取mac我觉得可以试试cmd命令,ipconfig /all >c:/txt然后读取,理论上可以的,

这个获取mac地址也是在论坛上找的,我之前测试的时候是可以用的,现在测试不能用了,具体待高手解决。还有一种想法是读取到mac地址后,保存到一个位置,下次直接调用,不用再用cmd的方式去读取了,这样只需要首次使用时联网即可,以后不需联网。根据测试只有联网时才可获得mac地址。
发表于 2014-2-12 12:54:03 | 显示全部楼层
先留个座,有时间看。。
发表于 2014-2-11 23:23:45 来自手机 | 显示全部楼层
llsheng_73 发表于 2014-2-11 10:30 楼主这个想法跟我去年底写的那个思路简直一模一样,也是每次获取申请码都不一样,但都可以得到相应的注册码, ...

不知道你采用什么方式获取mac我觉得可以试试cmd命令,ipconfig /all >c:/txt然后读取,理论上可以的,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-23 16:31 , Processed in 0.193189 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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