C#获取用户在域

时间:2018-01-07 22:03:12

标签: c# dns wmi-query

我想输入登录ID并接收记录该帐户的当前PC。 我找到了一个使用WMI的代码,但在10,000多台计算机上运行需要很长时间(〜我在10分钟后放弃了。) 我所做的是检查每台计算机上的用户,直到登录帐户和搜索帐户之间匹配为止。

private void getCurrentUser()
    {
        try
        {
            DirectoryEntry entry = new DirectoryEntry("LDAP://" + DOMAIN);
            DirectorySearcher dSearch = new DirectorySearcher(entry);
            dSearch.Filter = ("objectCategory=computer");
            foreach (SearchResult result in dSearch.FindAll())
            {
                ManagementScope theScope = new ManagementScope("\\\\" + result.Properties["cn"][0].ToString() + "\\root\\cimv2");
                ObjectQuery theQuery = new ObjectQuery("SELECT username FROM Win32_ComputerSystem");
                ManagementObjectSearcher theSearcher = new ManagementObjectSearcher(theScope, theQuery);
                ManagementObjectCollection theCollection = theSearcher.Get();
                foreach (ManagementObject theCurObject in theCollection)
                {
                    if (theCurObject["username"].ToString() == "LAS\\" + USERNAME)
                        Computer1.Text = result.Properties["cn"][0].ToString();
                }
            }
        }
        catch (Exception)
        {
            MessageBox.Show("Error");
        }
    }

这是代码,它有效,但我想知道是否有其他方法可以做到这一点而无需等待这么久或我怎么能快速完成?

0 个答案:

没有答案