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

标签 java

我知道您可以使用 System.getProperty("user.name") 之类的方法检索 username 但我正在寻找检索 的方法当前用户的名字和姓氏

是否有执行此操作的 native 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 时的格式相同。

关于java - 检索当前 Windows 用户的名字和姓氏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9232220/

相关文章:

java - 如何在 Ubuntu 64 位上安装 32 位 JDK?

java - 以编程方式通过 android 上的 imgur 上传照片

java - 当我尝试用 null 隐藏 json 来建模使用 GSON 时出错

java - Android Firebase 查询问题

java - Guava Stopwatch.createStarted() 未定义?

java - 使用 Spring Security 的登录名、密码和 Facebook 访问 token 的身份验证方法(不是 OAuth)

java - colorAnimation 中无法访问的语句

java - setGraphic() 在递归创建的 TreeItems 上无法正常工作

java - Java中检查字符串是否是有效的英文单词

java - 如何对两个对象使用集合方法(removeAll()和retainAll())