明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5965|回复: 11

[求助]怎样写关于读取硬盘号的LISP函数

[复制链接]
发表于 2007-7-22 15:18 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2007-7-22 15:18:43 编辑

怎样写关于读取硬盘号的LISP函数


(Defun C:phyhar (/ code code Drives lstSer StrDrive SerialNumber)
(vl-load-com)
(setq code "C")
(setq FSO (vlax-create-object "Scripting.FileSystemObject")
Drives (vlax-get-property FSO "Drives")
)
(setq lstSer '())
;; iterator the HardDisk for the SerialNumber .
(repeat (vlax-get-property Drives "Count")
(setq StrDrive (strcat code ":"))
(if (and (setq Drive (vl-catch-all-apply 'vlax-get-property (list Drives "Item" StrDrive)))
(not (vl-catch-all-error-p Drive))
(vlax-property-available-p Drive "DriveType")
(equal (vlax-get-property Drive "DriveType") 2)
(vlax-property-available-p Drive "SerialNumber")
(setq SerialNumber (vlax-get-property Drive "SerialNumber"))
)
(setq SerialNumber (rtos SerialNumber 2 0)
lstSer (cons (list StrDrive SerialNumber) lstSer)
)
)
(setq code (chr (1+ (ascii code))))
)
;; relese object .
(vl-catch-all-apply 'vlax-release-object (list FSO))
(vl-catch-all-apply 'vlax-release-object (list Drives))
;; return the value .
(princ(reverse lstSer))
)

在CAD下加载输入PHYHAR命令
得到如结果:
((C: 819512431) (D: 1869301091) (E: 1908366405) (F: 1951228752))
现在我再想写个函数提取其中819512431这个硬盘号,怎么写呀
请高手多指点,十分感谢!急呀!我QQ:83856718

 

发表于 2019-4-25 16:31 | 显示全部楼层
zzl9105 发表于 2019-4-25 15:58
请问下,这个读取到的硬盘序号,电脑重装,其序号不会改变吧?谢谢

这种应该读的是盘符序列号,盘符格式化就变了。不是真正的硬盘硬件序列号。
发表于 2019-4-26 19:33 | 显示全部楼层
zzl9105 发表于 2019-4-25 15:57
请问下,这个读取到的硬盘序号,电脑重装,其序号不会改变吧?谢谢

重装系统,硬盘序号会变化。
发表于 2019-4-25 15:57 | 显示全部楼层

请问下,这个读取到的硬盘序号,电脑重装,其序号不会改变吧?谢谢
发表于 2007-7-23 14:05 | 显示全部楼层
(cadr (car (C:phyhar)))
发表于 2013-3-14 13:33 | 显示全部楼层
来学习一下~
发表于 2013-5-31 10:08 | 显示全部楼层
来学习一下~
发表于 2013-6-11 23:37 | 显示全部楼层
呵呵,最好高手来一起把硬盘号,主板号,CPU编号都读取了;作为软件授权码;
另外,关于软件加密,建议看看不死猫的帖子;
发表于 2013-7-21 23:41 | 显示全部楼层
楼主,再来个CPU的程序
发表于 2015-11-4 16:02 | 显示全部楼层
  1. (Defun C:phyhar (/ code code Drives lstSer StrDrive SerialNumber)
  2. (vl-load-com)
  3. (setq code "C")
  4. (setq FSO (vlax-create-object "Scripting.FileSystemObject")
  5. Drives (vlax-get-property FSO "Drives")
  6. )
  7. (setq lstSer '())
  8. ;; iterator the HardDisk for the SerialNumber .
  9. (repeat (vlax-get-property Drives "Count")
  10. (setq StrDrive (strcat code ":"))
  11. (if (and (setq Drive (vl-catch-all-apply 'vlax-get-property (list Drives "Item" StrDrive)))
  12. (not (vl-catch-all-error-p Drive))
  13. (vlax-property-available-p Drive "DriveType")
  14. (equal (vlax-get-property Drive "DriveType") 2)
  15. (vlax-property-available-p Drive "SerialNumber")
  16. (setq SerialNumber (vlax-get-property Drive "SerialNumber"))
  17. )
  18. (setq SerialNumber (rtos SerialNumber 2 0)
  19. lstSer (cons (list StrDrive SerialNumber) lstSer)
  20. )
  21. )
  22. (setq code (chr (1+ (ascii code))))
  23. )
  24. ;; relese object . reverse =>表反向排序
  25. (vl-catch-all-apply 'vlax-release-object (list FSO))
  26. (vl-catch-all-apply 'vlax-release-object (list Drives))
  27. ;; return the value .
  28. (setq lstSer (reverse lstSer))
  29. (prompt "\n 全部硬盘序号: ")
  30. (princ  lstSer)
  31. (prompt "\n C盘序号: ")
  32. (setq code1 (cadr (car lstSer)) )
  33. (princ code1)
  34. (princ "\n " )
  35. (prompt "\n C盘序号: ")
  36. (setq code2 (atof (cadr (car lstSer))) )
  37. (princ code2)
  38. (princ )
  39. )
发表于 2015-11-5 08:13 | 显示全部楼层
多谢分享了!
发表于 2019-4-25 15:58 | 显示全部楼层
请问下,这个读取到的硬盘序号,电脑重装,其序号不会改变吧?谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-29 22:21 , Processed in 0.195380 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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