2014-09-22 32 views
0

下面的代碼返回機器上組和關聯成員的列表。爲什麼它只返回人口稠密的羣體。例如,在你的機器上創建一個新的用戶組,它不會在這個查詢中返回。但是,如果您將用戶添加到用戶組,它將在查詢中返回。是否有修復查詢?查詢僅返回具有用戶的組

C#代碼

var sGroupName = ""; 
var sUsername = ""; 
ManagementObjectSearcher searchresult = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_GroupUser"); 


foreach (ManagementObject queryObj in searchresult.Get()) 
{ 
     sGroupName = queryObj["GroupComponent"].ToString().Split(new[] { "Name=" }, StringSplitOptions.None).Last().Trim('"'); 
     sUsername = queryObj["PartComponent"].ToString().Split(new[] { "Name=" }, StringSplitOptions.None).Last().Trim('"'); 
} 
+2

雖然我不是這個命名空間經歷,它會發生,我認爲從「GroupUser」表中選擇將只是那 - 用戶。最有可能的是一個「組」表,它們自己擁有這些組。 – DanS 2014-09-22 20:01:46

回答

1

試試這個:

var searchResult = 
    new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_Group"); 
+0

只返回組名稱。我正在查找返回組和關聯成員的WMI查詢,包括空的組。 「包含空的組」不會被返回。 – user1438082 2014-09-22 20:12:28

+1

@ user1438082因此,最簡單的方法是使用Win32_Group表選擇所有組,然後對於每個組,使用WHERE子句從Win32_GroupUser表中選擇任何用戶以僅匹配組中的那些用戶。實施取決於你,但這個過程會給你你似乎在尋找的東西。 – DanS 2014-09-22 20:28:40

+0

是的 - 但我希望能夠對現有查詢進行簡單的修改,以獲取我需要的數據。 – user1438082 2014-09-22 20:29:56