WMI获取远程计算机信息的问题
请问各位高手:
我在MSDN上copy了一段获得远程计算机信息的代码。其中
hres = CoInitializeSecurity(
NULL,
-1, // COM authentication
NULL, // Authentication services
NULL, // Reserved
RPC_C_AUTHN_LEVEL_DEFAULT, // Default authentication
RPC_C_IMP_LEVEL_IMPERSONATE, // Default Impersonation
NULL, // Authentication info
EOAC_NONE, // Additional capabilities
NULL // Reserved
);
然后ConnectServer也连接正确。
下面设置权限,同样返回值正确正确
hres = CoSetProxyBlanket(
pSvc, // Indicates the proxy to set
RPC_C_AUTHN_WINNT, // RPC_C_AUTHN_xxx
RPC_C_AUTHZ_NONE, // RPC_C_AUTHZ_xxx
NULL, // Server principal name
RPC_C_AUTHN_LEVEL_CALL, // RPC_C_AUTHN_LEVEL_xxx
RPC_C_IMP_LEVEL_IMPERSONATE, // RPC_C_IMP_LEVEL_xxx
NULL, // client identity
EOAC_NONE // proxy capabilities
);
但是在执行下面这段时,hres 为 0x80041003,大概权限有问题
IEnumWbemClassObject* pEnumerator = NULL;
cout << "Step 6" <<endl;
hres = pSvc->ExecQuery(
bstr_t("WQL"),
bstr_t("Select * from Win32_OperatingSystem"),
WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
NULL,
&pEnumerator
);
搞了一整天了,不知道怎么回事,焦急万分。
ps:有目标机器的用户名和密码,用下面的vbs脚本测试成功
strComputer = "192.168.1.xxx"
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices = objSWbemLocator.ConnectServer _
(strComputer, "root\cimv2", _
"mydomain\myuser", "mypassword")
Set colProcessList = objSWbemServices.ExecQuery( _
"Select * From Win32_Process")
For Each objProcess in colProcessList
Wscript.Echo "Process Name: " & objProcess.Name
Next
小弟谢谢大家了