iT邦幫忙

0

請問如取得開始功能表上的使用者名稱?

c#

在公司每個人登入電腦都是用職員編號當作使用者名稱,
可是在登入網域後電腦會在開始功能表顯示員工的中文名稱,
若用System.Security.Principal.WindowsIdentity.GetCurrent().Name;
或System.Environment.UserName;
都只會得到最一開始的登入者使用者名稱(職員編號)
請問要如何能得到顯示在開始功能表的使用者名稱呢?

謝謝

24
外獅佬
iT邦大師 1 級 ‧ 2009-06-29 14:57:35
最佳解答

登入網域,可以使用ADSI,取得User的全名

<pre class="c" name="code">DirectoryEntry userEntry = new DirectoryEntry();
Console.WriteLine(userEntry.Properties["fullname"].Value);
看更多先前的回應...收起先前的回應...
zachchang iT邦新手 5 級 ‧ 2009-06-29 15:30:34 檢舉

先說聲謝謝,
不過我剛剛試過,
userEntry.Properties有50個,
但是沒有"fullname"這個,
我也把裡面的value都抓出來看了,
也沒有顯示我要的值。

外獅佬 iT邦大師 1 級 ‧ 2009-06-29 15:36:36 檢舉

沒有fullname??不是吧...

小成 iT邦高手 10 級 ‧ 2009-06-29 15:39:57 檢舉

displayname

外獅佬 iT邦大師 1 級 ‧ 2009-06-29 16:09:00 檢舉

不好意思,我把程式稍微改一下
DirectoryEntry adEntry = new DirectoryEntry("LDAP://YOURDOMAIN");
DirectorySearcher adSeacher = new DirectorySearcher(adEntry);
DirectoryEntry userEntry;

adSeacher.Filter = "(&(sAMAccountName=YOURACCOUNT))";
userEntry = adSeacher.FindOne().GetDirectoryEntry();
Console.WriteLine(userDE.Properties["DisplayName"].Value);

請把LDAP的domain改成您自己的domain,user account也改成您自己的。

感謝esyc大的協助~~

zachchang iT邦新手 5 級 ‧ 2009-06-30 08:13:58 檢舉

感謝兩位協助,上述正解!(不過最後一行程式碼打錯了 :P)
DirectoryEntry adEntry = new DirectoryEntry("LDAP://YOURDOMAIN";);
DirectorySearcher adSeacher = new DirectorySearcher(adEntry);
DirectoryEntry userEntry;

adSeacher.Filter = "(&(sAMAccountName=YOURACCOUNT))";
userEntry = adSeacher.FindOne().GetDirectoryEntry();
Console.WriteLine(userEntry.Properties["DisplayName"].Value);

甘溫!!

外獅佬 iT邦大師 1 級 ‧ 2009-06-30 08:54:07 檢舉

啊...拍謝....Orz

16
evilbudin
iT邦新手 5 級 ‧ 2009-06-29 15:50:59

@_@順便問一下,要去哪修改功能表上使用者名稱阿,因為我當出創ad帳號不小心把使用者名稱打錯了,修正回來後登入網域進去看,在功能表上的使用者名稱還是顯示錯誤的..

tom6507 iT邦大師 1 級 ‧ 2009-06-29 15:52:13 檢舉

砍掉重練

6
ccwang
iT邦研究生 3 級 ‧ 2009-06-30 09:50:56

只要在AD內該User的顯示名稱裡面變更就可以了。不需要砍掉重建。

我要發表回答

立即登入回答