以下是引用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之间的语句即可!