2014-10-03 119 views
-1

我開發了一個winforms嚮導,並且在這個嚮導的一個頁面中,我需要列出所有帳戶以使用戶選擇一個。所以我的工作代碼爲:如何獲取包括本地系統帳戶在C#中的所有帳戶?

private static IEnumerable<string> GetUsersAccountName() 
    { 
     var searcher = new ManagementObjectSearcher(new SelectQuery("Win32_UserAccount")); 
     var usersAccounts = (from ManagementBaseObject envVar in searcher.Get() 
        select envVar["Name"].ToString()); 

     return users.ToList(); 
    } 
用這種方法我得到賬戶名稱

左右,但沒有獲得「本地系統帳戶」,如何讓這個帳戶名稱呢?

+0

LocalSystem不是該機制的一部分;它被安全系統忽略。如果你真的需要它,只需手動添加它 – 2014-10-03 15:04:54

+0

http://stackoverflow.com/questions/1240373/how-do-i-get-the-current-username-in-net-using-c 這是你是什麼尋找 ? – Astro 2014-10-03 15:35:59

回答

1

你是對的,有一些你需要做的事情,以獲得帳戶名稱。你可以通過SID查找。實際上,本地系統的SID始終相同(S-1-5-18)。

要真正將其轉換,試試這個:

string localSysAccountName = new SecurityIdentifier("S-1-5-18") 
        .Translate(typeof(NTAccount)).ToString(); 

在這種似乎不正常工作的情況下,看看LookupAccountSid

相關問題