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

aus*_*aus 10 java

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

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

ig0*_*774 9

正如布莱恩·罗奇在评论认为,这是很直接的与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在命令提示符下键入的格式相同的全名.


ser*_*erg 5

要不就,

String fullName = Secur32Util.getUserNameEx(Secur32.EXTENDED_NAME_FORMAT.NameDisplay);
Run Code Online (Sandbox Code Playgroud)

但这是最高答案