WMI Win32_Group ASSOCIATORS Queries Are Not Optimized


Windows Management Instrumentation (WMI) Win32_Group ASSOCIATORS queries are not optimized. When a computer is part of a large domain that is trusted by other domains, queries like the following query could take many hours to complete:

ASSOCIATORS OF {Win32_Group.Domain="BUILTIN", Name="Administrators"}


The ASSOCIATORS query that is listed in the "Symptoms" section of this article is actually converted by WMI to the following Win32_GroupUser query before it is processed:

(GroupComponent = "Win32_Group.Domain=\"BUILTIN\",
Name=\"Administrators\"" OR
PartComponent = "Win32_Account.Domain=\"BUILTIN\",
Name=\"Administrators\"" )
Win32_GroupUser is an association class that associates the Win32_Group class and Win32_Account classes. Win32_Account classes include Win32_Account, Win32_SystemAccount, Win32_Group, and Win32_UserAccount.

Win32_GroupUser queries are processed by WMI by first performing a full enumeration of Win32_GroupUser as well as a full enumeration of the associated classes. Although the preceding query only requests data on "BUILTIN" (local) group memberships, a full enumeration of all domains and trusted domains is invoked. This full enumeration can be completed in a few seconds on a small domain. However on a large domain that is trusted by multiple domains, this enumeration can take several hours to complete.


Windows 2000

To resolve this problem, obtain the latest service pack for Windows 2000. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:
260910 How to Obtain the Latest Windows 2000 Service Pack
The English-language version of this fix should have the following file attributes or later:

Date Time Version Size File name Platform
27-Aug-2001 16:31 1.50.1085.67 1,085,520 Cimwin32.dll Intel

Windows NT 4.0

A supported hotfix is now available from Microsoft, but it is only intended to correct the problem that this article describes. Apply it only to systems that are experiencing this specific problem.

To resolve this problem, contact Microsoft Product Support Services to obtain the hotfix. For a complete list of Microsoft Product Support Services telephone numbers and information about support costs, visit the following Microsoft Web site:Note In special cases, charges that are ordinarily incurred for support calls may be canceled if a Microsoft Support Professional determines that a specific update will resolve your problem. The usual support costs will apply to additional support questions and issues that do not qualify for the specific update in question.

The French-language version of this fix should have the following file attributes or later:

Date Version Size File name Platform
12-Mar-2002 1.50.1085.0073 1,052,750 Cimwin32.dll Intel

How to Use the Hotfix Installer

NOTE: You can use this method only for Intel-based computers with Windows 2000 Service Pack 1 (SP1) or later installed.

  1. Copy the Q302857.exe hotfix file to a local folder on your computer or to a share on your network.
  2. Run the Q302857.exe file, and then follow the directions you receive.
  3. Restart your computer.

Hotfix Limitations

The hotfix that is available for this problem does not directly resolve the performance issues with Win32_Group ASSOCIATORS queries such as the following query:

ASSOCIATORS OF {Win32_Group.Domain="BUILTIN", Name="Administrators"}
Instead, this hotfix optimizes Win32_GroupUser queries. With these optimizations, the following Win32_GroupUser query can be used as an alternative to the preceding ASSOCIATORS query:

SELECT * FROM Win32_GroupUser
WHERE GroupComponent = "Win32_Group.Domain=\"BUILTIN\",
NOTE: The preceding Domain property can be specified as BUILTIN or the actual name of the local server.

The preceding query returns instances of Win32_GroupUser. The "PartComponent" property of the returned instances will contain the requested data. For example, the PartComponent property of one of the returned instances may contain the following:

\\server01\root\cimv2:Win32_UserAccount.Domain="domain name",Name="user name"
The returned Win32_GroupUser PartComponent is actually a fully qualified object path. If needed, additional Win32_Group and/or Win32_UserAccount information can be retrieved by using this object path in an IWbemServices GetObject function call. SELECT * FROM Win32_UserAccount WHERE Domain = "domain name" AND Name = "user name"


Microsoft has confirmed that this is a problem in Windows Management Instrumentation 1.5. This problem was first corrected in Windows 2000 Service Pack 3.

More Information

For additional information about how to obtain a hotfix for Windows 2000 Datacenter Server, click the article number below to view the article in the Microsoft Knowledge Base:

265173 The Datacenter Program and Windows 2000 Datacenter Server Product
For additional information about how to install multiple hotfixes with only one reboot, click the article number below to view the article in the Microsoft Knowledge Base:

296861 Use QChain.exe to Install Multiple Hotfixes with One Reboot
For additional information about how to install Windows 2000 and Windows 2000 hotfixes at the same time, click the article number below to view the article in the Microsoft Knowledge Base:

249149 Installing Microsoft Windows 2000 and Windows 2000 Hotfixes