我在我们的一台windows机器上运行一个Java桌面应用程序。
为了在我们的应用程序中进行任何手动更改,我们的其中一个 支助人员 从他的机器上用 mstsc. (我们说"蒂姆")
这里有一个问题。对于远程连接,我们使用"MysysUser"和密码进行连接。
现在,有一个要求是登录谁在进行修改。有什么方法可以找出远程用户是谁,而不是 "MysysUser"?是 "Tim"。
在我的Java代码中,我想找出这个名字。蒂姆.
谢谢你的时间和帮助。
你可以使用这个类来获取Tim机器上登录的用户名称,就像这个例子一样,这个功能使用了windows的本地功能。
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.concurrent.TimeUnit;
public class UserName {
public static void main(String[] args) throws Exception{
UserName user = new UserName();
System.out.println(user.getUserLoggedFromIP("localhost"));
System.out.println(user.getUserLoggedFromIP("IP_MACHINE_OF_TIM"));
}
public String getUserLoggedFromIP(String ip) throws Exception {
Process p = Runtime.getRuntime().exec("query user /server:" + ip);
p.waitFor(200, TimeUnit.MILLISECONDS);
BufferedReader reader = new BufferedReader(new InputStreamReader(
p.getInputStream()));
String userActive = reader.lines().filter(x -> x.toUpperCase().contains("ACTIVE"))
.findFirst()
.orElse(null);
if(userActive != null){
return userActive.trim().split(" ")[0];
}else{
return "";
}
}
}