WMI检索用户所属的组?

这是我检索我的本地计算机信息的代码:

ManagementObjectSearcher Usersearcher = new ManagementObjectSearcher("SELECT * FROM Win32_ComputerSystem"); ManagementObjectCollection Usercollection = Usersearcher.Get(); string[] sep = { "\\" }; string[] UserName = Usercollection.Cast().First()["UserName"].ToString().Split(sep, StringSplitOptions.None); ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_UserAccount where Domain = 'MyDomain' and Name= '" + UserName[1] + "'"); ManagementObjectCollection collection = searcher.Get(); WriteOnListBox("UserName: " + (string)collection.Cast().First()["Name"]); WriteOnListBox("Full Name: " + (string)collection.Cast().First()["FullName"]); WriteOnListBox("Description: " + (string)collection.Cast().First()["Description"]); 

但我无法找回我所在的团体和电子邮件。

经过几个小时的工作,我解决了它,我将回答我的问题,

 private string GetGroupsForUser(string UserName) { ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_GroupUser where PartComponent=\"Win32_UserAccount.Domain='MyDomain',Name='" + UserName + "'\""); StringBuilder strGroups = new StringBuilder(); foreach (ManagementObject mObject in searcher.Get()) { ManagementPath path = new ManagementPath(mObject["GroupComponent"].ToString()); if (path.ClassName == "Win32_Group") { String[] names = path.RelativePath.Split(','); strGroups.Append(names[1].Substring(names[1].IndexOf("=") + 1).Replace('"', ' ').Trim() + ", "); } } return strGroups.ToString(); }