производительность wmi для следующих запросов - PullRequest
1 голос
/ 23 июня 2010

Я использую следующие два запроса WMI:

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

Второй запрос занимает около 6 секунд (только для 4 пользователей), тогда как первый запрос занимает около 0,3 секунды для 22 групп. Может кто-нибудь сказать мне, почему существует такой разрыв производительности? А есть ли альтернативный способ написания 2-го запроса?

РЕДАКТИРОВАТЬ: я запускаю запрос на локальном компьютере, поэтому подключения не должны входить в картину.

1 Ответ

0 голосов
/ 23 июня 2010

Я предполагаю, что второй запрос медленный, потому что сначала он должен получить всех пользователей домена.Если в любом случае вас интересуют только локальные пользователи, вы можете попробовать метод, описанный здесь или , ограничить запрос локальным компьютером :

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());  
    }       
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...