我正在尝试使用java和Jacob连接到远程计算机,以获取有关远程计算机的一些WMI信息。
对于localhost,我使用了下面的代码,它运行得很好。
String host = "localhost";
String connectStr = String.format("winmgmts:\\\\%s\\root\\CIMV2", host);
ActiveXComponent axWMI = new ActiveXComponent(connectStr);
// other code to get system information但是,如果我将本地主机更改为另一个ip/主机名,则会出现以下错误:
Exception in thread "main" com.jacob.com.ComFailException: Can't find moniker
at com.jacob.com.Dispatch.createInstanceNative(Native Method)
at com.jacob.com.Dispatch.<init>(Dispatch.java:99)
at com.jacob.activeX.ActiveXComponent.<init>(ActiveXComponent.java:58)
at easyticket.classes.WmiExtended.main(WmiExtended.java:28)抛出异常的行是:
ActiveXComponent axWMI = new ActiveXComponent(connectStr);编辑
我尝试使用WbemScripting传递用户名/密码
String host = "192.168.7.106";
ActiveXComponent axWMI = new ActiveXComponent("WbemScripting.SWbemLocator");
axWMI.invoke("ConnectServer", new Variant(host+",\"root\\cimv2\",\"username\",\"password\""));但我发现了一个错误:
Exception in thread "main" com.jacob.com.ComFailException: Invoke of: ConnectServer
Source: SWbemLocator
Description: The RPC server is unavailable. 我怎么能解决它?我如何传递用户名/密码,如果需要,域?
我正在使用Windows 8,并试图连接到win7 8/win7 7/winxp/win7 2003服务器计算机。
发布于 2013-07-18 09:44:31
经过一番搜索,我终于解决了我的问题.
这是密码,如果有人需要的话。
ActiveXComponent wmi = new ActiveXComponent("WbemScripting.SWbemLocator");
Variant variantParameters[] = new Variant[4];
variantParameters[0] = new Variant(_IPADDRESS);
variantParameters[1] = new Variant("root\\cimv2");
variantParameters[2] = new Variant("username");
variantParameters[3] = new Variant("password");
ActiveXComponent axWMI;
try
{
Variant conRet = wmi.invoke("ConnectServer", variantParameters);
axWMI = new ActiveXComponent(conRet.toDispatch());
}catch(ComFailException e)
{
axWMI = null;
}
if (axWMI == null)
return false;https://stackoverflow.com/questions/17573374
复制相似问题