获取Java用户的Windows用户登录时间

时间:2016-03-31 16:28:44

标签: java windows userinfo

Java中有没有办法让当前用户登录时间?

我知道如果你在Windows终端中运行quser,它会列出一些关于当前用户的基本信息,包括LOGON TIME,精确度很高。

是否有一个系统属性或我可以用Java访问的东西,我可以从中获取用户的登录时间?

如果有一种跨平台的方式来获取当前用户在Windows,Mac OS,Android等中的登录时间,那么

1 个答案:

答案 0 :(得分:2)

可能的解决方案可能是使用Runtime.getRuntime().exec(),如下所示:

   public static void main(String[] args) throws Exception {
        Process p;
        StringBuilder sb = new StringBuilder();

        p = Runtime.getRuntime().exec("quser");
        p.waitFor();

        BufferedReader reader
                = new BufferedReader(new InputStreamReader(p.getInputStream()));

        String line = "";
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        System.out.println(sb);
    }

能够成功获取我的登录信息:

run:

 USERNAME              SESSIONNAME        ID  STATE   IDLE TIME  LOGON TIME
 robotlos              console             1  Active    1+18:08  3/17/2016 10:36 AM

BUILD SUCCESSFUL (total time: 0 seconds)

要确定正在使用的操作系统,您可以使用System.getProperty("os.name")

为了隔离日期和时间,在我的情况下,因为它是sb的最后3个子串,你可以做类似的事情:

 String[] vals = sb.toString().split(" ");
 String loginTime = vals[vals.length - 3] + " " + vals[vals.length - 2] + " " + vals[vals.length - 1];

虽然这不是最漂亮的解决方案,但

System.out.println(loginTime);

将打印出来:

3/17/2016 10:36 AM