我知道您可以使用类似的东西检索用户名,System.getProperty("user.name")但我正在寻找一种方法来检索当前用户的名字和姓氏.
是否有本地Java库可以执行此操作?或者你必须插入Windows API?或者你可能必须从Active Directory中提取它?这对.NET来说似乎相对容易,但我找不到用Java做的方法.
正如布莱恩·罗奇在评论认为,这是很直接的与JNA要做到这一点,因为它有一个内置的包装器Secur32包装了GetUsernameEx()函数(这是最终的系统调用由.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();
Run Code Online (Sandbox Code Playgroud)
请注意,这将为您提供与net user %USERNAME% /domain在命令提示符下键入的格式相同的全名.
要不就,
String fullName = Secur32Util.getUserNameEx(Secur32.EXTENDED_NAME_FORMAT.NameDisplay);
Run Code Online (Sandbox Code Playgroud)
但这是最高答案