java - jinterop Win32_Process 创建

标签 java wmi win32-process j-interop

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

wmic /NODE:192.168.0.195 /USER:Test /PASSWORD:password123 process call create "calc.exe"

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

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

我不断收到异常

Caught Throwable: org.jinterop.dcom.common.JIException: Unknown name. [0x80020006]
org.jinterop.dcom.common.JIException: Unknown name. [0x80020006]

知道可能出了什么问题吗?提前致谢!

最佳答案

这是解决方案...

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

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

关于java - jinterop Win32_Process 创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14991736/

相关文章:

windows - 获取其中所有硬盘和分区的序号

windows - VBScript中文件属性(元数据)的所有详细信息

Windows:如何使用 CreateProcess 停止缓冲重定向的 Stdout

适用于 Audacity 的 Python pywinauto

python - 如何使用 win32 在 Windows 中创建窗口焦点监听器

java - 如何从 Sqlite 数据库的多列中搜索字符串并在 ListView 中返回结果?

java - Apache Maven 安装问题

java - 存储单词而不是行

java - 检查 args[0] 是否不包含元素?

.net - 检查 WMI ManagementObject 查询是否为 Nothing 而不是使用 Try/Catch?