1

问题:

我正在使用以下凭据登录到虚拟机 (RDC):

用户是名为 teldept 的域组的一部分

用户:147852 密码:helloworld

当我尝试从 java 应用程序获取用户详细信息时,它给了我:147852

但是当我点击顶部的开始菜单时,我可以看到我的名字显示。

这是怎么做到的?我想从 java 应用程序访问这个名称

我使用以下代码段:

System.getProperty("user.name");

上面的片段给我的任何东西都是正确的,因为它是甲骨文文档。我正在使用 ID 登录:147852 和上面的代码片段给了我 14852 但是在 Windows 中这个 ID:147852 是如何映射到我的名字的,所以只有在 XP 的开始菜单中我才会显示我的名字而不是 147852。我们需要知道如何在 ID 和 Name 之间完成此映射。我猜它与域或一些我不擅长的网络逻辑有关。

4

2 回答 2

4

XP 开始菜单上显示的名称不是登录名。它是与登录名相对应的全名。不确定您的登录名是本地登录名还是域登录名。如果是本地登录,请转到管理工具 -> 计算机管理 -> 用户和组 -> 在此处针对您的用户名 (147852),您将找到一个全名。如果您的登录名是域登录名,您可以类似地在 Active Directory 中查找您的姓名 - 或在其他地方搜索它。

这是非常特定于操作系统的,Java 找不到。您将需要使用 JNI 和 Windows API - 调用GetUserNameExNetUserGetInfo取决于用户类型来执行此操作。

如果您只想获取您的登录名 (147852),调用com.sun.security.auth.module.NTSystem().getName是比使用更好的方法System.getProperty("user.name")

于 2013-04-25T15:57:53.263 回答
2

这个 SO question中,您可以使用:

System.getProperty("user.name");

返回当前登录的用户。这将返回用户名字符串。我相信这是您要的,但是您的问题还不清楚。

于 2013-04-25T15:55:17.013 回答