检索当前Windows用户的名字和姓氏?

时间:2012-02-10 17:38:49

标签: java

我知道您可以使用类似System.getProperty("user.name")的内容检索用户名,但我正在寻找一种方法来检索当前用户的名字和/或姓名

是否有本地Java库可以执行此操作?或者你必须插入Windows API?或者你可能必须从Active Directory中提取它?这似乎相对容易with .NET,但我找不到用Java做的方法。

2 个答案:

答案 0 :(得分:7)

正如Brian Roach在评论中所建议的那样,使用JNA执行此操作非常简单,因为它有a built-in wrapper for Secur32包装GetUsernameEx() function(最终由.NET包装的系统调用)您链接到上面的图书馆。)

使用将是这样的:

import com.sun.jna.ptr.IntByReference;
import com.sun.jna.platform.win32.Secur32;

// ...    

char[] name = new char[100];  // or whatever is appropriate
Secur32.INSTANCE.GetUserNameEx(
     Secur32.EXTENDED_NAME_FORMAT.NameDisplay,
     name,
     new IntByReference(name.length)
);

String fullName = new String(name).trim();

请注意,这将为您提供与在命令提示符下键入net user %USERNAME% /domain的格式相同的全名。

答案 1 :(得分:3)

或者只是,

String fullName = Secur32Util.getUserNameEx(Secur32.EXTENDED_NAME_FORMAT.NameDisplay);

但它和上面的答案是一样的