我可以找出远程人员登录到windows桌面的用户ID吗?

问题描述 投票:1回答:1

我在我们的一台windows机器上运行一个Java桌面应用程序。

为了在我们的应用程序中进行任何手动更改,我们的其中一个 支助人员 从他的机器上用 mstsc. (我们说"蒂姆")

这里有一个问题。对于远程连接,我们使用"MysysUser"和密码进行连接。

现在,有一个要求是登录谁在进行修改。有什么方法可以找出远程用户是谁,而不是 "MysysUser"?是 "Tim"。

在我的Java代码中,我想找出这个名字。蒂姆.

谢谢你的时间和帮助。

java swing remote-access remote-desktop
1个回答
1
投票

你可以使用这个类来获取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 "";
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.