Передача пароля с помощью компоновщика процессов, не работающего для команды "net use"

Я пытаюсь запустить команду "net use", вызвав ее с помощью компоновщика процессов. Когда я передаю пароль в OutputStream с помощью PrintWriter, происходит сбой со следующей ошибкой: Произошла системная ошибка 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);

2 ответа

Пара предложений:

  • Бежать net use * /delete /y в качестве первого шага, чтобы удалить все соединения, прежде чем начать. Вы также можете попробовать удалить определенные соединения.
  • Используйте чистое решение Java вместо net use - см. /questions/29366753/kak-ya-mogu-smontirovat-disk-windows-v-java/29366757#29366757

Я буквально только что зарегистрировался на stackoverflow, потому что у меня была точно такая же проблема, и я решил ее, потратив часы и часы проб и ошибок.

Решением для меня было добавление "\" (соответственно "\\" в Java-коде) прямо перед именем пользователя.

Вот что сработало для меня:

      String[] cmdCommand = new String[]{"net", "use", "\\\\" + pcSystem.getIpAddress() + "\\c$", "/user:\\" + pcSystem.getUsername(), pcSystem.getPassword()};
Process proc = new ProcessBuilder(cmdCommand).start();
Другие вопросы по тегам