硬件相关函数
本帖最后由 尘缘一生 于 2022-4-24 20:25 编辑根据本坛及搜集的代码:
我的理解是:
1:网卡的MAC是独立唯一的。
3:CPU不能保证唯一
4:硬盘序号:不能保证唯一,格式化后会变化;而物理硬盘序号, LISP取不了,硬盘类型函数也不是唯一的,可以取字符串用。
5:主板类型:不唯一,可以取字符串用。
没有测试,是不是WIN7,WIN10这些都成功否,CAD所有版本都成功否?有用过的,贴上结论。。
;|IP是在计算机里地址与MAC地址以MAC地址2表示的,IP是48位的。
MAC的长度为48位(6个字节),为12个16个典型地址数
代表前6位16的EA数字00-16-制造硬件网络的,它由电气与电子协会分配,
而代表后6位16的爆系列商号AE-3C-40的网络产品制造(如网卡)
只是不改变自己的MAC地址,MAC地址在世界是惟一的
用法:(setq str (wdy_mac)) "4C:CC:6A:2B:6E:6E"
|;
( defun wdy_mac ( / macip )
( setq WMI ( vlax-create-object "WbemScripting.SWbemLocator" ))
( setq SVR ( vlax-invoke WMI 'ConnectServer ))
( setq str "Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE" )
( setq MAC ( vlax-invoke SVR 'ExecQuery str ))
( vlax-for i MAC ( setq s ( cons ( vlax-get i 'MACAddress ) S )))
( setq macip ( car s ))
( vlax-release-object MAC )
( vlax-release-object SVR )
( vlax-release-object WMI )
;;马西普
)
;;获取CPU序列号 (get_cpu_number) "BFEBFBFF000906E9" CPUID很多电脑都一样
( defun get_cpu_number ( / wmi meth1 meth2 cpu_id board_id )
( setq wmi ( vlax-create-object "WbemScripting.SWbemLocator" ))
( setq meth1 ( vlax-invoke-method wmi 'ConnectServer nil nil nil nil nil nil nil ) )
( setq meth2 ( vlax-invoke-method meth1 'ExecQuery "Select * from Win32_Processor" nil nil nil ))
( vlax-for n meth2
;;(print (vlax-get n 'name)) ;"Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz"
( setq cpu_id ( vlax-get n 'ProcessorId ))
)
( foreach obj ( list wmi meth1 meth2 ) ( if obj ( vlax-release-object obj )))
cpu_id
)
;;获取主板序列号(get_motherboard_number) "G416195192"
( defun get_motherboard_number ( / wmi meth1 meth2 board_id )
( setq wmi ( vlax-create-object "WbemScripting.SWbemLocator" ))
( setq meth1 ( vlax-invoke-method wmi 'ConnectServer nil nil nil nil nil nil nil ) )
( setq meth2 ( vlax-invoke-method meth1 'ExecQuery "Select * from Win32_BaseBoard" nil nil nil ))
( vlax-for n meth2
;; (princ(vlax-get n'name));“产品”
( setq board_id ( vlax-get n 'SerialNumber ))
)
( foreach obj ( list wmi meth1 meth2 ) ( if obj ( vlax-release-object obj )))
board_id
)
;---- 获取硬盘序列号------(find_serialnumber "C:")
( defun find_serialnumber (drive / filsys val )
( setq filsys ( vlax-create-object "Scripting.FileSystemObject" ))
(setq val (vlax-invoke filsys “GetDrive”drive))
( setq val ( vl-catch-all-apply ' vlax-get ( list val "SerialNumber" )))
( vlax-release-object filsys )
(if(vl-catch-all-error-p val )
( setq val nil )
val
)
)
;|返回磁盘的类型
用法: (vldos-drivetype DriveLetter)
参数1: 盘符 例如: "C:"
说明:
返回磁盘的类型
返回值:
[成功]: 磁盘的类型
[失败]: NIL
|;
(Defun vldos-drivetype (drv / Fil drives drive typ rtn)
(setq rtn "INVALID")
(if
(and (setq
Fil (vlax-get-or-create-object "Scripting.FileSystemObject")
)
(equal :vlax-true (vlax-invoke-method Fil 'DriveExists drv))
)
(progn
(setq drives (vlax-get-property Fil 'Drives)
drive(vlax-get-property drives 'Item drv)
typ (vlax-get-property drive 'DriveType)
rtn (nth typ
(list "UNKNOWN" "REMOVABLE"
"FIXED" "REMOTE"
"CDROM" "RAMDISK"
)
)
)
(vlax-release-object drive)
(vlax-release-object drives)
(vlax-release-object Fil)
)
)
rtn
) 本帖最后由 baitang36 于 2022-5-2 12:15 编辑
主板和内存序列号有些电脑是空的。
新cpu已经没有唯一的id,同一批产品是一样的。
网卡的mac可以通过修改注册表来改变它,虚拟机也有虚拟的mac,不可靠。
简单加密用硬盘的软件序列号就行,值钱的软件建议用专业加密锁,我研究过用lisp读写专业锁。
获取硬盘物理序列号的程序:
(defun HDSerial (/ wmi srv drv ser)
(SETQ SER NIL)
(vl-catch-all-apply
(function
(lambda ()
(if
(setq wmi (vlax-create-object "WbemScripting.SWbemLocator")
srv (vlax-invoke
wmi 'connectserver nil nil
nil nil nil nil nil
nil
) ;_ vlax-invoke
drv (vlax-invoke
srv
'execquery
"Select SerialNumber from Win32_DiskDrive"
) ;_ vlax-invoke
) ;_ setq
(vlax-for item drv
(vlax-for prop (vlax-get item 'Properties_)
(if (eq "SERIALNUMBER" (strcase (vlax-get prop 'name)))
(setq ser
(CONS (vl-string-trim " " (vlax-get prop 'value))
SER
) ;_ CONS
) ;_ setq
) ;_ if
) ;_ vlax-for
) ;_ vlax-for
) ;_ if
) ;_ lambda
) ;_ function
) ;_ vl-catch-all-apply
(if drv
(vlax-release-object drv)
) ;_ if
(if srv
(vlax-release-object srv)
) ;_ if
(if wmi
(vlax-release-object wmi)
) ;_ if
(REVERSE ser)
) ;_ defun
返回一个表,所有硬盘的物理序列号。在win10下试验成功。别的系统没试验过。
baitang36 发表于 2022-5-2 12:08
主板和内存序列号有些电脑是空的。
新cpu已经没有唯一的id,同一批产品是一样的。
网卡的mac可以通过修 ...
老哥,硬盘格式化没有变化吧?网卡MAC是,可谁会没事改这个呢? 本帖最后由 尘缘一生 于 2022-4-24 12:51 编辑
e2002 发表于 2022-4-24 10:00
改成网络授权才能解决破解问题
网络授权,搞不到技术代码,希望本坛有整理一并发布。并且,没有网的地方就不行了,尤其是搞工程的,经常荒天野地。 可能还是用加密锁才好吧 改成网络授权才能解决破解问题
ynhh 发表于 2022-4-24 09:32
可能还是用加密锁才好吧
软件正儿八经的开发商,大型的才值得。 感谢各位大神分享,学习了! 不错的源码 非常实用多谢 本帖最后由 f4800 于 2022-4-27 14:13 编辑
不错的源码 非常实用多谢 ; 错误: 实参太少
页:
[1]
2