【问题标题】:wmi performance for following queries以下查询的 wmi 性能
【发布时间】:2010-06-23 08:57:16
【问题描述】:

我正在使用以下两个 WMI 查询:

SELECT * FROM Win32_Group WHERE LocalAccount=true
SELECT Domain,Name FROM Win32_UserAccount WHERE LocalAccount=true

第二个查询大约需要 6 秒来运行(仅超过 4 个用户),而第一个查询大约需要 0.3 秒来运行 22 个组。有人能告诉我为什么会有这样的性能差距吗?以及编写第二个查询的任何替代方法?

编辑:我在本地机器上运行查询,所以连接不应该出现在图片中。

【问题讨论】:

    标签: c# performance wmi


    【解决方案1】:

    我假设第二个查询很慢,因为它首先必须检索所有域用户。如果您只对本地用户感兴趣,您可以尝试herelimit the query to the local machine描述的方法:

    public static void GetUsers()  
    {  
        SelectQuery sQry = new SelectQuery(“Win32_UserAccount”,“Domain=’PCNAME’”);  
    
        try  
        {  
            ManagementObjectSearcher mSearcher = new ManagementObjectSearcher(sQry); 
    
            Console.WriteLine(“User Accounts\n”);  
    
            foreach (ManagementObject mObject in mSearcher.Get())  
            {  
                Console.WriteLine(mObject[“Name”]);  
            }  
        }  
        catch (Exception ex)  
        {  
            Console.WriteLine(ex.ToString());  
        }       
    } 
    

    【讨论】:

    • 那为什么第一个查询运行得这么快呢?两者都只检查本地帐户。
    • @apoorv020:我不确定,但我认为这与组传播到域网络主机的方式有关。
    • 我检查了您的查询,它们都有相同的时间(没有运气。)我还尝试了 Win32_account,其中 LocalAccount=true 和 sidType=1。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    相关资源
    最近更新 更多