如何使用Java连接远程Windows机器?

5

我希望能够使用Java程序从本地机器连接到远程Windows桌面机。

我需要检查远程计算机上的磁盘空间和其他几项服务。

4个回答

7

远程桌面连接

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.

你好Peter,我们有没有任何解决方案,可以在服务器身份验证策略不允许使用保存的凭据登录的情况下进行登录。 - Gaurav Parek

2

这个回答接近于仅提供链接。不如评估其中一些并回来描述和推荐其中一个(或多个)? - Peter Mortensen

1
答案取决于您的本地机器(主机)使用什么操作系统连接到远程目标Windows框。如果它是基于Unix的框,我建议使用开源库j-Interop。请注意,您可能需要手动修改目标框的注册表,以便它可以正常工作(确保查看项目网站的FAQ)。如果您发现奇怪的问题(连接时抛出异常),这篇文章可以帮助我解决它们:Windows slaves fail to start via DCOM。另一方面,如果您使用Windows框作为主机,那么您的生活将变得更加轻松。我建议使用:

请注意,以上所有项目均为开源项目。

如上所述,免费版本为j-Integra,但我从未尝试使用它。


你好CAS,我知道远程机器的IP地址、用户名和密码。在Java中使用这些信息连接到远程机器是否可行? - ChanGan
@ChanGan 是的,但请记住,您必须首先在要访问的 Windows 计算机上打开并运行 WMI 端口。 - CAS
看起来这不是静态IP地址.. 这样可以工作吗? - ChanGan
@ChanGan 如果IP地址变化太频繁,长期来看你会面临问题。但是对于初步测试,我建议你尝试一下,看看能否让它工作。也许你可以在你的网络上快速使用Win虚拟机进行测试?我建议使用Jawin进行Win->Win的操作(文档和示例是一个很好的起点)。 - CAS

1
你可以在远程桌面上安装一个SSH服务器,然后在本地机器上使用jcraft和jsch库编写Java程序,以建立与远程桌面的SSH连接。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接