Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
After you retrieve an IWbemServices interface pointer, you can call the IWbemServices::ExecQuery method to search for objects of a particular class.
The following code example searches for all objects of the RSOP_RegistryPolicySetting class. RSOP_RegistryPolicySetting is a generic class that represents a registry key and a value, and the associated data. The sample retrieves the key name and value name for each object and prints the values to the console window.
//
// Allocate BSTRs for the WMI query language and for the query itself.
//
pLanguage = SysAllocString (TEXT("WQL"));
pQuery = SysAllocString (TEXT("SELECT * FROM RSOP_RegistryPolicySetting"));
//
// Allocate BSTRs for the property names to retrieve.
//
pRegistryKey = SysAllocString (TEXT("registryKey"));
pValueName = SysAllocString (TEXT("valueName"));
//
// Verify that the allocations succeeded.
//
if (pLanguage && pQuery && pRegistryKey && pValueName)
{
//
// Execute the query.
//
hr = pIWbemServices->ExecQuery (pLanguage, pQuery, WBEM_FLAG_FORWARD_ONLY |
WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &pEnum);
if (SUCCEEDED(hr))
{
//
// Loop through the results;
// retrieve the registry key and value names.
//
while (pEnum->Next(WBEM_INFINITE, 1, pObjects, &ulRet) == WBEM_S_NO_ERROR)
{
hr = pObjects[0]->Get (pRegistryKey, 0, &varRegistryKey, NULL, NULL);
if (SUCCEEDED(hr))
{
hr = pObjects[0]->Get (pValueName, 0, &varValueName, NULL, NULL);
if (SUCCEEDED(hr))
{
//
// Print the key and value names.
//
wprintf (L" %s\\%s\n", varRegistryKey.bstrVal, varValueName.bstrVal);
VariantClear (&varValueName);
}
VariantClear (&varRegistryKey);
}
ulCount++;
}
if (ulCount == 0)
{
wprintf (L"\tNo registry objects found\n");
}
pEnum->Release();
}
}
For more information about MMC, see the Microsoft Management Console.