Как мне подключить удаленный компьютер Windows с помощью Java?

#java #remote-access

#java #удаленный доступ

Вопрос:

Я хочу подключиться к удаленному компьютеру с рабочим столом Windows с локального компьютера с помощью программы Java.

Я должен проверить место на диске и несколько других служб на удаленной машине.

Ответ №1:

Подключение к удаленному рабочему столу

Java

 // Creating credentials
Process p = Runtime.getRuntime().exec("cmdkey /generic:"   ip  
                                      " /user:"   userName  
                                      " /pass:"   password);
p.destroy();

Runtime.getRuntime().exec("mstsc /v: "   ip   " /f /console");

Thread.sleep(2*60*1000); // Minutes seconds milliseconds
// Deleting credentials
Process p1 = Runtime.getRuntime().exec("cmdkey /delete:"   ip);
p1.destroy();
  
  • С помощью cmdkey мы можем создать или удалить наши учетные данные, относящиеся к текущему пользователю.

Командная строка

 C:> cmdkey /generic:192.168.0.11 /user:XXXXX /pass:XXXXX
     CMDKEY: Credential added successfully.
C:> mstsc.exe /v:192.168.0.11 /w:800 /h:600
     Connecting to Remote Desktop.
C:> cmdkey /delete:192.168.0.11
     CMDKEY: Credential deleted successfully.
  

Комментарии:

1. Привет, Питер, есть ли у нас какое-либо решение, в котором политика аутентификации сервера не разрешает вход для сохраненных учетных данных.

Ответ №2:

Вы также могли бы рассмотреть решение с RDP на Java.

Существует множество решений. Ознакомьтесь с ними при сравнении проектов Java Remote Desktop.

Комментарии:

1. Это близко к ответу только для ссылок. Как насчет того, чтобы оценить некоторые из них и вернуться с описанием и рекомендацией одного (или нескольких) из них?

Ответ №3:

Ответ зависит от того, какую операционную систему использует ваш локальный компьютер (хост) для подключения к вашему удаленному целевому окну Windows.

Если это окно на базе Unix, я бы рекомендовал использовать библиотеку с открытым исходным кодом j-Interop.

Обратите внимание, что вам может потребоваться вручную изменить реестр в целевом поле, чтобы он мог работать правильно (обязательно ознакомьтесь с часто задаваемыми вопросами на веб-сайте проекта). Если вы обнаружите странные проблемы (исключения, возникающие при подключении), вот хорошая статья, которая помогла мне их решить: Подчиненные устройства Windows не запускаются через DCOM

С другой стороны, если вы используете Windows box в качестве хоста, то ваша жизнь будет намного проще. Я бы рекомендовал использовать:

Обратите внимание, что все вышеперечисленные проекты являются проектами с открытым исходным кодом.

Как упоминалось выше, существует бесплатная версия j-Integra, но я никогда не пробовал ее использовать.

Комментарии:

1. Привет CAS, я знаю IP-адрес удаленного компьютера, имя пользователя и пароль. Возможно ли подключить удаленный компьютер с этими деталями на Java?

2. @ChanGan да, но помните, что у вас должны быть открыты и запущены порты WMI в окне Windows, к которому вы хотите получить доступ в первую очередь.

3. Похоже, что это НЕ статический IP .. это сработает??

4. @ChanGan если IP меняется слишком часто, вы столкнетесь с проблемами в долгосрочной перспективе. Но для первоначального теста я бы попробовал и посмотрел, сможете ли вы заставить его работать. Может быть, вы можете быстро протестировать с помощью виртуальной машины Win в вашей сети? Я бы рекомендовал Jawin для Win-> Выиграть (документация и образцы являются хорошей отправной точкой)

Ответ №4:

Вы могли бы установить SSH-сервер на свой удаленный рабочий стол и вы можете написать Java-программу, используя библиотеки jcraft и jsch на своем локальном компьютере, чтобы установить SSH-соединение с удаленным рабочим столом.