【问题标题】:Jacob connect to Remote Computer for WMI supportJacob 连接到远程计算机以获得 WMI 支持
【发布时间】:2013-07-08 13:03:35
【问题描述】:

我正在尝试使用 java 和 Jacob 连接到远程计算机,以获取有关远程计算机的一些 WMI 信息。

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

    String host = "localhost";
    String connectStr = String.format("winmgmts:\\\\%s\\root\\CIMV2", host);

    ActiveXComponent axWMI = new ActiveXComponent(connectStr);
    // other code to get system information

但如果我将 localhost 更改为另一个 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,我正在尝试连接到 win8/win7/winxp/win2003server 计算机。

【问题讨论】:

    标签: java wmi jacob


    【解决方案1】:

    经过一番搜索,我设法解决了我的问题......

    如果有人需要,这里是代码。

    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;
    

    【讨论】:

    • 嗨,Marcx,请告诉我如何使用 JACOB 远程读写 COM 接口?
    • 那么 winmgmts:\\\\%s\\root\\CIMV2 和 WbemScripting.SWbemLocator 有什么区别
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    相关资源
    最近更新 更多