我试图通过使用进程生成器调用“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);
一些建议:
net use * /delete /y
作为第一步,在开始之前删除所有连接。您还可以尝试删除特定连接。net use
- 请参阅 https://stackoverflow.com/a/208896/4803我刚刚在 stackoverflow 上注册了,因为我遇到了完全相同的问题,并在花费了数小时的反复试验后解决了它。
我的解决方案是在用户名之前添加一个“\”(在java代码中分别为“\”)。
这对我有用:
String[] cmdCommand = new String[]{"net", "use", "\\\\" + pcSystem.getIpAddress() + "\\c$", "/user:\\" + pcSystem.getUsername(), pcSystem.getPassword()};
Process proc = new ProcessBuilder(cmdCommand).start();