[求助][phyhar 获取硬盘物理序列号]又被WINXP搞了
;;在XP下测试通过(defun phyhar (/ ret serx objw lccon lox)
(vl-load-com)
(setq serx '())
(if (SETQ OBJW (VLAX-CREATE-OBJECT "wbemScripting.SwbemLocator"))
(progn
(SETQ lccon (VLAX-INVOKE
OBJW 'ConnectServer "."
"\\root\\cimv2" "" ""
"" "" 128 nil
)
)
(setq lox (vlax-invoke
lccon
'ExecQuery
"Select SerialNumber,Tag from Win32_PhysicalMedia"
)
)
(vlax-for item lox
(setq serx (cons (list (vlax-get item 'Tag)
(vlax-get
item
'SerialNumber
)
)
serx
)
)
)
(vlax-release-object lox)
(vlax-release-object lccon)
(vlax-release-object objW)
)
)
(princ (reverse serx))
(princ)
)
这几天我的WINXP又自动升级了一次,嘿,这个函数突然就不能用了,返回为空。我感觉有点怪,又将原来下载的DiskID32.exe运行了一次,嘿。。。居然它也无法识别了,也是返回空。
我的硬盘是西捷的IDE 160G 7200 。原来一直都能读出的。难道是WINXP将硬盘方面的函数变化了????
<p>是不是对script限制了??</p> 我又使用WMI中的Win32_DiskDrive来查看,其中Model信息为:"ST316002 1A SCSI Disk Device",难道被WINXP改为SCSI接口模式了???? 这个函数我从来没有用成功过(我不用XP),win2K下取不到序列号,返回nil 本帖最后由 作者 于 2007-2-23 20:33:51 编辑 <br /><br /> 小菜123发表于2007-2-23 15:55:00static/image/common/back.gif这个函数我从来没有用成功过(我不用XP),win2K下取不到序列号,返回nil
<p>Win2000 你修改试试:"Select * from CIM_PhysicalMedia"</p><p></p><p></p> <p>可能是你没有以管理员的身份log on?</p> <p>呵呵,肯定是管理员的权限呀</p><p> </p> <p>经测试,serial number都不能成功,但通过"Select * from win32_diskdrive",可以取得如下一些信息,如果用于加密,应该足够了<br/>(vlax-get item 'TotalCylinders) <br/>(vlax-get item 'TotalHeads) <br/>(vlax-get item 'TotalSectors) <br/>(vlax-get item 'TotalTracks) <br/>(vlax-get item 'Model)</p> 下载下来试一下
页:
[1]