2012-08-07 27 views
1

我想列出Windows用戶帳戶,但只列出在登錄屏幕上顯示的那些用戶帳戶,即在Windows引導之後顯示的帳戶。列出用戶在登錄屏幕上可見的Windows用戶帳戶

我一派,所有我發現歸結爲這個方法: http://www.mydigitallife.info/how-to-create-hidden-user-account-hide-user-account-from-welcome-screen-in-windows/

然而,在我的電腦上有被上述文章中提到的註冊表鍵值 - 我不想創建它們,我想檢查已經存在的東西。

我用下面的查詢:

List<string> list = new List<string>(); 

SelectQuery query = new SelectQuery("Win32_UserAccount"); 
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query); 

foreach (ManagementObject obj in searcher.Get()) 
{ 
    if (isInteresting(obj)) 
    { 
     list.Add(obj.GetPropertyValue("Name").ToString()); 
    } 
} 

對於通過上述查詢返回的對象的性質,我設法過濾掉一些賬戶(這些屬性的完整列表:http://msdn.microsoft.com/en-us/library/windows/desktop/aa394507(v=vs.85).aspx#properties),但仍有一些垃圾從日常用戶的角度來看(如用於驅動程序供應商更新的帳戶)。

+0

然後檢查它們是否也存在。顯然,如果他們不存在,他們不會被設置。 – Wug 2012-08-07 19:42:32

+0

檢查是否存在?對不起,我沒有得到你的答案。 – AlexSee 2012-08-07 19:49:03

+0

註冊表項。 – Wug 2012-08-07 19:52:15

回答

1

該註冊表項不是登錄屏幕上可能未顯示帳戶的唯一原因。這裏有幾個人:

  • 該帳戶已禁用
  • 的帳戶沒有交互式登錄權限(SeInteractiveLogonRight)
  • 該帳戶被明確拒絕交互式登錄權限(SeDenyInteractiveLogonRight)

通常將SeInteractiveLogonRight授予來賓用戶,以及管理員,用戶和備份操作員組的成員。任何不屬於其中一個組的成員的任何帳戶(Guest除外)都可能不會顯示在登錄屏幕上。 (我不知道如果SeInteractiveLogonRight已經從這些羣體中的一個取出發生了什麼,我也不會感到驚訝,如果在登錄屏幕上顯示的帳戶反正。)

您可以使用LsaEnumerateAccountRights檢查賬戶是否有SeDenyInteractiveLogonRight應用或LsaEnumerateAccountsWithUserRight以獲取受影響的帳戶列表。通常,個人帳戶而不是羣組被授予此權限,因此登錄屏幕很可能以這種方式檢查帳戶。

相關問題