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

标签 java windows networking windows-xp user-management

问题:

我正在使用以下凭据登录虚拟机 (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 执行此操作 - 根据用户类型调用 GetUserNameExNetUserGetInfo

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

关于java - 从 java 应用程序中获取用户名 (windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16219375/

相关文章:

linux - 从 shell 脚本启动 putty

ruby - 从外部停止套接字读取操作的优雅方法

java - 检查 Activity 互联网连接 Android

windows - PowerShell 3 的文件扩展名

windows - 使用协议(protocol)处理程序(即 :url))从 Chrome 打开 Internet Explorer

c - 如何设置发送数据包的 TCP 选项?

java - Spring 启动|本地主机 : 8080 404 error page displayed

java - 如何使按钮事件将输出写入文本字段

java - 如何将以下数据转换为LOOP

java - Spring 启动外部配置