java - 在Java中获取Windows用户的登录时间

标签 java windows userinfo

Java中有没有办法获取当前用户登录的时间?

我知道,如果您在 Windows 终端中运行 quser,它会列出当前用户的一些基本信息,包括 LOGON TIME,精确到分钟。

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

如果有跨平台的方法来获取 Windows、Mac OS、Android 等中当前用户的登录时间,那就加分了。

最佳答案

一个可能的解决方案是使用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

关于java - 在Java中获取Windows用户的登录时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36338895/

相关文章:

java - 获取java sql时间并将其插入到表中

java - 迭代 ResultSet 时出现 JDBC 异常 "Operation not allowed after ResultSet closed"

c# - Windows 7 中的 FolderBrowserDialog 行为

javascript - 在 Node.js 命令上,为什么我收到错误消息 "windows cannot find $. Make sure you' 已经正确输入了名称...”

node.js - 无法获取用户信息

swift - 在 Swift 中更改定时器选择器函数中的 userInfo

Java 选项的使用

java - 转换为通用原始类。方法运行没有任何异常,如何以及为什么?

java - SWT 表头中 & 符号的解决方法