标题:oLocal=oWMI.ConnectServer(IP_LOC, "root\cimv2")不能运行
只看楼主
zfgg
Rank: 1
等 级:新手上路
帖 子:28
专家分:3
注 册:2008-12-15
 问题点数:0 回复次数:1 
oLocal=oWMI.ConnectServer(IP_LOC, "root\cimv2")不能运行
专家:您好!
 我用WMI方法,用下列语句,
oLocal=oWMI.ConnectServer(".", "root\cimv2")
在Win XP,win 7上试过,能读出本地机的数据。用下列语句读取指定的IP机上的硬件数据,
oLocal=oWMI.ConnectServer(IP_LOC, "root\cimv2")
出现不一样的情况:
1.笔记本上装的WIN 7,SQL SERVER 2005。运行时正常,在指定的IP情况下,能读出本机、远程机上的硬件数据。
2.将同样的程序在另外台式机(XP,WIN 7)上运行,程序运行到 oLocal=oWMI.ConnectServer(IP_LOC, "root\cimv2")这里会出错,信息是:
“OLE IDispath Exception code 0 from SWbemlocator:拒绝访问”。
3.笔记本上的防火墙是“启用”,台式电脑防火墙是关的,“启用”后,电脑重启也不行。WMI的服务是启动(手动)的,不同的是描述,XP是“从WMI Hiperf...”,win 7是:“Provides performance...”

请专家能给以解决为盼!谢谢!
搜索更多相关主题的帖子: 运行 win XP 数据 指定 
2019-04-09 16:57
zfgg
Rank: 1
等 级:新手上路
帖 子:28
专家分:3
注 册:2008-12-15
得分:0 
以下是引用zfgg在2019-4-9 16:57:10的发言:

专家:您好!
 我用WMI方法,用下列语句,
oLocal=oWMI.ConnectServer(".", "root\cimv2")
在Win XP,win 7上试过,能读出本地机的数据。用下列语句读取指定的IP机上的硬件数据,
oLocal=oWMI.ConnectServer(IP_LOC, "root\cimv2")
出现不一样的情况:
1.笔记本上装的WIN 7,SQL SERVER 2005。运行时正常,在指定的IP情况下,能读出本机、远程机上的硬件数据。
2.将同样的程序在另外台式机(XP,WIN 7)上运行,程序运行到 oLocal=oWMI.ConnectServer(IP_LOC, "root\cimv2")这里会出错,信息是:
“OLE IDispath Exception code 0 from SWbemlocator:拒绝访问”。
3.笔记本上的防火墙是“启用”,台式电脑防火墙是关的,“启用”后,电脑重启也不行。WMI的服务是启动(手动)的,不同的是描述,XP是“从WMI Hiperf...”,win 7是:“Provides performance...”

请专家能给以解决为盼!谢谢!


引用的原程序如下:

十豆三老师的回复!
https://bbs.


在VFP中通过Windows WMI获取CPU序号、硬盘序号及网卡MAC的方法

-------------------------------------------------------------------

在很多论坛上一搜索,发现目前大部分VFP获取本地硬盘、CPU及网卡的“唯一ID”都使用了外部的DLL或者是其他的方法,特查阅了很多的资料,成功通过Windows WMI来获取这些我们需要取的硬件信息,其方法如下:
 如果是WIN98系统,将需要从 MSDN 下载并安 WMI


 LOCAL oWMI AS OBJECT,oLocal AS OBJECT,oHARDWARE AS OBJECT,object1 AS OBJECT,lcCPUID,LcMAC,lcHDID,lcSerial
 oWMI=CREATEOBJECT("WbemScripting.SWbemLocator")
 oLocal=oWMI.ConnectServer(".", "root\cimv2")

 oHARDWARE=oLocal.ExecQuery("SELECT * FROM Win32_Processor")
 FOR EACH object1 IN oHARDWARE
 lcCPUID=object1.Properties_('ProcessorId').VALUE
 EXIT
 ENDFOR

 oHARDWARE=oLocal.ExecQuery("SELECT * FROM Win32_PhysicalMedia")
 FOR EACH object1 IN oHARDWARE
 lcHDID=object1.Properties_('SerialNumber').VALUE
 EXIT
 ENDFOR

 oHARDWARE=oLocal.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration Where IPEnabled=1")
 FOR EACH object1 IN oHARDWARE
 LcMAC=object1.Properties_('MACAddress').VALUE
 EXIT
 ENDFOR
 ?'CPU序号:',lcCPUID
 ?'硬盘序号:',lcHDID
 ?'网卡MAC地址:',LcMAC


以上所获取的都只是第一个硬件的“唯一ID”,如果想要获取更详尽的,稍微修改For...Next之间的语句即可!
2019-04-10 11:07



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-494038-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.735614 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved