2016-03-31 4 views
2

現在のユーザーがログインした時間を取得する方法はありますか?JavaのWindowsユーザーのログイン時間を取得

Windows端末でquserを実行すると、現在のユーザーに関する基本的な情報が表示されます(LOGON TIMEなど)。

Javaからアクセスできるシステムプロパティやユーザーのログイン時間を取得できるものはありますか?など

ボーナスポイントは、Windows、Mac OS、Androidの中で現在のユーザーのログイン時間を取得するためのクロスプラットフォームな方法がありますならば、

+0

シェルで 'quser'を実行するコードスニペットを作成できませんか? [このリンク](http://www.mkyong.com/java/how-to-execute-shell-command-from-java/)には、javaからシェルコマンドを実行する方法の例が示されています。 – robotlos

+0

私が知っている限り、ログイン時間を取得できるjava Systemプロパティはありません。現在ログインしているユーザーを取得できるものはありますが、それより具体的なものはありません。 @robotlosが提案したものを試すことができます。後であなたのプログラムで使う価値をどのように引き出すのか分かりませんが、他の人がそうするかもしれません。 – NAMS

答えて

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); 
    } 
OSは、あなたが System.getProperty("os.name")を使用することができます使用されているかを決定するために

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) 

が正常に自分のログイン情報を取得することができました は、それはあなたが何か行うことができ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 
+0

ローカルウィンドウのdatetime形式を使用して、その値を 'Date'に解析するのに成功しましたか? –

+0

@SashaSalauあなたが何を求めているかわからない。しかし、プラットフォームに関しては、これはWindows上で実行されました。 – robotlos

+0

私は 'String'ではなく、' Date'を返すことを意図していました。 –

関連する問題