使用进程生成器传递密码不适用于“net use”命令

问题描述 投票:0回答:2

我试图通过使用进程生成器调用“net use”命令来运行它。当我使用 PrintWriter 将密码传递给 OutputStream 时,它失败并出现以下错误: 发生系统错误1219。 不允许同一用户使用多个用户名多次连接到服务器或共享资源。断开之前与服务器或共享资源的所有连接,然后重试。

我已经通过手动运行检查了用户名、密码和命令。工作正常

代码片段:

ProcessBuilder pb = new ProcessBuilder("net","use","\\\\<SERVERNAME>\\<SharedLocation>","/USER:<username>","*");
Process p = pb.start();
OutputStream out = p.getOutputStream();
PrintWriter writer = new PrintWriter(out);      
writer.println("<pwd>".toCharArray());
int exitCode = p.waitFor();     
System.out.println("Exit Code :"+ exitCode);
java command-line processbuilder net-use
2个回答
0
投票

一些建议:

  • 运行
    net use * /delete /y
    作为第一步,在开始之前删除所有连接。您还可以尝试删除特定连接。
  • 使用纯 Java 解决方案而不是
    net use
    - 请参阅 https://stackoverflow.com/a/208896/4803

0
投票

我刚刚在 stackoverflow 上注册了,因为我遇到了完全相同的问题,并在花费了数小时的反复试验后解决了它。

我的解决方案是在用户名之前添加一个“\”(在java代码中分别为“\”)。

这对我有用:

String[] cmdCommand = new String[]{"net", "use", "\\\\" + pcSystem.getIpAddress() + "\\c$", "/user:\\" + pcSystem.getUsername(), pcSystem.getPassword()};
Process proc = new ProcessBuilder(cmdCommand).start();
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.