获取CPU序列号
研究了一些朋友的程序,写了一个获得CPU序列号的程序,在几个机子上测试还行。
;;获取CPU序列号.
(defun get_cpu_id (/ Vlist VObj lcom lExecQuery item)
(vl-load-com)
(setq Vlist '())
(if (setq VObj (vlax-create-object "wbemscripting.swbemlocator"))
(progn
(SETQ lcom (VLAX-INVOKE
VObj 'ConnectServer "."
"\\root\\cimv2""" ""
"" ""128 nil
) ;_ 结束VLAX-INVOKE
) ;_ 结束SETQ
(setq lExecQuery
(vlax-invoke
lcom
'ExecQuery
;;"Select * From Win32_BIOS"
"Select * from Win32_Processor"
) ;_ 结束vlax-invoke
) ;_ 结束setq
(vlax-for item lExecQuery
(setq Vlist (vlax-get item 'ProcessorId) ;_ 结束cons
) ;_ 结束setq
) ;_ 结束vlax-for
(vlax-release-object lExecQuery)
(vlax-release-object lcom)
(vlax-release-object Vobj)
)
)
Vlist
)
(setq sn (get_cpu_id)) <p>读cpu的论坛里早就有了,就是没有读硬盘物理序列号的,不知楼主能搞出来不</p><p>(defun CpuID (/ *wsc str)<br/> (setq str<br/> "Set objSWbemObject = GetObject(\"winmgmts:Win32_Processor.DeviceID='cpu0'\")<br/> ret = objSWbemObject.ProcessorId"<br/> )<br/> (setq *wsc (vlax-create-object "ScriptControl"))<br/> (vlax-put *wsc 'language "vbs")<br/> (vlax-invoke *wsc 'ExecuteStatement str)<br/> (vlax-invoke *wsc 'eval "ret")<br/>)</p> 楼上朋友提供的好像是VBS获取序列号的方法,也不错 <p>楼上的方法都没法读取CPU的<font color="#f73809">物理</font>序列号,不知哪有办法?</p> 高级用户发表于2009-11-7 20:41:00static/image/common/back.gif读cpu的论坛里早就有了,就是没有读硬盘物理序列号的,不知楼主能搞出来不
<p>;;n年前就發過<br/>;;但它與(dos_serialno )的值不同==>16進制<br/>;; By LUCAS(龍龍仔)<br/>;; FIND_SERIALNUMBER<br/>;; Returns of Drive SerialNumber<br/>;; Arguments :<br/>;; Drive = "C:" <br/>;; Notes: Requires ScrRun.dll.<br/>;; USAGE: (FIND_SERIALNUMBER "D:")</p><p>(defun FIND_SERIALNUMBER (DRIVE / FILSYS VAL)<br/> (setq FILSYS (vlax-create-object "Scripting.FileSystemObject"))<br/> (setq VAL (vlax-invoke FILSYS "GetDrive" DRIVE))<br/> (setq VAL (vl-catch-all-apply<br/> 'vlax-get<br/> (list VAL "SerialNumber")<br/> )<br/> )<br/> (vlax-release-object FILSYS)<br/> (if (vl-catch-all-error-p VAL)<br/> (setq VAL NIL)<br/> VAL<br/> )<br/>)</p> <p>第一个帖子程序有错:</p><p>_1$ <br/>; 错误: SWbemLocator: 无效参数</p><p>windows 2000 + acad2006</p><p></p> 龙仔的程序不是获得硬盘物理序列号,而获得的是格式化后自动生成的序列号,经测试好像也不对 tyxdd发表于2009-11-9 12:54:00static/image/common/back.gif第一个帖子程序有错:_1$ ; 错误: SWbemLocator: 无效参数windows 2000 + acad2006
<p>程序在XP下,多个机子上测试没问题,在2000下还没测试</p> 获取硬盘物理序列号在论坛上有:<a href="http://www.mjtd.com/Functions/ArticleShow.asp?ArticleID=54">http://www.mjtd.com/Functions/ArticleShow.asp?ArticleID=54</a> xianaihua发表于2009-11-9 13:09:00static/image/common/back.gif获取硬盘物理序列号在论坛上有:http://www.mjtd.com/Functions/ArticleShow.asp?ArticleID=54
<p></p><p>我用楼上的程序获得的数据是((<a href="file://./PHYSICALDRIVE0">\\.\PHYSICALDRIVE0</a> nil) (<a href="file://./PHYSICALDRIVE1">\\.\PHYSICALDRIVE1</a> nil) (<a href="file://./PHYSICALDRIVE2">\\.\PHYSICALDRIVE2</a>
<br/>nil) (<a href="file://./PHYSICALDRIVE3">\\.\PHYSICALDRIVE3</a> nil) (<a href="file://./PHYSICALDRIVE4">\\.\PHYSICALDRIVE4</a> nil)),并不是真正序列号</p><p>我用优化大师软件看的序列号是4MT10LL5</p><p> </p>