Document Purpose: This document provides guidance on converting DCM Solution “templates” to DCM 2007 configuration items.

The Desired Configuration Monitoring Solution 2.0 for Systems Management Server 2003 (DCM Solution) was released as a solution accelerator in October, 2006. The solution could be used to create XML “templates” defining the location for settings and validation rules for those settings. The “templates” could then be distributed via SMS software distribution along with a program which would process the template and compare the actual settings values on a client system against the validation rules defined by the template. Settings which were determined to be mis-configured were then reported to the SMS server via hardware inventory.

The Desired Configuration Management (DCM) feature in System Center Configuration Manager 2007 (ConfigMgr) enables customers to define configuration standards and policies and audit compliance of Windows systems throughout their IT organizations against those defined configurations.

The focus of Desired Configuration Management in ConfigMgr is the collection and reporting of configuration compliance data. Administrators are able to import configuration packs or create DCM configuration items and baselines using the editing features within ConfigMgr. Configuration baselines can then be targeted and deployed to collections of systems. The ConfigMgr client agent accepts configuration items and baselines from the ConfigMgr site server and audits the system for compliance to the configuration item and baseline definitions which have been targeted to that system. Administrators can choose to have the client generate Windows events and/or generate ConfigMgr state messages in response to non-compliant configuration detection. The non-compliance data is forwarded to that client’s site server and available for reporting or as criteria for query-based collections.

The data collected assists organizations in answering questions such as:

This document provides guidance on converting DCM Solution “templates” to DCM 2007 configuration items.

Migrating from DCM Solution for SMS 2003 to DCM in ConfigMgr 2007

Migration from the DCM Solution for SMS 2003 to DCM in ConfigMgr 2007 requires translation of the DCM Solution “templates”, which are written in a schema and rules language called the Best Practice Analyzer (BPA), into DCM configuration items, which are written in a schema and rules language called the DCM Digest. To ease the migration process, the toolkit for ConfigMgr 2007 includes a tool called BPAtoDCM.exe, which will automate translation of most DCM Solution “templates”. Since the schemas and rules languages for the two solutions are each very different and also very flexible and complex, the tool cannot guarantee a full conversion. As a result, some manual steps are required after using the tool.

The high-level process for migrating from the DCM Solution for SMS 2003 to DCM in ConfigMgr 2007 includes:

  1. Use the toolkit tool BPAtoDCM.exe to convert the DCM Solution XML file into DCM 2007 general configuration item XML;

  2. Review and resolve any conversion errors identified in the XML output from Step 1.

  3. Update the datatype for all converted settings from “Other” to the appropriate datatype.

  4. If applicable, use the toolkit tool DCMSubVar.exe to add “chained” settings and objects discovery.

  5. Use the toolkit tool DCM Model Verification Tool (DCMMVTool.exe) to ensure the validity of your general configuration item XML and test the configuration item on an actual system.

  6. Import the completed configuration item into your ConfigMgr site via the SDK or package into a CAB file and import via the ConfigMgr admin console

Each of these high-level steps is described in more detail in the following sections.

Code block 1 - BPAToDCM command

The tool will output a general configuration item DCM Digest XML file for use in DCM as shown in Appendix B. Note that the XML in Appendix B includes hand-edited changes as described in the remaining steps.

Note also that the command in the example above re-directs any messages or warnings returned by BPAToDCM.exe to a file called “ConversionErrors.txt”. By default, all messages and warnings are written to the command prompt window.

Step 1 – Using BPAtoDCM.exe

  1. Start with your DCM solution XML file like the example in Appendix A, which was downloaded from the DCM Solution 2.0.

  2. From a command prompt, navigate to the location where you have installed the BPAtoDCM.exe tool and run the following command:

      Copy Code
    BpaToDcm [/help] [/nologo] [/scope <authScope>] [/name <LogicalName>]
    	[/version <version>] BPAFile DCMFile
    
    /help			 Displays this usage message.
    /nologo			 Suppresses copyright message.
    /scope <authScope>  Specifies AuthoringScopeId for the DCM digest.
    /name <LogicalName> Specifies LogicalName for the DCM digest.  If  not specified, the BPA ConfigName is used.
    /version <version>  Specifies Version number for the DCM digest.  If not specified, 1 is used.
    BPAFile			Input BPA configuration file.
    DCMFile			Output DCM digest file.
    
    Example: C:\Program Files\ConfigMgr 2007 ToolKit V2\DCMTools>BPAToDCM /scope Microsoft.Sample C:\DCMSolution\XPOS_CI.xml C:\DCM2007\XPOS_CI_converted.xml > ConversionErrors.txt

Step 2 – Review and resolve conversion errors

The next step is to check for conversion errors in the resultant DCM 2007 configuration item XML and any warning messages returned from BPAToDCM.exe. Portions of the original DCM Solution “template” XML which fail to convert are copied unedited to the DCM Digest XML file as a comment.

Code block 2 - Example conversion failure

  Copy Code
<SimpleSetting LogicalName="Environment_Variables_Per_Computer_TEMP" DataType="Other">
<Annotation>
	<DisplayName Text="TEMP" />
			<Description Text="" />
</Annotation>
	<RegistryDiscoverySource Hive="HKEY_LOCAL_MACHINE" Depth="Base" Is64Bit="false">
	<Key>SYSTEM\CurrentControlSet\Control\Session Manager\Environment</Key>
			<ValueName>TEMP</ValueName>
</RegistryDiscoverySource>
<Rules>
	<!--
The following Rule could not be converted:
<Rule Name="HKLM-TEMP-Folder-Path" Query="$. != '%SystemRoot%\TEMP'" P1="'%SystemRoot%\TEMP'" Text="The TEMP environment variable contains an invalid path" EventID="1000" Severity="Warning" AlwaysEvaluate="True" />
				-->
</Rules>
</SimpleSetting>

In addition to commenting the original rule, the BPAToDCM.exe tool raised the following warning message:

  Copy Code
c:\DCMSolution\XPOS_CI.xml(90,6): error BD0012: Digest does not support substitution variables: %SystemRoot%

In this example, the conversion tool was unable to interpret the environment variable “%SystemRoot%”. This is a safeguard built into the tool since the BPA schema and rules language use the same pattern for system environment variables and substitution variables. In this case, since the variable is simply a system environment variable, the rule can be easily hand-converted.

Security Note
Rules from the DCM Solution must be negated when translated to DCM 2007. This is because the BPA rules language expressed the “undesired” configuration (i.e. the rule fails when it is true) whereas the new DCM Digest rules language expresses the “desired” configuration (i.e. the rule fails when it is false).

Code block 3 - Example "fixed" conversion failure

  Copy Code
<SimpleSetting LogicalName="Environment_Variables_Per_Computer_TEMP" DataType="Other">
<Annotation>
	 <DisplayName Text="TEMP" />
			 <Description Text="" />
</Annotation>
	 <RegistryDiscoverySource Hive="HKEY_LOCAL_MACHINE" Depth="Base" Is64Bit="false">
	 <Key>SYSTEM\CurrentControlSet\Control\Session Manager\Environment</Key>
			 <ValueName>TEMP</ValueName>
</RegistryDiscoverySource>
<Rules>
<Rule LogicalName="HKLM-TEMP-Folder-Path" Operation="NotEquals" OperandA="%SystemRoot%\TEMP" OperandB="" Severity="Warning">
<Annotation>
<DisplayName Text="TEMP != '%SystemRoot%\TEMP'" />
<Description Text="The TEMP environment variable contains an invalid path" />
</Annotation>
</Rule>
			 <!--
				FIXED:
  The following Rule could not be converted:
				<Rule Name="HKLM-TEMP-Folder-Path" Query="$. != '%SystemRoot%\TEMP'" P1="'%SystemRoot%\TEMP'" Text="The TEMP environment variable contains an invalid path" EventID="1000" Severity="Warning" AlwaysEvaluate="True" />
			 -->
</Rules>
</SimpleSetting>

Known Issues

This list describes known issues converting from DCM Solution “templates” to DCM 2007 configuration items:

Settings that use “substitution variables” will not convert. Use the tool DCMSubVar.exe (also available in the ConfigMgr 2007 toolkit) to perform settings discovery where the location of one setting depends on the value of another setting.

Rules that use “passive rules” will not convert. Use the tool DCMSubVar.exe (also available in the ConfigMgr 2007 toolkit) to create rules where the correct value of one setting depends on the value of another setting.

Settings that use the Cache object processor will not convert. The Cache object processor was not a documented feature in the DCM Solution for SMS 2003. It is not supported in ConfigMgr 2007.

Some File elements in the DCM Solution may convert to both a File and Folder object in DCM 2007. Remove whichever File or Folder object is incorrect.

File elements which use “Ini”, “FullName”, “VersionEx”, and “MD5” or “SHA256” properties will not convert. These element properties are not supported in ConfigMgr 2007.

Settings and rules that use environment variables will not convert. This issue is a side-effect of the previous one. Hand-author the setting or rule in the output DCM 2007 configuration item.

Step 3 – Update datatype for all settings

The BPAToDCM.exe tool will convert all settings as “Other” datatype. This is because the BPA schema used by the DCM Solution did not identify the datatype for settings. Although the “Other” datatype is allowed by DCM 2007, the authoring capabilities within the ConfigMgr console will be severely constrained. To ensure the greatest degree of utility for your converted configuration items, set the datatype for each setting to the one which is most appropriate for that setting.

Available setting datatypes

  1. String

  2. Int64

  3. Double

  4. DateTime

  5. Version

Code block 4 - Converted setting with "Other" datatype

  Copy Code
<SimpleSetting LogicalName="OS_Settings_Explorer_View_Advanced_Settings_HideFileExt" DataType="Other">
<Annotation>
	 <DisplayName Text="HideFileExt" />
			 <Description Text="" />
</Annotation>
	 <RegistryDiscoverySource Hive="HKEY_CURRENT_USER" Depth="Base" Is64Bit="false">
<Key>Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced</Key>
<ValueName>HideFileExt</ValueName>
</RegistryDiscoverySource>
<Rules />
</SimpleSetting>

Code block 5 - Converted setting with corrected datatype

  Copy Code
<SimpleSetting LogicalName="OS_Settings_Explorer_View_Advanced_Settings_HideFileExt" DataType="Int64">
<Annotation>
	 <DisplayName Text="HideFileExt" />
			 <Description Text="" />
</Annotation>
	 <RegistryDiscoverySource Hive="HKEY_CURRENT_USER" Depth="Base" Is64Bit="false">
<Key>Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced</Key>
<ValueName>HideFileExt</ValueName>
</RegistryDiscoverySource>
<Rules />
</SimpleSetting>
Step 4 – Use DCMSubVar.exe tool to add “substitution variables”

As mentioned earlier, the BPAToDCM.exe will not convert settings which use “substitution variables” to perform chained discovery. Chained discovery is necessary when the location of one setting or object is dependent on the value from another setting. For example, many applications will write their “InstallDirectory” setting to the registry. To check the properties of a file object stored in that location, we must first look up the “InstallDirectory” and then use that value as the file’s path.

The DCMSubVar.exe tool is described in greater detail in the "Desired Configuration Management Substitution Variable Tool" section.

Step 5 – Use DCMMVTool.exe to validate and test converted configuration items

Once you have completed conversion of your DCM Solution XML, you can use the DCM Model Verification Tool (DCMMVTool.exe) to check the final DCM 2007 configuration item XML for errors and to test the configuration item on an actual system before uploading to your ConfigMgr site.

The DCMMVTool.exe tool is described in greater detail in the document “Desired Configuration Management Model Verification Tool” section.

Step 6 – Import your converted configuration item to ConfigMgr

At this point, you have completed conversion of your DCM Solution “template” into a valid DCM 2007 configuration item XML. You may now import the final configuration item via the SDK or create a Cabinet file (.cab) with your converted XML and import via the ConfigMgr console.

Appendix A – DCM Solution “template” XML file

Code block 6 - Sample DCM Solution "template" XML

  Copy Code
<?xml version="1.0" encoding="Windows-1252"?>
<BestPracticesConfiguration>
<Configuration ConfigName="XPOS_CI Configuration" ConfigVersion="0.2.0.0">
<ObjectProcessor ObjectType="Group" Assembly="BPA.Common.dll" Class="Microsoft.WindowsServerSystem.BestPracticesAnalyzer.Common.GroupObjectProcessor" />
<ObjectProcessor ObjectType="Directory" Assembly="BPA.ConfigCollector.dll" Class="Microsoft.WindowsServerSystem.BestPracticesAnalyzer.Extensions.DirectoryObjectProcessor" />
<ObjectProcessor ObjectType="Registry" Assembly="BPA.ConfigCollector.dll" Class="Microsoft.WindowsServerSystem.BestPracticesAnalyzer.Extensions.RegistryObjectProcessor" />
<ObjectProcessor ObjectType="SQL" Assembly="BPA.ConfigCollector.dll" Class="Microsoft.WindowsServerSystem.BestPracticesAnalyzer.Extensions.SQLObjectProcessor" />
<ObjectProcessor ObjectType="File" Assembly="BPA.ConfigCollector.dll" Class="Microsoft.WindowsServerSystem.BestPracticesAnalyzer.Extensions.FileObjectProcessor" />
<ObjectProcessor ObjectType="Metabase" Assembly="BPA.ConfigCollector.dll" Class="Microsoft.WindowsServerSystem.BestPracticesAnalyzer.Extensions.MetabaseObjectProcessor" />
<ObjectProcessor ObjectType="WMI" Assembly="BPA.ConfigCollector.dll" Class="Microsoft.WindowsServerSystem.BestPracticesAnalyzer.Extensions.WMIObjectProcessor" />
<ObjectProcessor ObjectType="Cache" Assembly="BPA.Common.dll" Class="Microsoft.WindowsServerSystem.BestPracticesAnalyzer.Common.CacheObjectProcessor" />
<RuleProcessor ObjectType="1" Assembly="BPA.Common.dll" Class="Microsoft.WindowsServerSystem.BestPracticesAnalyzer.Common.MainRuleProcessor" />
<IssueProcessor ObjectType="WMIEvents" Assembly="DCMIssueProcessor.dll" Class="DCMIssueProcessor.WMIIssueProcessor" />
<IssueProcessor ObjectType="NTEvents" Assembly="DCMIssueProcessor.dll" Class="DCMIssueProcessor.EventLogIssueProcessor" />
<ExtFunction Name="checkacl" Assembly="DCMFunctions.dll" Class="DCMFunctions.SecFunctions" Function="checkacl" Returns="Boolean" Parameters="String,String" />
</Configuration>
<!--Windows XP Settings-->
<Object Type="Group" Name="OS Settings">
<Object Type="Registry" Name="Explorer_View_Advanced_Settings" Key2="HKEY_CURRENT_USER" Key3="Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" Key5="Base">
<Setting Key1="HideFileExt">
<!--AdvancedQuery=0-->
<Rule Name="Display_File_Extensions" Query="$. = '0'" Text="File extensions are being displayed on desktop. {1}" EventID="1000" Severity="Warning" AlwaysEvaluate="True" P1="'0'" />
</Setting>
<Setting Key1="Hidden">
<!--AdvancedQuery=0-->
<Rule Name="Display_Hidden_Files" Query="$. = '1'" Text="Hidden files and folders are being displayed on desktop. {1}" EventID="1000" Severity="Warning" AlwaysEvaluate="True" P1="'1'" />
</Setting>
</Object>
<Object Type="WMI" Name="ComputerSystem" Key2="root\cimv2" Key3="Win32_ComputerSystem">
<Setting Key1="NumberOfProcessors">
<!--AdvancedQuery=0-->
<Rule Name="MultipleProcessors" Query="$. &gt; '1'" Text="Desktop system has more than one processor." EventID="1000" Severity="Warning" AlwaysEvaluate="True" P1="'1'" />
</Setting>
<Setting Key1="TotalPhysicalMemory">
<!--AdvancedQuery=0-->
<Rule Name="MemoryBiggerThan1024" Query="$. &lt; '256000000'" Text="System has less than 256 Mb of RAM." EventID="1000" Severity="Warning" AlwaysEvaluate="True" P1="'256000000'" />
</Setting>
</Object>
<Object Type="WMI" Name="DiskDrive" Key2="root\cimv2" Key3="win32_DiskDrive" Key4="Index=0">
<Setting Key1="Size">
<!--AdvancedQuery=0-->
<Rule Name="HDSpaceGreaterThan40Gb" Query="$. &lt; '40000000000'" Text="Main hard drive has less than 40Gb." EventID="1000" Severity="Warning" AlwaysEvaluate="True" P1="'40000000000'" />
</Setting>
</Object>
<Object Type="WMI" Name="LogicalDisks" Key2="root\cimv2" Key3="Win32_LogicalDisk" Key4="Caption = 'C:'">
<Setting Key1="FileSystem">
<!--AdvancedQuery=0-->
<Rule Name="CDriveIsNTFS" Query="$. != 'NTFS'" Text="C: drive is not formatted as NTFS." EventID="1000" Severity="Warning" AlwaysEvaluate="True" P1="'NTFS'" />
</Setting>
</Object>
<Object Type="WMI" Name="OS" Key2="root\cimv2" Key3="Win32_OperatingSystem">
<Setting Key1="SystemDrive">
<!--AdvancedQuery=0-->
<Rule Name="SystemDriveIsC" Query="$. != 'C:'" Text="System drive is not drive C:" EventID="1000" Severity="Warning" AlwaysEvaluate="True" P1="'C:'" />
</Setting>
<Setting Key1="Name">
<!--AdvancedQuery=1-->
<Rule Name="OSIsXPprofessional" Query="not(contains($.,'Windows XP Professional'))" Text="Operating System is not Windows XP Professional" EventID="1000" Severity="Warning" AlwaysEvaluate="True" />
</Setting>
</Object>
</Object>
<Object Type="Group" Name="Services">
<Object Type="WMI" Name="EventLog" Key2="root\cimv2" Key3="Win32_Service" Key4="Name='Eventlog'">
<Setting Key1="Started">
<!--AdvancedQuery=0-->
<Rule Name="EventlogWorking" Query="$. != 'True'" Text="Event log service not started." EventID="1000" Severity="Warning" AlwaysEvaluate="True" P1="'True'" />
</Setting>
</Object>
<Object Type="WMI" Name="Messenger" Key2="root\cimv2" Key3="Win32_Service" Key4="Name='Messenger'">
<Setting Key1="Started">
<!--AdvancedQuery=0-->
<Rule Name="MessengerWorking" Query="$. != 'False'" Text="Messenger service started." EventID="1000" Severity="Warning" AlwaysEvaluate="True" P1="'False'" />
</Setting>
</Object>
</Object>
<!--The items in this group monitor deployment customizations-->
<Object Type="Group" Name="Deployment Customizations">
<Object Type="Registry" Name="CD AutoRun" Key2="HKEY_LOCAL_MACHINE" Key5="Base" Key3="SYSTEM\CurrentControlSet\Services\Cdrom">
<Setting Key1="AutoRun">
<!--AdvancedQuery=0-->
<Rule Name="AutoRun" Query="$. != '0'" P1="'0'" Text="CD AutoRun is not disabled" EventID="1000" Severity="Warning" AlwaysEvaluate="True" />
</Setting>
</Object>
</Object>
<!--The items in this group monitor environment variables-->
<Object Type="Group" Name="Environment Variables">
<Object Type="Registry" Name="Per Computer" Key2="HKEY_LOCAL_MACHINE" Key5="Base" Key3="SYSTEM\CurrentControlSet\Control\Session Manager\Environment">
<Setting Key1="TEMP">
<!--AdvancedQuery=0-->
<Rule Name="HKLM-TEMP-Folder-Path" Query="$. != '%SystemRoot%\TEMP'" P1="'%SystemRoot%\TEMP'" Text="The TEMP environment variable contains an invalid path" EventID="1000" Severity="Warning" AlwaysEvaluate="True" />
</Setting>
<Setting Key1="TMP">
<!--AdvancedQuery=0-->
<Rule Name="HKLM-TMP-Folder-Path" Query="$. != '%SystemRoot%\TEMP'" P1="'%SystemRoot%\TEMP'" Text="The TMP environment variable contains an invalid path" EventID="1000" Severity="Warning" AlwaysEvaluate="True" />
</Setting>
</Object>
<Object Type="Registry" Name="Per User" Key2="HKEY_CURRENT_USER" Key5="Base" Key3="Environment">
<Setting Key1="TEMP">
<!--AdvancedQuery=0-->
<Rule Name="HKCU-TEMP-Folder-Path" Query="$. != '%USERPROFILE%\Local Settings\Temp'" P1="'%USERPROFILE%\Local Settings\Temp'" Text="The TEMP environment variable contains an invalid path" EventID="1000" Severity="Warning" AlwaysEvaluate="True" />
</Setting>
<Setting Key1="TMP">
<!--AdvancedQuery=0-->
<Rule Name="HKCU-TMP-Folder-Path" Query="$. != '%USERPROFILE%\Local Settings\Temp'" P1="'%USERPROFILE%\Local Settings\Temp'" Text="The TMP environment variable contains an invalid path" EventID="1000" Severity="Warning" AlwaysEvaluate="True" />
</Setting>
</Object>
</Object>
<!--The items in this group monitor file associations-->
<Object Type="Group" Name="File Associations">
<Object Type="Registry" Name=".htm" Key2="HKEY_CLASSES_ROOT" Key5="Base" Key3=".htm">
<Setting Key1="(Default)">
<!--AdvancedQuery=0-->
<Rule Name="htm-htmlfile" Query="$. != 'htmlfile'" P1="'htmlfile'" Text="The .htm file extension is not associated with the htmlfile file type" EventID="1000" Severity="Warning" AlwaysEvaluate="True" />
</Setting>
</Object>
<Object Type="Registry" Name=".html" Key2="HKEY_CLASSES_ROOT" Key5="Base" Key3=".html">
<Setting Key1="(Default)">
<!--AdvancedQuery=0-->
<Rule Name="html-htmlfile" Query="$. != 'htmlfile'" P1="'htmlfile'" Text="The .html file extension is not associated with the htmlfile file type" EventID="1000" Severity="Warning" AlwaysEvaluate="True" />
</Setting>
</Object>
</Object>
<!--The items in this group monitor service settings-->
<Object Type="Group" Name="Service Settings">
<Object Type="Registry" Name="Messenger Service" Key2="HKEY_LOCAL_MACHINE" Key5="Base" Key3="SYSTEM\CurrentControlSet\Services\Messenger">
<Setting Key1="Start">
<!--AdvancedQuery=0-->
<Rule Name="MsgrStartup-Type" Query="$. != '4'" P1="'4'" Text="The Messenger service is not disabled" EventID="1000" Severity="Warning" AlwaysEvaluate="True" />
</Setting>
</Object>
<Object Type="Registry" Name="Alerter Service" Key2="HKEY_LOCAL_MACHINE" Key5="Base" Key3="SYSTEM\CurrentControlSet\Services\Alerter">
<Setting Key1="Start">
<!--AdvancedQuery=0-->
<Rule Name="AlerterStartup-Type" Query="$. != '4'" P1="'4'" Text="The Alerter service is not disabled" EventID="1000" Severity="Warning" AlwaysEvaluate="True" />
</Setting>
</Object>
<Object Type="Registry" Name="Application Management Service" Key2="HKEY_LOCAL_MACHINE" Key5="Base" Key3="SYSTEM\CurrentControlSet\Services\AppMgmt">
<Setting Key1="Start">
<!--AdvancedQuery=0-->
<Rule Name="AppMgmtStartup-Type" Query="$. != '3'" P1="'3'" Text="The Application Management service is not set to automatic start" EventID="1000" Severity="Warning" AlwaysEvaluate="True" />
</Setting>
</Object>
<Object Type="Registry" Name="Distributed Link Tracking Client Service" Key2="HKEY_LOCAL_MACHINE" Key5="Base" Key3="SYSTEM\CurrentControlSet\Services\TrkWks">
<Setting Key1="Start">
<!--AdvancedQuery=0-->
<Rule Name="TrkWksStartup-Type" Query="$. != '3'" P1="'3'" Text="The Distributed Link Tracking Client service is not set to automatic start" EventID="1000" Severity="Warning" AlwaysEvaluate="True" />
</Setting>
</Object>
<Object Type="Registry" Name="License Service" Key2="HKEY_LOCAL_MACHINE" Key5="Base" Key3="SYSTEM\CurrentControlSet\Services\LicenseService">
<Setting Key1="Start">
<!--AdvancedQuery=0-->
<Rule Name="LicenseStartup-Type" Query="$. != '4'" P1="'4'" Text="The License service is not disabled" EventID="1000" Severity="Warning" AlwaysEvaluate="True" />
</Setting>
</Object>
<Object Type="Registry" Name="Netmeeting Service" Key2="HKEY_LOCAL_MACHINE" Key5="Base" Key3="SYSTEM\CurrentControlSet\Services\mnmsrvc">
<Setting Key1="Start">
<!--AdvancedQuery=0-->
<Rule Name="NetMeetStartup-Type" Query="$. != '4'" P1="'4'" Text="The NetMeeting Remote Desktop Sharing service is not disabled" EventID="1000" Severity="Warning" AlwaysEvaluate="True" />
</Setting>
</Object>
<Object Type="Registry" Name="NETDDE Service" Key2="HKEY_LOCAL_MACHINE" Key5="Base" Key3="SYSTEM\CurrentControlSet\Services\NETDDE">
<Setting Key1="Start">
<!--AdvancedQuery=0-->
<Rule Name="NETDDEStartup-Type" Query="$. != '4'" P1="'4'" Text="The NETDDE service is not disabled" EventID="1000" Severity="Warning" AlwaysEvaluate="True" />
</Setting>
</Object>
<Object Type="Registry" Name="NETDDEdsdm Service" Key2="HKEY_LOCAL_MACHINE" Key5="Base" Key3="SYSTEM\CurrentControlSet\Services\NETDDEdsdm">
<Setting Key1="Start">
<!--AdvancedQuery=0-->
<Rule Name="NETDDEdsdmStartup-Type" Query="$. != '4'" P1="'4'" Text="The NETDDEdsdm service is not disabled" EventID="1000" Severity="Warning" AlwaysEvaluate="True" />
</Setting>
</Object>
</Object>
<!--The items in this group monitor post-Service Pack 2 updates-->
<Object Type="Group" Name="Service Pack 2 Updates">
<Object Type="WMI" Name="816093" Key2="root\CIMV2" Key3="Win32_QuickFixEngineering" Key4="HotFixID='KB816093'">
<Setting Key1="HotFixID">
<!--AdvancedQuery=0-->
<Rule Name="HotFixID" Query="$." AlwaysEvaluate="True" />
</Setting>
</Object>
<Object Type="Group">
<Setting>
<Rule Name="HotFixID_existsdependency" Query="not($HotFixID)" P1="'KB816093'" Text="Update 816093 is not installed" EventID="1000" Severity="Warning" AlwaysEvaluate="True" />
</Setting>
</Object>
</Object>
</BestPracticesConfiguration>

Appendix B – DCM Digest XML converted from DCM Solution

Code block 7 - Sample converted configuration item XML

  Copy Code
<?xml version="1.0" encoding="utf-8"?>
<!--

  Converted by:		 Microsoft (R) BPA to DCM Conversion Tool version 4.0.6000.0
  Source file:		c:\DCMSolution\XPOS_CI.xml
  Source timestamp:	 2007-10-01T11:03:34.25-07:00
  Conversion timestamp: 2007-10-01T11:03:47.354-07:00

-->
<DesiredConfigurationDigest xmlns="http://schemas.microsoft.com/SystemsCenterConfigurationManager/2006/03/24/DesiredConfiguration">
  <BusinessPolicy LogicalName="XPOS_CI_Configuration" AuthoringScopeId="Microsoft.Sample" Version="1">
	<Annotation>
	<DisplayName Text="XPOS_CI Configuration" />
	<Description Text="" />
	</Annotation>
	<Parts>
	<ParentReferences />
	</Parts>
	<Settings>
	<RootComplexSetting>
		<ComplexSetting LogicalName="OS_Settings">
		<ComplexSetting LogicalName="OS_Settings_Explorer_View_Advanced_Settings">
			<SimpleSetting LogicalName="OS_Settings_Explorer_View_Advanced_Settings_HideFileExt" DataType="Int64">
			<Annotation>
				<DisplayName Text="HideFileExt" />
				<Description Text="" />
			</Annotation>
			<RegistryDiscoverySource Hive="HKEY_CURRENT_USER" Depth="Base" Is64Bit="false">
				<Key>Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced</Key>
				<ValueName>HideFileExt</ValueName>
			</RegistryDiscoverySource>
			<Rules>
				<Rule LogicalName="Display_File_Extensions" Operation="NotEquals" OperandA="0" OperandB="" Severity="Warning">
				<Annotation>
					<DisplayName Text="Display_File_Extensions" />
					<Description Text="File extensions are being displayed on desktop. 0" />
				</Annotation>
				</Rule>
			</Rules>
			</SimpleSetting>
			<SimpleSetting LogicalName="OS_Settings_Explorer_View_Advanced_Settings_Hidden" DataType="Int64">
			<Annotation>
				<DisplayName Text="Hidden" />
				<Description Text="" />
			</Annotation>
			<RegistryDiscoverySource Hive="HKEY_CURRENT_USER" Depth="Base" Is64Bit="false">
				<Key>Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced</Key>
				<ValueName>Hidden</ValueName>
			</RegistryDiscoverySource>
			<Rules>
				<Rule LogicalName="Display_Hidden_Files" Operation="NotEquals" OperandA="1" OperandB="" Severity="Warning">
				<Annotation>
					<DisplayName Text="Display_Hidden_Files" />
					<Description Text="Hidden files and folders are being displayed on desktop. 1" />
				</Annotation>
				</Rule>
			</Rules>
			</SimpleSetting>
			<Annotation>
			<DisplayName Text="Explorer_View_Advanced_Settings" />
			<Description Text="" />
			</Annotation>
		</ComplexSetting>
		<ComplexSetting LogicalName="OS_Settings_ComputerSystem">
			<SimpleSetting LogicalName="OS_Settings_ComputerSystem_NumberOfProcessors" DataType="Int64">
			<Annotation>
				<DisplayName Text="NumberOfProcessors" />
				<Description Text="" />
			</Annotation>
			<WqlQueryDiscoverySource>
				<Namespace>root\cimv2</Namespace>
				<Class>Win32_ComputerSystem</Class>
				<Property>NumberOfProcessors</Property>
			</WqlQueryDiscoverySource>
			<Rules>
				<Rule LogicalName="MultipleProcessors" Operation="LessEquals" OperandA="1" OperandB="" Severity="Warning">
				<Annotation>
					<DisplayName Text="MultipleProcessors" />
					<Description Text="Desktop system has more than one processor." />
				</Annotation>
				</Rule>
			</Rules>
			</SimpleSetting>
			<SimpleSetting LogicalName="OS_Settings_ComputerSystem_TotalPhysicalMemory" DataType="Int64">
			<Annotation>
				<DisplayName Text="TotalPhysicalMemory" />
				<Description Text="" />
			</Annotation>
			<WqlQueryDiscoverySource>
				<Namespace>root\cimv2</Namespace>
				<Class>Win32_ComputerSystem</Class>
				<Property>TotalPhysicalMemory</Property>
			</WqlQueryDiscoverySource>
			<Rules>
				<Rule LogicalName="MemoryBiggerThan1024" Operation="GreaterEquals" OperandA="256000000" OperandB="" Severity="Warning">
				<Annotation>
					<DisplayName Text="MemoryBiggerThan1024" />
					<Description Text="System has less than 256 Mb of RAM." />
				</Annotation>
				</Rule>
			</Rules>
			</SimpleSetting>
			<Annotation>
			<DisplayName Text="ComputerSystem" />
			<Description Text="" />
			</Annotation>
		</ComplexSetting>
		<ComplexSetting LogicalName="OS_Settings_DiskDrive">
			<SimpleSetting LogicalName="OS_Settings_DiskDrive_Size" DataType="Int64">
			<Annotation>
				<DisplayName Text="Size" />
				<Description Text="" />
			</Annotation>
			<WqlQueryDiscoverySource>
				<Namespace>root\cimv2</Namespace>
				<Class>win32_DiskDrive</Class>
				<Property>Size</Property>
				<Where>Index=0</Where>
			</WqlQueryDiscoverySource>
			<Rules>
				<Rule LogicalName="HDSpaceGreaterThan40Gb" Operation="GreaterEquals" OperandA="40000000000" OperandB="" Severity="Warning">
				<Annotation>
					<DisplayName Text="HDSpaceGreaterThan40Gb" />
					<Description Text="Main hard drive has less than 40Gb." />
				</Annotation>
				</Rule>
			</Rules>
			</SimpleSetting>
			<Annotation>
			<DisplayName Text="DiskDrive" />
			<Description Text="" />
			</Annotation>
		</ComplexSetting>
		<ComplexSetting LogicalName="OS_Settings_LogicalDisks">
			<SimpleSetting LogicalName="OS_Settings_LogicalDisks_FileSystem" DataType="String">
			<Annotation>
				<DisplayName Text="FileSystem" />
				<Description Text="" />
			</Annotation>
			<WqlQueryDiscoverySource>
				<Namespace>root\cimv2</Namespace>
				<Class>Win32_LogicalDisk</Class>
				<Property>FileSystem</Property>
				<Where>Caption = 'C:'</Where>
			</WqlQueryDiscoverySource>
			<Rules>
				<Rule LogicalName="CDriveIsNTFS" Operation="Equals" OperandA="NTFS" OperandB="" Severity="Warning">
				<Annotation>
					<DisplayName Text="CDriveIsNTFS" />
					<Description Text="C: drive is not formatted as NTFS." />
				</Annotation>
				</Rule>
			</Rules>
			</SimpleSetting>
			<Annotation>
			<DisplayName Text="LogicalDisks" />
			<Description Text="" />
			</Annotation>
		</ComplexSetting>
		<ComplexSetting LogicalName="OS_Settings_OS">
			<SimpleSetting LogicalName="OS_Settings_OS_SystemDrive" DataType="String">
			<Annotation>
				<DisplayName Text="SystemDrive" />
				<Description Text="" />
			</Annotation>
			<WqlQueryDiscoverySource>
				<Namespace>root\cimv2</Namespace>
				<Class>Win32_OperatingSystem</Class>
				<Property>SystemDrive</Property>
			</WqlQueryDiscoverySource>
			<Rules>
				<Rule LogicalName="SystemDriveIsC" Operation="Equals" OperandA="C:" OperandB="" Severity="Warning">
				<Annotation>
					<DisplayName Text="SystemDriveIsC" />
					<Description Text="System drive is not drive C:" />
				</Annotation>
				</Rule>
			</Rules>
			</SimpleSetting>
			<SimpleSetting LogicalName="OS_Settings_OS_Name" DataType="String">
			<Annotation>
				<DisplayName Text="Name" />
				<Description Text="" />
			</Annotation>
			<WqlQueryDiscoverySource>
				<Namespace>root\cimv2</Namespace>
				<Class>Win32_OperatingSystem</Class>
				<Property>Name</Property>
			</WqlQueryDiscoverySource>
			<Rules>
				<Rule LogicalName="OSIsXPprofessional" Operation="Contains" OperandA="Windows XP Professional" OperandB="" Severity="Warning">
				<Annotation>
					<DisplayName Text="OSIsXPprofessional" />
					<Description Text="Operating System is not Windows XP Professional" />
				</Annotation>
				</Rule>
			</Rules>
			</SimpleSetting>
			<Annotation>
			<DisplayName Text="OS" />
			<Description Text="" />
			</Annotation>
		</ComplexSetting>
		<Annotation>
			<DisplayName Text="OS Settings" />
			<Description Text="" />
		</Annotation>
		</ComplexSetting>
		<ComplexSetting LogicalName="Services">
		<ComplexSetting LogicalName="Services_EventLog">
			<SimpleSetting LogicalName="Services_EventLog_Started" DataType="String">
			<Annotation>
				<DisplayName Text="Started" />
				<Description Text="" />
			</Annotation>
			<WqlQueryDiscoverySource>
				<Namespace>root\cimv2</Namespace>
				<Class>Win32_Service</Class>
				<Property>Started</Property>
				<Where>Name='Eventlog'</Where>
			</WqlQueryDiscoverySource>
			<Rules>
				<Rule LogicalName="EventlogWorking" Operation="Equals" OperandA="True" OperandB="" Severity="Warning">
				<Annotation>
					<DisplayName Text="EventlogWorking" />
					<Description Text="Event log service not started." />
				</Annotation>
				</Rule>
			</Rules>
			</SimpleSetting>
			<Annotation>
			<DisplayName Text="EventLog" />
			<Description Text="" />
			</Annotation>
		</ComplexSetting>
		<ComplexSetting LogicalName="Services_Messenger">
			<SimpleSetting LogicalName="Services_Messenger_Started" DataType="String">
			<Annotation>
				<DisplayName Text="Started" />
				<Description Text="" />
			</Annotation>
			<WqlQueryDiscoverySource>
				<Namespace>root\cimv2</Namespace>
				<Class>Win32_Service</Class>
				<Property>Started</Property>
				<Where>Name='Messenger'</Where>
			</WqlQueryDiscoverySource>
			<Rules>
				<Rule LogicalName="MessengerWorking" Operation="Equals" OperandA="False" OperandB="" Severity="Warning">
				<Annotation>
					<DisplayName Text="MessengerWorking" />
					<Description Text="Messenger service started." />
				</Annotation>
				</Rule>
			</Rules>
			</SimpleSetting>
			<Annotation>
			<DisplayName Text="Messenger" />
			<Description Text="" />
			</Annotation>
		</ComplexSetting>
		<Annotation>
			<DisplayName Text="Services" />
			<Description Text="" />
		</Annotation>
		</ComplexSetting>
		<ComplexSetting LogicalName="Deployment_Customizations">
		<ComplexSetting LogicalName="Deployment_Customizations_CD_AutoRun">
			<SimpleSetting LogicalName="Deployment_Customizations_CD_AutoRun_AutoRun" DataType="Int64">
			<Annotation>
				<DisplayName Text="AutoRun" />
				<Description Text="" />
			</Annotation>
			<RegistryDiscoverySource Hive="HKEY_LOCAL_MACHINE" Depth="Base" Is64Bit="false">
				<Key>SYSTEM\CurrentControlSet\Services\Cdrom</Key>
				<ValueName>AutoRun</ValueName>
			</RegistryDiscoverySource>
			<Rules>
				<Rule LogicalName="AutoRun" Operation="Equals" OperandA="0" OperandB="" Severity="Warning">
				<Annotation>
					<DisplayName Text="AutoRun" />
					<Description Text="CD AutoRun is not disabled" />
				</Annotation>
				</Rule>
			</Rules>
			</SimpleSetting>
			<Annotation>
			<DisplayName Text="CD AutoRun" />
			<Description Text="" />
			</Annotation>
		</ComplexSetting>
		<Annotation>
			<DisplayName Text="Deployment Customizations" />
			<Description Text="" />
		</Annotation>
		</ComplexSetting>
		<ComplexSetting LogicalName="Environment_Variables">
		<ComplexSetting LogicalName="Environment_Variables_Per_Computer">
			<SimpleSetting LogicalName="Environment_Variables_Per_Computer_TEMP" DataType="String">
			<Annotation>
				<DisplayName Text="TEMP" />
				<Description Text="" />
			</Annotation>
			<RegistryDiscoverySource Hive="HKEY_LOCAL_MACHINE" Depth="Base" Is64Bit="false">
				<Key>SYSTEM\CurrentControlSet\Control\Session Manager\Environment</Key>
				<ValueName>TEMP</ValueName>
			</RegistryDiscoverySource>
			<Rules>
  <Rule LogicalName="HKLM-TEMP-Folder-Path" Operation="Equals" OperandA="%SystemRoot%\TEMP" OperandB="" Severity="Warning">
  <Annotation>
  <DisplayName Text="TEMP should be %SystemRoot%\TEMP" />
  <Description Text="The TEMP environment variable contains an invalid path" />
  </Annotation>
  </Rule>
				<!--
				FIXED: The following Rule could not be converted:
				<Rule Name="HKLM-TEMP-Folder-Path" Query="$. != '%SystemRoot%\TEMP'" P1="'%SystemRoot%\TEMP'" Text="The TEMP environment variable contains an invalid path" EventID="1000" Severity="Warning" AlwaysEvaluate="True" />
				-->
			</Rules>
			</SimpleSetting>
			<SimpleSetting LogicalName="Environment_Variables_Per_Computer_TMP" DataType="String">
			<Annotation>
				<DisplayName Text="TMP" />
				<Description Text="" />
			</Annotation>
			<RegistryDiscoverySource Hive="HKEY_LOCAL_MACHINE" Depth="Base" Is64Bit="false">
				<Key>SYSTEM\CurrentControlSet\Control\Session Manager\Environment</Key>
				<ValueName>TMP</ValueName>
			</RegistryDiscoverySource>
			<Rules>
  <Rule LogicalName="HKLM-TMP-Folder-Path" Operation="Equals" OperandA="%SystemRoot%\TEMP" OperandB="" Severity="Warning">
  <Annotation>
  <DisplayName Text="TMP should be %SystemRoot%\TEMP" />
  <Description Text="The TMP environment variable contains an invalid path" />
  </Annotation>
  </Rule>
  <!--
				FIXED: The following Rule could not be converted:
				<Rule Name="HKLM-TMP-Folder-Path" Query="$. != '%SystemRoot%\TEMP'" P1="'%SystemRoot%\TEMP'" Text="The TMP environment variable contains an invalid path" EventID="1000" Severity="Warning" AlwaysEvaluate="True" />
				-->
			</Rules>
			</SimpleSetting>
			<Annotation>
			<DisplayName Text="Per Computer" />
			<Description Text="" />
			</Annotation>
		</ComplexSetting>
		<ComplexSetting LogicalName="Environment_Variables_Per_User">
			<SimpleSetting LogicalName="Environment_Variables_Per_User_TEMP" DataType="String">
			<Annotation>
				<DisplayName Text="TEMP" />
				<Description Text="" />
			</Annotation>
			<RegistryDiscoverySource Hive="HKEY_CURRENT_USER" Depth="Base" Is64Bit="false">
				<Key>Environment</Key>
				<ValueName>TEMP</ValueName>
			</RegistryDiscoverySource>
			<Rules>
  <Rule LogicalName="HKCU-TEMP-Folder-Path" Operation="Equals" OperandA="%USERPROFILE%\Local Settings\Temp" OperandB="" Severity="Warning">
  <Annotation>
  <DisplayName Text="TEMP should be %USERPROFILE%\Local Settings\TEMP" />
  <Description Text="The TEMP environment variable contains an invalid path" />
  </Annotation>
  </Rule>
  <!--
				FIXED: The following Rule could not be converted:
				<Rule Name="HKCU-TEMP-Folder-Path" Query="$. != '%USERPROFILE%\Local Settings\Temp'" P1="'%USERPROFILE%\Local Settings\Temp'" Text="The TEMP environment variable contains an invalid path" EventID="1000" Severity="Warning" AlwaysEvaluate="True" />
				-->
			</Rules>
			</SimpleSetting>
			<SimpleSetting LogicalName="Environment_Variables_Per_User_TMP" DataType="String">
			<Annotation>
				<DisplayName Text="TMP" />
				<Description Text="" />
			</Annotation>
			<RegistryDiscoverySource Hive="HKEY_CURRENT_USER" Depth="Base" Is64Bit="false">
				<Key>Environment</Key>
				<ValueName>TMP</ValueName>
			</RegistryDiscoverySource>
			<Rules>
  <Rule LogicalName="HKCU-TMP-Folder-Path" Operation="Equals" OperandA="%USERPROFILE%\Local Settings\Temp" OperandB="" Severity="Warning">
  <Annotation>
  <DisplayName Text="TMP should be %USERPROFILE%\Local Settings\TEMP" />
  <Description Text="The TMP environment variable contains an invalid path" />
  </Annotation>
  </Rule>
  <!--
				FIXED: The following Rule could not be converted:
				<Rule Name="HKCU-TMP-Folder-Path" Query="$. != '%USERPROFILE%\Local Settings\Temp'" P1="'%USERPROFILE%\Local Settings\Temp'" Text="The TMP environment variable contains an invalid path" EventID="1000" Severity="Warning" AlwaysEvaluate="True" />
				-->
			</Rules>
			</SimpleSetting>
			<Annotation>
			<DisplayName Text="Per User" />
			<Description Text="" />
			</Annotation>
		</ComplexSetting>
		<Annotation>
			<DisplayName Text="Environment Variables" />
			<Description Text="" />
		</Annotation>
		</ComplexSetting>
		<ComplexSetting LogicalName="File_Associations">
		<ComplexSetting LogicalName="File_Associations_.htm">
			<SimpleSetting LogicalName="File_Associations_.htm__Default_" DataType="String">
			<Annotation>
				<DisplayName Text="(Default)" />
				<Description Text="" />
			</Annotation>
			<RegistryDiscoverySource Hive="HKEY_CLASSES_ROOT" Depth="Base" Is64Bit="false">
				<Key>.htm</Key>
				<ValueName></ValueName>
			</RegistryDiscoverySource>
			<Rules>
				<Rule LogicalName="htm-htmlfile" Operation="Equals" OperandA="htmlfile" OperandB="" Severity="Warning">
				<Annotation>
					<DisplayName Text="htm-htmlfile" />
					<Description Text="The .htm file extension is not associated with the htmlfile file type" />
				</Annotation>
				</Rule>
			</Rules>
			</SimpleSetting>
			<Annotation>
			<DisplayName Text=".htm" />
			<Description Text="" />
			</Annotation>
		</ComplexSetting>
		<ComplexSetting LogicalName="File_Associations_.html">
			<SimpleSetting LogicalName="File_Associations_.html__Default_" DataType="String">
			<Annotation>
				<DisplayName Text="(Default)" />
				<Description Text="" />
			</Annotation>
			<RegistryDiscoverySource Hive="HKEY_CLASSES_ROOT" Depth="Base" Is64Bit="false">
				<Key>.html</Key>
				<ValueName></ValueName>
			</RegistryDiscoverySource>
			<Rules>
				<Rule LogicalName="html-htmlfile" Operation="Equals" OperandA="htmlfile" OperandB="" Severity="Warning">
				<Annotation>
					<DisplayName Text="html-htmlfile" />
					<Description Text="The .html file extension is not associated with the htmlfile file type" />
				</Annotation>
				</Rule>
			</Rules>
			</SimpleSetting>
			<Annotation>
			<DisplayName Text=".html" />
			<Description Text="" />
			</Annotation>
		</ComplexSetting>
		<Annotation>
			<DisplayName Text="File Associations" />
			<Description Text="" />
		</Annotation>
		</ComplexSetting>
		<ComplexSetting LogicalName="Service_Settings">
		<ComplexSetting LogicalName="Service_Settings_Messenger_Service">
			<SimpleSetting LogicalName="Service_Settings_Messenger_Service_Start" DataType="Int64">
			<Annotation>
				<DisplayName Text="Start" />
				<Description Text="" />
			</Annotation>
			<RegistryDiscoverySource Hive="HKEY_LOCAL_MACHINE" Depth="Base" Is64Bit="false">
				<Key>SYSTEM\CurrentControlSet\Services\Messenger</Key>
				<ValueName>Start</ValueName>
			</RegistryDiscoverySource>
			<Rules>
				<Rule LogicalName="MsgrStartup-Type" Operation="Equals" OperandA="4" OperandB="" Severity="Warning">
				<Annotation>
					<DisplayName Text="MsgrStartup-Type" />
					<Description Text="The Messenger service is not disabled" />
				</Annotation>
				</Rule>
			</Rules>
			</SimpleSetting>
			<Annotation>
			<DisplayName Text="Messenger Service" />
			<Description Text="" />
			</Annotation>
		</ComplexSetting>
		<ComplexSetting LogicalName="Service_Settings_Alerter_Service">
			<SimpleSetting LogicalName="Service_Settings_Alerter_Service_Start" DataType="Int64">
			<Annotation>
				<DisplayName Text="Start" />
				<Description Text="" />
			</Annotation>
			<RegistryDiscoverySource Hive="HKEY_LOCAL_MACHINE" Depth="Base" Is64Bit="false">
				<Key>SYSTEM\CurrentControlSet\Services\Alerter</Key>
				<ValueName>Start</ValueName>
			</RegistryDiscoverySource>
			<Rules>
				<Rule LogicalName="AlerterStartup-Type" Operation="Equals" OperandA="4" OperandB="" Severity="Warning">
				<Annotation>
					<DisplayName Text="AlerterStartup-Type" />
					<Description Text="The Alerter service is not disabled" />
				</Annotation>
				</Rule>
			</Rules>
			</SimpleSetting>
			<Annotation>
			<DisplayName Text="Alerter Service" />
			<Description Text="" />
			</Annotation>
		</ComplexSetting>
		<ComplexSetting LogicalName="Service_Settings_Application_Management_Service">
			<SimpleSetting LogicalName="Service_Settings_Application_Management_Service_Start" DataType="Int64">
			<Annotation>
				<DisplayName Text="Start" />
				<Description Text="" />
			</Annotation>
			<RegistryDiscoverySource Hive="HKEY_LOCAL_MACHINE" Depth="Base" Is64Bit="false">
				<Key>SYSTEM\CurrentControlSet\Services\AppMgmt</Key>
				<ValueName>Start</ValueName>
			</RegistryDiscoverySource>
			<Rules>
				<Rule LogicalName="AppMgmtStartup-Type" Operation="Equals" OperandA="3" OperandB="" Severity="Warning">
				<Annotation>
					<DisplayName Text="AppMgmtStartup-Type" />
					<Description Text="The Application Management service is not set to automatic start" />
				</Annotation>
				</Rule>
			</Rules>
			</SimpleSetting>
			<Annotation>
			<DisplayName Text="Application Management Service" />
			<Description Text="" />
			</Annotation>
		</ComplexSetting>
		<ComplexSetting LogicalName="Service_Settings_Distributed_Link_Tracking_Client_Service">
			<SimpleSetting LogicalName="Service_Settings_Distributed_Link_Tracking_Client_Service_Start" DataType="Int64">
			<Annotation>
				<DisplayName Text="Start" />
				<Description Text="" />
			</Annotation>
			<RegistryDiscoverySource Hive="HKEY_LOCAL_MACHINE" Depth="Base" Is64Bit="false">
				<Key>SYSTEM\CurrentControlSet\Services\TrkWks</Key>
				<ValueName>Start</ValueName>
			</RegistryDiscoverySource>
			<Rules>
				<Rule LogicalName="TrkWksStartup-Type" Operation="Equals" OperandA="3" OperandB="" Severity="Warning">
				<Annotation>
					<DisplayName Text="TrkWksStartup-Type" />
					<Description Text="The Distributed Link Tracking Client service is not set to automatic start" />
				</Annotation>
				</Rule>
			</Rules>
			</SimpleSetting>
			<Annotation>
			<DisplayName Text="Distributed Link Tracking Client Service" />
			<Description Text="" />
			</Annotation>
		</ComplexSetting>
		<ComplexSetting LogicalName="Service_Settings_License_Service">
			<SimpleSetting LogicalName="Service_Settings_License_Service_Start" DataType="Int64">
			<Annotation>
				<DisplayName Text="Start" />
				<Description Text="" />
			</Annotation>
			<RegistryDiscoverySource Hive="HKEY_LOCAL_MACHINE" Depth="Base" Is64Bit="false">
				<Key>SYSTEM\CurrentControlSet\Services\LicenseService</Key>
				<ValueName>Start</ValueName>
			</RegistryDiscoverySource>
			<Rules>
				<Rule LogicalName="LicenseStartup-Type" Operation="Equals" OperandA="4" OperandB="" Severity="Warning">
				<Annotation>
					<DisplayName Text="LicenseStartup-Type" />
					<Description Text="The License service is not disabled" />
				</Annotation>
				</Rule>
			</Rules>
			</SimpleSetting>
			<Annotation>
			<DisplayName Text="License Service" />
			<Description Text="" />
			</Annotation>
		</ComplexSetting>
		<ComplexSetting LogicalName="Service_Settings_Netmeeting_Service">
			<SimpleSetting LogicalName="Service_Settings_Netmeeting_Service_Start" DataType="Int64">
			<Annotation>
				<DisplayName Text="Start" />
				<Description Text="" />
			</Annotation>
			<RegistryDiscoverySource Hive="HKEY_LOCAL_MACHINE" Depth="Base" Is64Bit="false">
				<Key>SYSTEM\CurrentControlSet\Services\mnmsrvc</Key>
				<ValueName>Start</ValueName>
			</RegistryDiscoverySource>
			<Rules>
				<Rule LogicalName="NetMeetStartup-Type" Operation="Equals" OperandA="4" OperandB="" Severity="Warning">
				<Annotation>
					<DisplayName Text="NetMeetStartup-Type" />
					<Description Text="The NetMeeting Remote Desktop Sharing service is not disabled" />
				</Annotation>
				</Rule>
			</Rules>
			</SimpleSetting>
			<Annotation>
			<DisplayName Text="Netmeeting Service" />
			<Description Text="" />
			</Annotation>
		</ComplexSetting>
		<ComplexSetting LogicalName="Service_Settings_NETDDE_Service">
			<SimpleSetting LogicalName="Service_Settings_NETDDE_Service_Start" DataType="Int64">
			<Annotation>
				<DisplayName Text="Start" />
				<Description Text="" />
			</Annotation>
			<RegistryDiscoverySource Hive="HKEY_LOCAL_MACHINE" Depth="Base" Is64Bit="false">
				<Key>SYSTEM\CurrentControlSet\Services\NETDDE</Key>
				<ValueName>Start</ValueName>
			</RegistryDiscoverySource>
			<Rules>
				<Rule LogicalName="NETDDEStartup-Type" Operation="Equals" OperandA="4" OperandB="" Severity="Warning">
				<Annotation>
					<DisplayName Text="NETDDEStartup-Type" />
					<Description Text="The NETDDE service is not disabled" />
				</Annotation>
				</Rule>
			</Rules>
			</SimpleSetting>
			<Annotation>
			<DisplayName Text="NETDDE Service" />
			<Description Text="" />
			</Annotation>
		</ComplexSetting>
		<ComplexSetting LogicalName="Service_Settings_NETDDEdsdm_Service">
			<SimpleSetting LogicalName="Service_Settings_NETDDEdsdm_Service_Start" DataType="Int64">
			<Annotation>
				<DisplayName Text="Start" />
				<Description Text="" />
			</Annotation>
			<RegistryDiscoverySource Hive="HKEY_LOCAL_MACHINE" Depth="Base" Is64Bit="false">
				<Key>SYSTEM\CurrentControlSet\Services\NETDDEdsdm</Key>
				<ValueName>Start</ValueName>
			</RegistryDiscoverySource>
			<Rules>
				<Rule LogicalName="NETDDEdsdmStartup-Type" Operation="Equals" OperandA="4" OperandB="" Severity="Warning">
				<Annotation>
					<DisplayName Text="NETDDEdsdmStartup-Type" />
					<Description Text="The NETDDEdsdm service is not disabled" />
				</Annotation>
				</Rule>
			</Rules>
			</SimpleSetting>
			<Annotation>
			<DisplayName Text="NETDDEdsdm Service" />
			<Description Text="" />
			</Annotation>
		</ComplexSetting>
		<Annotation>
			<DisplayName Text="Service Settings" />
			<Description Text="" />
		</Annotation>
		</ComplexSetting>
		<ComplexSetting LogicalName="Service_Pack_2_Updates">
		<ComplexSetting LogicalName="Service_Pack_2_Updates_816093">
			<SimpleSetting LogicalName="Service_Pack_2_Updates_816093_HotFixID" DataType="Int64">
			<Annotation>
				<DisplayName Text="HotFixID" />
				<Description Text="" />
			</Annotation>
			<ExistentialRule Operation="NotEquals" OperandA="0" OperandB="" Severity="Warning">
				<Annotation>
				<DisplayName Text="HotFixID_existsdependency" />
				<Description Text="Update 816093 is not installed" />
				</Annotation>
			</ExistentialRule>
			<WqlQueryDiscoverySource>
				<Namespace>root\CIMV2</Namespace>
				<Class>Win32_QuickFixEngineering</Class>
				<Property>HotFixID</Property>
				<Where>HotFixID='KB816093'</Where>
			</WqlQueryDiscoverySource>
			<Rules />
			</SimpleSetting>
			<Annotation>
			<DisplayName Text="816093" />
			<Description Text="" />
			</Annotation>
		</ComplexSetting>
		<Annotation>
			<DisplayName Text="Service Pack 2 Updates" />
			<Description Text="" />
		</Annotation>
		</ComplexSetting>
	</RootComplexSetting>
	</Settings>
  </BusinessPolicy>
</DesiredConfigurationDigest>