明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1405|回复: 11

硬件相关函数

[复制链接]
发表于 2022-4-24 03:10:45 | 显示全部楼层 |阅读模式
本帖最后由 尘缘一生 于 2022-4-24 20:25 编辑

根据本坛及搜集的代码:
我的理解是:
  1:网卡的MAC是独立唯一的。
  3:CPU不能保证唯一
  4:硬盘序号:不能保证唯一,格式化后会变化;而物理硬盘序号, LISP取不了,硬盘类型函数也不是唯一的,可以取字符串用。
  5:主板类型:不唯一,可以取字符串用。
        
没有测试,是不是WIN7,WIN10这些都成功否,CAD所有版本都成功否?有用过的,贴上结论。。


  1. ;|IP是在计算机里地址与MAC地址以MAC地址2表示的,IP是48位的[3]。
  2. MAC的长度为48位(6个字节),为12个16个典型地址数
  3. 代表前6位16的EA数字00-16-制造硬件网络的,它由电气与电子协会分配,
  4. 而代表后6位16的爆系列商号AE-3C-40的网络产品制造(如网卡)
  5. 只是不改变自己的MAC地址,MAC地址在世界是惟一的
  6. 用法:(setq str (wdy_mac)) "4C:CC:6A:2B:6E:6E"
  7. |;
  8. ( defun wdy_mac ( / macip )
  9.   ( setq WMI ( vlax-create-object "WbemScripting.SWbemLocator" ))
  10.   ( setq SVR ( vlax-invoke WMI 'ConnectServer ))
  11.   ( setq   str "Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE" )
  12.   ( setq MAC ( vlax-invoke SVR 'ExecQuery str ))
  13.   ( vlax-for i MAC ( setq s ( cons ( vlax-get i 'MACAddress ) S )))
  14.   ( setq macip ( car s ))
  15.   ( vlax-release-object MAC )
  16.   ( vlax-release-object SVR )
  17.   ( vlax-release-object WMI )
  18.   ;;马西普
  19. )

  20. ;;获取CPU序列号 (get_cpu_number) "BFEBFBFF000906E9" CPUID很多电脑都一样
  21. ( defun get_cpu_number ( / wmi meth1 meth2 cpu_id board_id )
  22.   ( setq wmi ( vlax-create-object "WbemScripting.SWbemLocator" ))
  23.   ( setq   meth1 ( vlax-invoke-method wmi 'ConnectServer nil nil nil nil nil nil nil ) )
  24.   ( setq   meth2 ( vlax-invoke-method meth1 'ExecQuery "Select * from Win32_Processor" nil nil nil ))
  25.   ( vlax-for n meth2
  26.     ;;(print (vlax-get n 'name)) ;"Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz"
  27.     ( setq cpu_id ( vlax-get n 'ProcessorId ))
  28.   )
  29.   ( foreach obj ( list wmi meth1 meth2 ) ( if   obj ( vlax-release-object obj )))
  30.   cpu_id
  31. )

  32. ;;获取主板序列号(get_motherboard_number) "G416195192"
  33. ( defun get_motherboard_number ( / wmi meth1 meth2 board_id )
  34.   ( setq wmi ( vlax-create-object "WbemScripting.SWbemLocator" ))
  35.   ( setq   meth1 ( vlax-invoke-method wmi 'ConnectServer nil nil nil nil nil nil nil ) )
  36.   ( setq   meth2 ( vlax-invoke-method meth1 'ExecQuery "Select * from Win32_BaseBoard" nil nil nil ))
  37.   ( vlax-for n meth2
  38.     ;; (princ(vlax-get n'name));“产品”
  39.     ( setq board_id ( vlax-get n 'SerialNumber ))
  40.   )
  41.   ( foreach obj ( list wmi meth1 meth2 ) ( if   obj ( vlax-release-object obj )))
  42.   board_id
  43. )

  44. ;---- 获取硬盘序列号------(find_serialnumber "C:")
  45. ( defun find_serialnumber (drive / filsys val )
  46.   ( setq filsys ( vlax-create-object "Scripting.FileSystemObject" ))
  47.   (setq val (vlax-invoke filsys “GetDrive”drive))
  48.   ( setq val ( vl-catch-all-apply ' vlax-get ( list val "SerialNumber" )))
  49.   ( vlax-release-object filsys )
  50.   (if(vl-catch-all-error-p val )  
  51.     ( setq val nil )
  52.     val
  53.   )
  54. )
  55. ;|  返回磁盘的类型
  56. 用法: (vldos-drivetype DriveLetter[STRING])
  57.   参数1: 盘符 例如: "C:"
  58. 说明:
  59.     返回磁盘的类型
  60. 返回值:
  61. [成功]: 磁盘的类型
  62. [失败]: NIL
  63. |;
  64. (Defun vldos-drivetype (drv / Fil drives drive typ rtn)
  65.   (setq rtn "INVALID")
  66.   (if
  67.     (and (setq
  68.     Fil (vlax-get-or-create-object "Scripting.FileSystemObject")
  69.   )
  70.   (equal :vlax-true (vlax-invoke-method Fil 'DriveExists drv))
  71.     )
  72.      (progn
  73.        (setq drives (vlax-get-property Fil 'Drives)
  74.       drive  (vlax-get-property drives 'Item drv)
  75.       typ    (vlax-get-property drive 'DriveType)
  76.       rtn    (nth typ
  77.     (list "UNKNOWN"     "REMOVABLE"
  78.           "FIXED"      "REMOTE"
  79.           "CDROM"      "RAMDISK"
  80.          )
  81.       )
  82.        )
  83.        (vlax-release-object drive)
  84.        (vlax-release-object drives)
  85.        (vlax-release-object Fil)
  86.      )
  87.   )
  88.   rtn
  89. )

评分

参与人数 1明经币 +1 收起 理由
1028695446 + 1 很给力!

查看全部评分

发表于 2022-5-2 12:08:18 | 显示全部楼层
本帖最后由 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下试验成功。别的系统没试验过。
 楼主| 发表于 2022-5-2 15:31:37 | 显示全部楼层
baitang36 发表于 2022-5-2 12:08
主板和内存序列号有些电脑是空的。
新cpu已经没有唯一的id,同一批产品是一样的。
网卡的mac可以通过修 ...

老哥,硬盘格式化没有变化吧?网卡MAC是,可谁会没事改这个呢?
 楼主| 发表于 2022-4-24 10:51:42 | 显示全部楼层
本帖最后由 尘缘一生 于 2022-4-24 12:51 编辑
e2002 发表于 2022-4-24 10:00
改成网络授权才能解决破解问题

网络授权,搞不到技术代码,希望本坛有整理一并发布。并且,没有网的地方就不行了,尤其是搞工程的,经常荒天野地。
发表于 2022-4-24 09:32:25 | 显示全部楼层
可能还是用加密锁才好吧
发表于 2022-4-24 10:00:05 | 显示全部楼层
改成网络授权才能解决破解问题
 楼主| 发表于 2022-4-24 10:53:03 | 显示全部楼层
ynhh 发表于 2022-4-24 09:32
可能还是用加密锁才好吧

软件正儿八经的开发商,大型的才值得。
发表于 2022-4-24 13:51:34 | 显示全部楼层
感谢各位大神分享,学习了!
发表于 2022-4-24 22:27:27 | 显示全部楼层
不错的源码 非常实用  多谢
发表于 2022-4-24 22:32:49 | 显示全部楼层
本帖最后由 f4800 于 2022-4-27 14:13 编辑

不错的源码 非常实用  多谢
发表于 2022-4-28 17:58:42 | 显示全部楼层
; 错误: 实参太少
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 10:12 , Processed in 0.204802 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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