问题:
我正在使用以下凭据登录虚拟机 (RDC):
用户是名为 teldept 的域组的一部分
user:147852 pass:helloworld
当我尝试从 java 应用程序获取用户详细信息时,它会给我:147852
但是当我点击顶部的开始菜单时,我可以看到显示我的名字。
这是怎么做到的?我想从 java 应用程序访问这个名字
我使用下面的代码片段:
System.getProperty("user.name");
上面的片段给我的任何内容都是正确的,就像 oracle 文档一样。 我使用 ID 登录:147852 上面的代码片段给我 14852 但是在 Windows 中这个 ID:147852 是如何映射到我的名字的,所以只有在 XP 的开始菜单中我才显示我的名字而不是 147852。我们需要知道这个映射是如何在 ID 和 Name 之间完成的。我猜它与域或某些我不擅长的网络逻辑有关。
最佳答案
XP 开始菜单中显示的名称不是登录名。它是与登录名相对应的全名。不确定您的登录名是本地登录名还是域登录名。如果是本地登录,请转到管理工具 -> 计算机管理 -> 用户和组 -> 此处针对您的用户名 (147852),您会找到一个全名。 如果您的登录名是域登录名,您可以类似地在 Active Directory 中查找您的姓名 - 或者在其他地方搜索它。
这是非常特定于操作系统的,无法被 Java 找到。
您将需要使用 JNI 和 Windows API 执行此操作 - 根据用户类型调用 GetUserNameEx
或 NetUserGetInfo
。
如果您只想获取您的登录名 (147852),调用 com.sun.security.auth.module.NTSystem().getName
是比使用 System.getName 更好的方法。 getProperty("用户名")
关于java - 从 java 应用程序中获取用户名 (windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16219375/