首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jinterop Win32_Process创建

jinterop Win32_Process创建
EN

Stack Overflow用户
提问于 2013-02-21 07:17:00
回答 1查看 1.1K关注 0票数 2

我正在尝试使用j-interop来实现下面的wmic命令。

代码语言:javascript
运行
复制
wmic /NODE:192.168.0.195 /USER:Test /PASSWORD:password123 process call create "calc.exe"

在我的方法中,我的代码是这样写的。我还有另外两个方法,这两个方法创建会话并连接到WMI服务,以便处理该部分。

代码语言:javascript
运行
复制
public void wmiExecute() throws JIException {

    // Obtain Win32_Process and narrow it as IJIDispatch
    Object[] params = new Object[] {
        new JIString("Win32_Process"),
        new Integer(0),
        JIVariant.OPTIONAL_PARAM()
    };
    JIVariant[] servicesSet = this._wbemServices.callMethodA("InstancesOf", params);
    IJIDispatch wbemObjectSet = (IJIDispatch) JIObjectFactory.narrowObject(servicesSet[0].getObjectAsComObject());

    params = new Object[] {
            "calc.exe",
             JIVariant.OPTIONAL_PARAM(),
             JIVariant.OPTIONAL_PARAM(),
             new Integer(0),
    };
    wbemObjectSet.callMethodA("Create", params);
}

我不断地得到一个例外

代码语言:javascript
运行
复制
Caught Throwable: org.jinterop.dcom.common.JIException: Unknown name. [0x80020006]
org.jinterop.dcom.common.JIException: Unknown name. [0x80020006]

你知道会出什么问题吗?提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-27 00:31:19

这就是解决方案。

您不应该使用InstanceOf来获取Win32_Process,因为您将只获取当前正在运行的进程的列表。相反,您应该使用"Get“来获取默认的Win32_Process。

代码语言:javascript
运行
复制
public void wmiExecute() throws JIException {

    // Obtain Win32_Process and narrow it as IJIDispatch
    Object[] params = new Object[] {
        new JIString("Win32_Process"),
        JIVariant.OPTIONAL_PARAM(),
        JIVariant.OPTIONAL_PARAM()
    };

    // Obtain the default Win32_Process
    JIVariant[] service = this._wbemServices.callMethodA("Get", params);

    // Convert it to a IJIDispatch object
    IJIDispatch wbemObject = (IJIDispatch) JIObjectFactory.narrowObject(service[0].getObjectAsComObject());

    // Create input params
    Object[] paramsCalc = new Object[] {
             new JIString("calc.exe"),
             JIVariant.OPTIONAL_PARAM(),
             JIVariant.OPTIONAL_PARAM()
    };

    // Create the calculator process
    JIVariant[] results = wbemObject.callMethodA("Create", paramsCalc);
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14991736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档