[求助]怎样写关于读取硬盘号的LISP函数
本帖最后由 作者 于 2007-7-22 15:18:43 编辑 <br /><br /> <p>怎样写关于读取硬盘号的LISP函数</p><p><br/><font face="宋体" size="2">(Defun C:phyhar (/ code code Drives lstSer StrDrive SerialNumber)<br/>(vl-load-com)<br/>(setq code "C")<br/>(setq FSO (vlax-create-object "Scripting.FileSystemObject")<br/>Drives (vlax-get-property FSO "Drives")<br/>)<br/>(setq lstSer '())<br/>;; iterator the HardDisk for the SerialNumber .<br/>(repeat (vlax-get-property Drives "Count")<br/>(setq StrDrive (strcat code ":"))<br/>(if (and (setq Drive (vl-catch-all-apply 'vlax-get-property (list Drives "Item" StrDrive)))<br/>(not (vl-catch-all-error-p Drive))<br/>(vlax-property-available-p Drive "DriveType")<br/>(equal (vlax-get-property Drive "DriveType") 2)<br/>(vlax-property-available-p Drive "SerialNumber")<br/>(setq SerialNumber (vlax-get-property Drive "SerialNumber"))<br/>)<br/>(setq SerialNumber (rtos SerialNumber 2 0)<br/>lstSer (cons (list StrDrive SerialNumber) lstSer)<br/>)<br/>)<br/>(setq code (chr (1+ (ascii code))))<br/>)<br/>;; relese object .<br/>(vl-catch-all-apply 'vlax-release-object (list FSO))<br/>(vl-catch-all-apply 'vlax-release-object (list Drives))<br/>;; return the value .<br/>(princ(reverse lstSer))<br/>)<br/><br/>在CAD下加载输入PHYHAR命令<br/>得到如结果:<br/>((C: 819512431) (D: 1869301091) (E: 1908366405) (F: 1951228752))<br/>现在我再想写个函数提取其中819512431这个硬盘号,怎么写呀<br/>请高手多指点,十分感谢!急呀!我QQ:83856718</font><br/> </p> zzl9105 发表于 2019-4-25 15:58请问下,这个读取到的硬盘序号,电脑重装,其序号不会改变吧?谢谢
这种应该读的是盘符序列号,盘符格式化就变了。不是真正的硬盘硬件序列号。 zzl9105 发表于 2019-4-25 15:57
请问下,这个读取到的硬盘序号,电脑重装,其序号不会改变吧?谢谢
重装系统,硬盘序号会变化。 skg123 发表于 2015-11-4 16:02
请问下,这个读取到的硬盘序号,电脑重装,其序号不会改变吧?谢谢 (cadr (car (C:phyhar))) 来学习一下~ 来学习一下~ 呵呵,最好高手来一起把硬盘号,主板号,CPU编号都读取了;作为软件授权码;
另外,关于软件加密,建议看看不死猫的帖子;
楼主,再来个CPU的程序 (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 . reverse =>表反向排序
(vl-catch-all-apply 'vlax-release-object (list FSO))
(vl-catch-all-apply 'vlax-release-object (list Drives))
;; return the value .
(setq lstSer (reverse lstSer))
(prompt "\n 全部硬盘序号: ")
(princlstSer)
(prompt "\n C盘序号: ")
(setq code1 (cadr (car lstSer)) )
(princ code1)
(princ "\n " )
(prompt "\n C盘序号: ")
(setq code2 (atof (cadr (car lstSer))) )
(princ code2)
(princ )
)
多谢分享了! 请问下,这个读取到的硬盘序号,电脑重装,其序号不会改变吧?谢谢
页:
[1]
2