明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 10130|回复: 25

[函数] 获取CPU序列号

  [复制链接]
发表于 2009-11-6 18:22 | 显示全部楼层 |阅读模式

研究了一些朋友的程序,写了一个获得CPU序列号的程序,在几个机子上测试还行。
[UseMoney=5][/UseMoney]
  1. ;;获取CPU序列号.
  2. (defun get_cpu_id (/ Vlist VObj lcom lExecQuery item)
  3.   (vl-load-com)
  4.   (setq Vlist '())
  5.   (if (setq VObj (vlax-create-object "wbemscripting.swbemlocator"))
  6.     (progn
  7.       (SETQ lcom (VLAX-INVOKE
  8.      VObj       'ConnectServer     "."
  9.      "\\root\\cimv2"  ""     ""
  10.      ""       ""  128     nil
  11.     ) ;_ 结束VLAX-INVOKE
  12.       ) ;_ 结束SETQ
  13.       (setq lExecQuery
  14.       (vlax-invoke
  15.         lcom
  16.         'ExecQuery
  17.         ;;"Select * From Win32_BIOS"
  18.         "Select * from Win32_Processor"
  19.       ) ;_ 结束vlax-invoke
  20.       ) ;_ 结束setq
  21.       (vlax-for item lExecQuery
  22. (setq Vlist (vlax-get item 'ProcessorId) ;_ 结束cons
  23. ) ;_ 结束setq
  24.       ) ;_ 结束vlax-for
  25.       (vlax-release-object lExecQuery)
  26.       (vlax-release-object lcom)
  27.       (vlax-release-object Vobj)
  28.     )
  29.   )
  30.   Vlist
  31. )
  32. (setq sn (get_cpu_id))

点评

WIN7 64位,ACAD2014 测试失败!  发表于 2019-7-11 11:08

评分

参与人数 1明经币 +1 收起 理由
mccad + 1 【好评】表扬一下

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2009-11-7 20:41 | 显示全部楼层

读cpu的论坛里早就有了,就是没有读硬盘物理序列号的,不知楼主能搞出来不

(defun CpuID (/ *wsc str)
  (setq str
    "Set objSWbemObject = GetObject(\"winmgmts:Win32_Processor.DeviceID='cpu0'\")
    ret = objSWbemObject.ProcessorId"
  )
  (setq *wsc (vlax-create-object "ScriptControl"))
  (vlax-put *wsc 'language "vbs")
  (vlax-invoke *wsc 'ExecuteStatement str)
  (vlax-invoke *wsc 'eval "ret")
)

点评

win7 64位 测试失败  发表于 2019-7-11 11:11
 楼主| 发表于 2009-11-7 21:01 | 显示全部楼层
楼上朋友提供的好像是VBS获取序列号的方法,也不错
发表于 2009-11-8 09:53 | 显示全部楼层

楼上的方法都没法读取CPU的物理序列号,不知哪有办法?

发表于 2009-11-9 12:29 | 显示全部楼层
高级用户发表于2009-11-7 20:41:00读cpu的论坛里早就有了,就是没有读硬盘物理序列号的,不知楼主能搞出来不

;;n年前就發過
;;但它與(dos_serialno [drive])的值不同==>16進制
;; By LUCAS(龍龍仔)
;; FIND_SERIALNUMBER
;; Returns of Drive SerialNumber
;; Arguments [Typ]:
;; Drive = "C:" [STR]
;; Notes: Requires ScrRun.dll.
;; USAGE: (FIND_SERIALNUMBER "D:")

(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
  )
)

点评

WIN10 64位可以吗?  发表于 2019-11-22 18:48
发表于 2009-11-9 12:54 | 显示全部楼层

第一个帖子程序有错:

_1$
; 错误: SWbemLocator: 无效参数

windows 2000 + acad2006

 楼主| 发表于 2009-11-9 13:03 | 显示全部楼层
龙仔的程序不是获得硬盘物理序列号,而获得的是格式化后自动生成的序列号,经测试好像也不对
 楼主| 发表于 2009-11-9 13:05 | 显示全部楼层
tyxdd发表于2009-11-9 12:54:00第一个帖子程序有错:_1$ ; 错误: SWbemLocator: 无效参数windows 2000 + acad2006

程序在XP下,多个机子上测试没问题,在2000下还没测试

 楼主| 发表于 2009-11-9 13:09 | 显示全部楼层
获取硬盘物理序列号在论坛上有:http://www.mjtd.com/Functions/ArticleShow.asp?ArticleID=54
发表于 2009-11-9 14:22 | 显示全部楼层
xianaihua发表于2009-11-9 13:09:00获取硬盘物理序列号在论坛上有:http://www.mjtd.com/Functions/ArticleShow.asp?ArticleID=54

我用楼上的程序获得的数据是((\\.\PHYSICALDRIVE0 nil) (\\.\PHYSICALDRIVE1 nil) (\\.\PHYSICALDRIVE2
nil) (\\.\PHYSICALDRIVE3 nil) (\\.\PHYSICALDRIVE4 nil)),并不是真正序列号

我用优化大师软件看的序列号是4MT10LL5

 

本帖子中包含更多资源

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

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-18 19:29 , Processed in 0.199882 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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