Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JCIFS与远程Windows实例通信时获取nca_proto_error/DCERPC_FAULT_proto_error_Java_Rpc_Psexec_Jcifs - Fatal编程技术网

Java 使用JCIFS与远程Windows实例通信时获取nca_proto_error/DCERPC_FAULT_proto_error

Java 使用JCIFS与远程Windows实例通信时获取nca_proto_error/DCERPC_FAULT_proto_error,java,rpc,psexec,jcifs,Java,Rpc,Psexec,Jcifs,我目前正在尝试做一些类似于PSExec的事情,但完全是用Java实现的。 我认为我的问题与我正在做什么没有直接关系,而是如何做。 目前,我正在尝试实现远程创建和启动服务 为此,我使用了midlc工具(版本0.6.1),并使用CreateService和DeleteService调用扩展了svcctl.idl。之后,我使用midlc生成代码,用于jcifs(-t jcifs)。然后,我创建了一个测试程序,使用该类和jcifs与远程windows计算机通信 下面是代码: rpc.po

我目前正在尝试做一些类似于PSExec的事情,但完全是用Java实现的。 我认为我的问题与我正在做什么没有直接关系,而是如何做。 目前,我正在尝试实现远程创建和启动服务

为此,我使用了midlc工具(版本0.6.1),并使用CreateService和DeleteService调用扩展了svcctl.idl。之后,我使用midlc生成代码,用于jcifs(-t jcifs)。然后,我创建了一个测试程序,使用该类和jcifs与远程windows计算机通信

下面是代码:

        rpc.policy_handle scHandle = new rpc.policy_handle();
        SvcCtl.OpenSCManager openSCManagerRpc = new SvcCtl.OpenSCManager(host, null, 0x0001 | 0x0002, scHandle);

        // Connection-oriented DCE/RPC over SMB named pipes.
        DcerpcHandle handle = DcerpcHandle.getHandle("ncacn_np:" + host + "[\\PIPE\\svcctl]",
                ConcurrentNtlmAuthenticator.getInstance().getNtlmPasswordAuthentication());
        try {
            handle.sendrecv(openSCManagerRpc);
            if (openSCManagerRpc.retval != 0) {
                throw new SmbException(openSCManagerRpc.retval, true);
            }
        } catch(Exception e) {
            e.printStackTrace();
        } finally {
            try {
                handle.close();
            } catch(IOException ioe) {
                ioe.printStackTrace();
            }
        }
不幸的是,我得到了一个DCERPC_FAULT_PROTO_错误别名nca_PROTO_错误别名0x1c01000b

所以我的简单问题是。。。我做错了什么

克里斯

好的

我解决了这个问题。问题是,请求类型未初始化,因此设置为-1,这不是有效值。通过手动设置,我能够实际执行我尝试执行的任务:

克里斯