获取Java中Windows用户的登录时间
Java中是否有方法获取当前用户登录的时间 我知道,如果在Windows终端中运行获取Java中Windows用户的登录时间,java,windows,userinfo,Java,Windows,Userinfo,Java中是否有方法获取当前用户登录的时间 我知道,如果在Windows终端中运行quser,它将以分钟的精度列出当前用户的一些基本信息,包括登录时间 是否有一个系统属性或一些我可以在Java中访问的东西,我可以从中获取用户的登录时间 如果有一种跨平台的方法来获取当前用户在Windows、Mac OS、Android等系统中的登录时间,则可获得额外积分。一种可能的解决方案是使用Runtime.getRuntime().exec(),如下所示: public static void main
quser
,它将以分钟的精度列出当前用户的一些基本信息,包括登录时间
是否有一个系统属性或一些我可以在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
您不能创建一个将在shell上运行
quser
的代码段吗?提供了一个如何从java执行shell命令的示例。据我所知,没有java系统属性可以检索登录时间。有一种方法可以获取当前登录的用户,但没有比这更具体的方法。你可以试试@robotlos的建议;不过,我不知道您以后如何提取该值以在程序中使用,但可能其他人会提取。您是否成功地使用本地windows datetime格式将该值解析为Date
?@sashasalau您不确定自己在问什么。但在平台方面,这是在Windows上运行的。我的意思是返回日期
,而不是字符串
@SashaSalauyou哦,我不认为这有什么问题,因为我附加了字符串
。我没有真正解析任何东西。此外,还有一个问题。除了读取windows注册表,我找不到读取计算机本地日期时间模式的解决方案。。。