2013-04-25 67 views
1

問題:擷取用戶名從Java應用程序(窗口)

我登錄到使用下面的憑證的虛擬機(RDC):

用戶是被稱爲域組的一部分teldept

用戶:147852通:HelloWorld的

當我試圖讓從Java應用程用戶詳細信息它給我:147852

但是當我點擊頂部的開始菜單,我可以看到我的名字顯示。

這是如何完成的?我想從Java應用程序訪問此名

我用下面的代碼片段:

System.getProperty( 「user.name」);

無論上面的代碼片段給我的是正確的甲骨文文檔。 我使用ID登錄:147852及以上片段給我14852 ,但一些如何在Windows中這個ID:147852是映射與我的名字,所以只有在XP的開始菜單我得到我的名字displyed而不是147852.我們需要了解如何在ID &名稱之間完成此映射。我猜測它與Domain或一些我不擅長的網絡邏輯有關。

+0

你是如何得到「147852」更好的辦法?張貼代碼片段。 – user93353 2013-04-25 15:56:27

+0

@ user93353我編輯了這個問題。我希望我不清楚我的觀點。 – Wills 2013-04-26 02:34:49

+0

如果您是從命令行運行java程序 - USERNAME env變量包含什麼 - 嘗試'echo%USERNAME%' – user93353 2013-04-26 03:53:08

回答

2

this SO question,你可以使用:

System.getProperty("user.name"); 

返回當前登錄的用戶。這將返回用戶名字符串。我相信這是你要求的,但你的問題還不清楚。

4

XP的開始菜單上顯示的名稱不是登錄名。它的全名對應於登錄名稱。不確定您的登錄是本地登錄還是域登錄。如果是本地登錄,請轉到管理工具 - >計算機管理 - >用戶和組 - >這裏針對您的用戶名(147852),您將找到一個完整的名稱。 如果您的登錄名是域名登錄名,您可以同樣在Active Directory中查找您的姓名 - 或在其他地方搜索。

這是非常具體的操作系統,不能被Java找到。 您將需要使用JNI和Windows API執行此操作 - 根據用戶類型調用GetUserNameExNetUserGetInfo

如果你只是想獲得您的登錄名(147852),調用com.sun.security.auth.module.NTSystem().getName比使用System.getProperty("user.name")