我知道您可以使用System.getProperty("user.name")
这样的名称来检索用户名,但是我正在寻找一种检索当前用户的名字和姓氏的方法。
是否有一个本地Java库可以做到这一点?还是您必须插入Windows API?或者,也许您必须将其从Active Directory中拉出?这似乎是相对容易的with .NET,但是我找不到用Java做到这一点的方法。
最佳答案
正如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
相同。