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秒