VFP读取硬盘序列号

xilaianzxsc 2009-11-23 02:50:25
我想用VFP 9.0,读取硬盘的序列号:

下面一段代码,也是从网上找来的



&&VF中直接读取硬盘序号
oWMI=CREATEOBJECT("WbemScripting.SWbemLocator")
oLocal=oWMI.ConnectServer(".", "root\cimv2")
oHardware=oLocal.ExecQuery("SELECT * FROM Win32_PhysicalMedia")
FOR EACH object1 IN oHardware
lcHDID=SUBSTR(object1.Properties_('SerialNumber').VALUE,1,16)
EXIT
ENDFOR
?'硬盘序号:',lcHDID
RELEASE oWMI
RETURN

这段代码,在我的机上,运行正常,能够读取出硬盘的序列号.

但是:我将程序编译后,在没有VFP环境的机上运行,则不能读取出硬盘的序列号.
什么原因呢?
...全文
371 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zpc133 2010-12-18
  • 打赏
  • 举报
回复
我用
oWMI=CREATEOBJECT("WbemScripting.SWbemLocator")
oLocal=oWMI.ConnectServer(".", "root\cimv2")
oHardware=oLocal.ExecQuery("SELECT * FROM Win32_PhysicalMedia")
FOR EACH object1 IN oHardware
lcHDID=SUBSTR(object1.Properties_('SerialNumber').VALUE,1,16)
EXIT
ENDFOR
?'硬盘序号:',lcHDID
RELEASE oWMI
RETURN
读取的结果是:.NULL.
都市夜猫 2009-11-24
  • 打赏
  • 举报
回复
是否可读出硬盘出厂序列号与下列条件有关:
硬盘型号,硬盘接口类型,操作系统版本,读取代码使用的方法,运行时用户权限
以上任何一点都有可能对正确读取序列号产生影响

你使用的 WMI 方法在你的机器上运行正确,不能保证在其他机器上也同样正确
WMI 在很多情况下都不能正确获取硬盘的出厂物理序列号,例如,部分 SATA 接口硬盘
xilaianzxsc 2009-11-23
  • 打赏
  • 举报
回复
在有VFP 9.0环境的机上,运行结果是
硬盘序列号: GE1840RH3G

说明:程序可以读取硬盘序列号

在没有VFP 9.0环境的机上,运行结果是:
硬盘序列号: NOT
言下之义是:没有读取成功
十豆三 2009-11-23
  • 打赏
  • 举报
回复
是取出的空串,还是报错?
xilaianzxsc 2009-11-23
  • 打赏
  • 举报
回复
GdiPlus.dll
msvcr71.dll
vfp9r.dll
vfp9rchs.dll
在没有VFP环境的机上,在可执行文件所在目录,已放了上述4个文件

2,749

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧