OSのユーザを取得する
System.getProperty("user.name");
で取得できるが、
java -Duser.name=hoge test
等でプロパティを指定することで変更可能。
ログインユーザ、ドメインの取得する
com.sun.security.auth.module.NTSystem NTSystem = new com.sun.security.auth.module.NTSystem(); System.out.println(NTSystem.getName()); System.out.println(NTSystem.getDomain());
でログインしているユーザ名とドメインを取得できる。
AD等にログインしていない場合は、マシン名がドメイン名として取得する。
ただし、NTSystem(Windows等)しか使えないので注意。
UNIXの場合は
com.sun.security.auth.module.UnixSystem us = new com.sun.security.auth.module.UnixSystem(); System.out.println(us.getUsername());
各OSで動作するようにするにはリフレクションを使う。
サンプル
1 |
import java.lang.reflect.*; public class test { public static void main(String[] args) { System.out.println(invoke("com.sun.security.auth.module.NTSystem", "getName").toString()); System.out.println(invoke("com.sun.security.auth.module.NTSystem", "getDomain").toString()); System.out.println(invoke("com.sun.security.auth.module.UnixSystem", "getUsername").toString()); } public static Object invoke(String className, String methodName) { try { Class<?> c = Class.forName(className); Object instance = c.newInstance(); Method method = c.getMethod(methodName); return method.invoke(instance); } catch (Exception e){ e.printStackTrace(); } return ""; } } |
[カテゴリ: プログラミング言語 > Java]
[通知用URL]
Tweet
最終更新時間:2016年11月13日 10時48分34秒