C# 以下查询的wmi性能
我使用以下两个WMI查询:C# 以下查询的wmi性能,c#,performance,wmi,C#,Performance,Wmi,我使用以下两个WMI查询: SELECT * FROM Win32_Group WHERE LocalAccount=true SELECT Domain,Name FROM Win32_UserAccount WHERE LocalAccount=true 第二个查询运行大约需要6秒(仅针对4个用户),而第一个查询运行22个组大约需要0.3秒。有人能告诉我为什么会有这样的绩效差距吗?还有其他写第二个查询的方法吗 编辑:我正在本地计算机上运行查询,因此不应出现连接。我假设第二个查询速度较慢,因
SELECT * FROM Win32_Group WHERE LocalAccount=true
SELECT Domain,Name FROM Win32_UserAccount WHERE LocalAccount=true
第二个查询运行大约需要6秒(仅针对4个用户),而第一个查询运行22个组大约需要0.3秒。有人能告诉我为什么会有这样的绩效差距吗?还有其他写第二个查询的方法吗
编辑:我正在本地计算机上运行查询,因此不应出现连接。我假设第二个查询速度较慢,因为它首先必须检索所有域用户。如果您只对本地用户感兴趣,您可以尝试以下方法:
我假设第二个查询很慢,因为它首先必须检索所有域用户。如果您只对本地用户感兴趣,您可以尝试以下方法:
那么为什么第一个查询运行得这么快?两者都只检查本地帐户。@APORV020:我不确定,但我认为这与组传播到域网络主机的方式有关。我检查了您的查询,它们都有相同的时间(运气不好)。我还尝试了Win32_account,其中LocalAccount=true和sidType=1。那么为什么第一个查询运行得这么快?两者都只检查本地帐户。@apoorv020:我不确定,但我认为这与组传播到域网络主机的方式有关。我检查了您的查询,它们都有相同的时间(没有运气)。我还尝试了Win32_account,其中LocalAccount=true和sidType=1。
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());
}
}