我知道您可以使用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相同。

10-08 06:39