有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

从java应用程序获取用户名(windows)

问题:

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

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

user:147852 pass:helloworld

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

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

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

我使用以下代码段:

System.getProperty("user.name");

无论上面的代码片段给了我什么,都是正确的oracle文档。 我是用ID:147852和上面的代码段给我14852登录的 但在windows中,该ID:147852如何与我的姓名映射,因此仅在XP的“开始”菜单中显示我的姓名,而不是147852。我们需要知道如何在ID和;名称我猜它与域或某些我不擅长的网络逻辑有关


共 (2) 个答案

  1. # 1 楼答案

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

    这是非常特定于操作系统的,Java无法找到。 您需要使用JNI和Windows API来实现这一点——根据用户类型调用GetUserNameExNetUserGetInfo

    如果你只想得到你的登录名(147852),调用com.sun.security.auth.module.NTSystem().getName比使用System.getProperty("user.name")更好

  2. # 2 楼答案

    this SO question中,您可以使用:

    System.getProperty("user.name");
    

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