Notice: This website is an unofficial Microsoft Knowledge Base (hereinafter KB) archive and is intended to provide a reliable access to deleted content from Microsoft KB. All KB articles are owned by Microsoft Corporation. Read full disclaimer for more details.

System Center Configuration Manager 2007 fails to inventory Registry keys on 64-bit clients


Symptoms

You may find that you are unable to inventory HKLM\Software registry keys on 64-bit (x64) Windows client machines without first populating the data under the Wow6432Node key in the registry on these clients.

Note No other symptoms or errors may be noticed.

↑ Back to the top


Cause

This happens because the class is defined for only the 32-bit (x86) architecture.

↑ Back to the top


Resolution

To resolve this issue and get the 64-bit clients to report in the data without adding it to the wow6432node in the registry you will need to modify the Configuration.mof and SMS_def.mof files as indicated below.  You will have two different custom classes, one with _64 appended to it.

Configuration.Mof changes:

 // this section tells the inventory agent what to collect
#pragma namespace ("\\\\.\\root\\cimv2")
#pragma deleteclass("MS_ApplicationName", NOFAIL)
[DYNPROPS]
Class MS_ApplicationName

{

[key] string KeyName;
String StartTime;
String EndTime;
String Status;

};

[DYNPROPS]
Instance of MS_ApplicationName

{

keyname="ApplicationName";
[PropertyContext("Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SoftwareVendorName\\AppRegKey\\ApplicationName|StartTime"),Dynamic,Provider("RegPropProv")] StartTime;

[PropertyContext("Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SoftwareVendorName\\AppRegKey\\ApplicationName|EndTime"),Dynamic,Provider("RegPropProv")] EndTime;

[PropertyContext("Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SoftwareVendorName\\AppRegKey\\ApplicationName|Status"),Dynamic,Provider("RegPropProv")] Status;

};

#pragma namespace ("\\\\.\\root\\cimv2")
#pragma deleteclass("MS_ApplicationName_64", NOFAIL)

[DYNPROPS]
Class MS_ApplicationName_64

{

[key] string KeyName;
String StartTime;
String EndTime;
String Status;

};

[DYNPROPS]

Instance of MS_ApplicationName_64

{

keyname="ApplicationName";

[PropertyContext("Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SoftwareVendorName\\AppRegKey\\ApplicationName|StartTime"),Dynamic,Provider("RegPropProv")] StartTime;

[PropertyContext("Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SoftwareVendorName\\AppRegKey\\ApplicationName|EndTime"),Dynamic,Provider("RegPropProv")] EndTime;

[PropertyContext("Local|HKEY_LOCAL_MACHINE\\SOFTWARE\\SoftwareVendorName\\AppRegKey\\ApplicationName|Status"),Dynamic,Provider("RegPropProv")] Status;

};

SMS_Def.mof changes:

// this section tells the the inventory agent what to report to the server
#pragma namespace ("\\\\.\\root\\cimv2\\SMS")
#pragma deleteclass("MS_ApplicationName", NOFAIL)
[SMS_Report(TRUE),SMS_Group_Name("MS_ApplicationName"),SMS_Class_ID("SoftwareVendorName|MS_ApplicationName|1.0"),

SMS_Context_1("__ProviderArchitecture=32|uint32"),
SMS_Context_2("__RequiredArchitecture=true|boolean")]
Class MS_ApplicationName: SMS_Class_Template

{

[SMS_Report(TRUE),key] string KeyName;
[SMS_Report(TRUE)] String StartTime;
[SMS_Report(TRUE)] String EndTime;
[SMS_Report(TRUE)] String Status;

};

#pragma namespace ("\\\\.\\root\\cimv2\\SMS")
#pragma deleteclass("MS_ApplicationName_64", NOFAIL)
[SMS_Report(TRUE),SMS_Group_Name("MS_ApplicationName_64"),SMS_Class_ID("SoftwareVendorName |MS_ApplicationName_64|1.0"),

SMS_Context_1("__ProviderArchitecture=64|uint32"),
SMS_Context_2("__RequiredArchitecture=true|boolean")]
Class MS_ApplicationName_64 : SMS_Class_Template

{

[SMS_Report(TRUE),key] string KeyName;
[SMS_Report(TRUE)] String StartTime;
[SMS_Report(TRUE)] String EndTime;
[SMS_Report(TRUE)] String Status;

}; 

Once you have backed up and made the changes outlined above on the server, Run mofcomp.exe on both the sms_def.mof and configuration.mof as follows:

%WINDIR%\System32\WBEM\Mofcomp.exe "X:\Program Files\Microsoft Configuration Manager\Inboxes\clifiles.src\hinv\sms_def.mof"
%WINDIR%\System32\WBEM\Mofcomp.exe "X:\Program Files\Microsoft Configuration Manager\Inboxes\clifiles.src\hinv\configuration.mof"

Where X:\ is the drive where Configuration Manager 2007 is installed.

Once complete, allow the clients to perform the hardware inventory cycle to pick up the changes and start reporting.  At this point it should start working for both your x86 and x64 clients.

Note Be sure to fully test this resolution in your lab to ensure that it is suitable for your environment.

↑ Back to the top


Keywords: vkball, kb

↑ Back to the top

Article Info
Article ID : 2617545
Revision : 1
Created on : 1/8/2017
Published on : 9/27/2011
Exists online : False
Views : 128