雅各布连接到远程计算机的WMI支持

问题描述:

我试图连接到远程计算机使用java和雅各布,以获得有关远程计算机的一些WMI信息。雅各布连接到远程计算机的WMI支持

对于本地主机我使用下面的代码,它工作正常。

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); 

编辑

我尝试通过使用传递用户名/密码

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,我试图连接到win8/win7/winxp/win2003server电脑。

某些搜索我设法解决我的问题后...

下面的代码,如果有人需要它。

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;