CAUSE
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:
SELECT * FROM Win32_GroupUser WHERE
(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.
RESOLUTION
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.
- Copy the Q302857.exe hotfix file to a local folder on your computer or to a share on your network.
- Run the Q302857.exe file, and then follow the directions you receive.
- 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\",
Name=\"Administrators\""
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"