<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>winDeploy Blog</title>
	<atom:link href="http://www.windeploy.co.uk/blog/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.windeploy.co.uk/blog</link>
	<description>The Windows Deployment Specialists blog</description>
	<lastBuildDate>Sun, 13 Jun 2010 17:08:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Configuration Manager 2007 &#8211; Object Naming Standards.</title>
		<link>http://www.windeploy.co.uk/blog/index.php/2010/06/configuration-manager-2007-object-naming-standards/</link>
		<comments>http://www.windeploy.co.uk/blog/index.php/2010/06/configuration-manager-2007-object-naming-standards/#comments</comments>
		<pubDate>Sun, 13 Jun 2010 13:45:14 +0000</pubDate>
		<dc:creator>Tone</dc:creator>
				<category><![CDATA[Microsoft System Center Configuration Manager 2007]]></category>
		<category><![CDATA[SCCM]]></category>

		<guid isPermaLink="false">http://www.windeploy.co.uk/blog/?p=161</guid>
		<description><![CDATA[Package Name The name of the package, up to 50 characters. This entry is required. Version The version of the package, up to 32 characters. This entry is optional. Publisher The publisher of the package, up to 32 characters. This entry is required. Language The language version of the package, up to 32 characters. This [...]]]></description>
			<content:encoded><![CDATA[<h2>Package</h2>
<p><strong>Name</strong> The name of the package, up to 50 characters. This entry is required.<br />
<strong>Version</strong> The version of the package, up to 32 characters. This entry is optional.<br />
<strong>Publisher</strong> The publisher of the package, up to 32 characters. This entry is required.<br />
<strong>Language</strong> The language version of the package, up to 32 characters. This entry is required.<br />
<strong>Comment</strong> An optional comment about the package, up to 127 characters.</p>
<h2>Program</h2>
<p><strong>Name</strong> The name of the program, up to 50 characters. This entry must be unique within a package and is used when defining advertisements. This entry is required.<br />
<strong>Comment</strong> An optional comment about the program, up to 127 characters.<br />
<strong>CommandLine</strong> Specifies the command line for the program, up to 127 characters. This entry is required.<br />
<strong>StartIn</strong> The working folder for the program, up to 127 characters. This entry is optional.<br />
<strong>AdditionalProgramRequirements</strong> Optional text that can include any other information or requirements for client computers, up to 127 characters.</p>
<h2>Advertisements</h2>
<p><strong>Name </strong> Specifies the name of the advertisement, up to 100 characters. This field is required.<br />
<strong>Comment </strong> Specifies optional text about the advertisement, such as a description. You can use up to 127 characters.</p>
<h2>Collections</h2>
<p><strong>Name </strong> Specifies the name of the collection, up to a total of 127 characters. This field is required and must be unique within the <strong>Collections</strong> node.<br />
<strong>Comment</strong> An optional comment about the package, up to 127 characters</p>
<h2>Folders</h2>
<p>Valid folder names are up to 127 characters and must not contain any of the following characters / | \ : * &#8221; &lt; &gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.windeploy.co.uk/blog/index.php/2010/06/configuration-manager-2007-object-naming-standards/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SCCM ACT Connector error -2146232060 (ACT 5.5)</title>
		<link>http://www.windeploy.co.uk/blog/index.php/2010/03/act-connector-error-2146232060/</link>
		<comments>http://www.windeploy.co.uk/blog/index.php/2010/03/act-connector-error-2146232060/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 10:11:07 +0000</pubDate>
		<dc:creator>Tone</dc:creator>
				<category><![CDATA[Application Compatibility Toolkit]]></category>
		<category><![CDATA[SCCM]]></category>

		<guid isPermaLink="false">http://www.windeploy.co.uk/blog/?p=150</guid>
		<description><![CDATA[You see error -2146232060 when attempting to configure your ACT database using the following steps: In the Configuration Manager console, navigate to System Center Configuration Manager / Site Database / Computer Management / Application Compatibility Toolkit Connector/ Application Compatibility Toolkit Server To open the properties of the ACT server right-click the ACT server in the [...]]]></description>
			<content:encoded><![CDATA[<p>You see error -2146232060 when attempting to configure your ACT database using the following steps:</p>
<ol>
<li>In the Configuration Manager console, navigate to<br />
<strong>System Center Configuration Manager</strong> / <strong>Site Database</strong> / <strong>Computer Management</strong> / <strong>Application Compatibility Toolkit Connector/ Application Compatibility Toolkit Server</strong></li>
<li>To open the properties of the ACT server right-click the ACT server in the results pane and select <strong>Properties</strong>. Alternatively you can select <strong>Configure ACT Server</strong> in the <strong>Actions</strong> pane or click the <strong>Actions</strong> menu and select <strong>Configure ACT Server</strong>.</li>
<li>To specify the Microsoft SQL server that contains the ACT database type the name of the server and click the <strong>Connect</strong> button. Alternatively, you can click the drop down and select <strong>Browse for more</strong> to open the <strong>Select Server</strong> dialog box. Select the server you want to use and click <strong>OK</strong>.</li>
<li>Specify the <strong>ACT Database</strong> to connect to using the drop down and selecting the database.</li>
<li>To close the <strong>ACT Configuration</strong> properties dialog box, click <strong>OK</strong>.</li>
</ol>
<div id="attachment_149" class="wp-caption aligncenter" style="width: 416px"><a href="http://www.windeploy.co.uk/blog/wp-content/uploads/2010/03/configure-act-server-properties.png"><img class="size-full wp-image-149" title="configure act server properties" src="http://www.windeploy.co.uk/blog/wp-content/uploads/2010/03/configure-act-server-properties.png" alt="configure act server properties" width="406" height="488" /></a><p class="wp-caption-text">configure act server properties</p></div>
<p>At this point you receive the following error:</p>
<blockquote><p><strong>Check Connection</strong></p>
<p><strong>Cannot connect to COMPUTERNAME.</strong></p>
<p><strong>[-2146232060] Windows NT user or group &#8216;DOMAIN\ COMPUTERNAME$&#8217; not found. Check the name again.</strong></p>
<p><strong>&#8216;DOMAIN\ COMPUTERNAME $&#8217; is not a valid login or you do not have permission.</strong></p></blockquote>
<div id="attachment_151" class="wp-caption aligncenter" style="width: 409px"><a href="http://www.windeploy.co.uk/blog/wp-content/uploads/2010/03/check-connection-2146232060.png"><img class="size-full wp-image-151" title="check connection -2146232060" src="http://www.windeploy.co.uk/blog/wp-content/uploads/2010/03/check-connection-2146232060.png" alt="check connection -2146232060" width="399" height="178" /></a><p class="wp-caption-text">check connection -2146232060</p></div>
<p>Microsoft will not be releasing a fix but the following modified script can be used to configure ACT connector to work with ACT 5.5 install, just change XXXX in the script as per the comments.</p>
<pre class="brush: vbnet">Server = "XXXXXX"    '&lt;- Name of ConfigMgr server where ACT Connector is installed
SiteCode = "XXX"    '&lt;- Three letter side code of ConfigMgr server where ACT Connector is installed
ActServer = "XXXXXX"    '&lt;- Name of SQL server where ACT is installed
ActDatabase = "XXXX"    '&lt;- Name of ACT database on SQL server (set during ACT install)
MachineAcct = ""    '&lt;- Machine Account (Optional parameter)!  If the ACT is installed on different
'   server than the ACT Connector, then provide the machine account name the ACTC
'    provider runs under (domain\machineaccount$) where the machine account name is
'    the ConfigMgr server where the ACT Connector is installed.

Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &amp; Server &amp; "\root\sms\site_" &amp; SiteCode)
Set wbemObjectSet = objWMIService.InstancesOf("SMS_ActConfig")

'domain\smsserver$
If LCase(Server) = LCase(ActServer) Then
MachineAcct = ""
End If

For Each wbemObject In wbemObjectSet
wbemObject.Server = ActServer
wbemObject.Database = ActDatabase
wbemObject.Put_
If MachineAcct = "" Then
wbemObject.AddLinkedServer ActServer, ActDatabase
Else
wbemObject.AddLinkedServer ActServer, ActDatabase, MachineAcct
End If
Next

If Err.Number = 0 Then
msgbox "Success"
Else
msgbox "Failure " &amp; Err.Number
End If
</pre>
<p>The original script can be found here <a title="Support for ACT 5.5 with the ACT Connector" href="http://blogs.technet.com/configurationmgr/archive/2009/07/01/support-for-act-5-5-with-the-act-connector.aspx">Support for ACT 5.5 with the ACT Connector</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.windeploy.co.uk/blog/index.php/2010/03/act-connector-error-2146232060/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Creating Vista, Windows 7, Server 2008 Collections for SCCM SP2 using VBScript.</title>
		<link>http://www.windeploy.co.uk/blog/index.php/2010/01/creating-vista-windows-7-server-2008-collections-for-sccm-sp2-using-vbscript/</link>
		<comments>http://www.windeploy.co.uk/blog/index.php/2010/01/creating-vista-windows-7-server-2008-collections-for-sccm-sp2-using-vbscript/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 14:02:46 +0000</pubDate>
		<dc:creator>Tone</dc:creator>
				<category><![CDATA[Microsoft System Center Configuration Manager 2007]]></category>
		<category><![CDATA[SCCM]]></category>
		<category><![CDATA[Collection]]></category>
		<category><![CDATA[VBScipt]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://www.windeploy.co.uk/blog/?p=142</guid>
		<description><![CDATA[Service Pack 2 for Configuration Manager 2007 delivers new platform support for Windows 7, Windows Vista SP2, Windows Server 2008 R2 and Windows Server 2008 SP2. After installing SP2 you will need to create collections for Windows 7, Server 2008 R2 and possibly Windows Vista and Server 2008 if you have not already done so, [...]]]></description>
			<content:encoded><![CDATA[<p>Service Pack 2 for Configuration Manager 2007 delivers new platform support for Windows 7, Windows Vista SP2, Windows Server 2008 R2 and Windows Server 2008 SP2.</p>
<p>After installing SP2 you will need to create collections for Windows 7, Server 2008 R2 and possibly Windows Vista and Server 2008 if you have not already done so, I used the following script to create 4 new collections:</p>
<blockquote><p>Click View Source to view\copy script <img class="alignnone" title="Click View Source" src="http://www.windeploy.co.uk/blog/wp-content/plugins/syntax-highlighter-and-code-prettifier/styles/page_white_code.png" alt="" width="16" height="16" /></p></blockquote>
<p>The script does not check for existing collections and I have only used it in a test environment so use at your own risk.</p>
<pre class="brush: vbnet">' Modified CreateDynamicCollection script from SCCM SDK.
' winDeploy 2009
Set swbemLocator=CreateObject("WbemScripting.SWbemLocator")
Set swbemconnection=swbemLocator.ConnectServer(".", "root\sms")
Set providerLoc=swbemconnection.InstancesOf("SMS_ProviderLocation")

For Each Location In providerLoc
    If location.ProviderForLocalSite = True Then
        Set swbemconnection = swbemLocator.ConnectServer(Location.Machine, "root\sms\site_" + Location.SiteCode)
        Exit For
    End If
Next

Call CreateCollection(swbemconnection, "All Windows Vista Systems", "select sms_r_system.ResourceID,sms_r_system.ResourceType,sms_r_system.Name,sms_r_system.SMSUniqueIdentifier,sms_r_system.ResourceDomainORWorkgroup,sms_r_system.Client from sms_r_system where OperatingSystemNameandVersion like '%Workstation 6.0%'")
Call CreateCollection(swbemconnection, "All Windows 7 Systems", "select sms_r_system.ResourceID,sms_r_system.ResourceType,sms_r_system.Name,sms_r_system.SMSUniqueIdentifier,sms_r_system.ResourceDomainORWorkgroup,sms_r_system.Client from sms_r_system where OperatingSystemNameandVersion like '%Workstation 6.1%'")
Call CreateCollection(swbemconnection, "All Windows Server 2008 Systems", "select sms_r_system.ResourceID,sms_r_system.ResourceType,sms_r_system.Name,sms_r_system.SMSUniqueIdentifier,sms_r_system.ResourceDomainORWorkgroup,sms_r_system.Client from sms_r_system where OperatingSystemNameandVersion like '%Server 6.0%'")
Call CreateCollection(swbemconnection, "All Windows Server 2008 R2 Systems", "select sms_r_system.ResourceID,sms_r_system.ResourceType,sms_r_system.Name,sms_r_system.SMSUniqueIdentifier,sms_r_system.ResourceDomainORWorkgroup,sms_r_system.Client from sms_r_system where OperatingSystemNameandVersion like '%Server 6.1%'")

Sub CreateCollection(connection, newName, queryForRule)
	'Update this collection on a schedule.
	Set Token = swbemconnection.Get("Sms_St_RecurInterval")
	Token.DaySpan = 1 'Use Token.HourSpan = 1 or for Token.MinuteSpan = 30 for test environment
	Token.StartTime = GetStartTime()

    ' Create the collection.
    Set newCollection = connection.Get("SMS_Collection").SpawnInstance_
    newCollection.Name = newName
	newCollection.Comment = newName + "."
    newCollection.OwnedByThisSite = true
	newCollection.RefreshSchedule = Array(Token)
	newCollection.RefreshType = 2

    ' Save the new collection and save the collection path for later.
    Set collectionPath = newCollection.Put_    

   ' IMPORTANT: If you do not specify the relationship, the new collection will not be visible in the console.
    Set newSubCollectToSubCollect = connection.Get("SMS_CollectToSubCollect").SpawnInstance_
    newSubCollectToSubCollect.parentCollectionID = "COLLROOT" ' Define to what collection the new collection is subordinate.
    newSubCollectToSubCollect.subCollectionID = CStr(collectionPath.Keys("CollectionID"))
    newSubCollectToSubCollect.Put_  ' Save the subcollection information.

    ' Create a new collection rule object for validation.
    Set queryRule = connection.Get("SMS_CollectionRuleQuery")
    validQuery = queryRule.ValidateQuery(queryForRule)   ' Validate the query (good practice before adding it to the collection). 

    ' Continue with processing, if the query is valid.
    If validQuery Then
        ' Create the query rule.
        Set newQueryRule = QueryRule.SpawnInstance_
        newQueryRule.QueryExpression = queryForRule
        newQueryRule.RuleName = newName + "." 

        ' Add the new query rule to a variable.
        Set newCollectionRule = newQueryRule

        ' Get the collection.
        Set newCollection = connection.Get(collectionPath.RelPath)
        newCollection.AddMembershipRule newCollectionRule ' Add the rules to the collection.
        newCollection.RequestRefresh False ' Call RequestRefresh to initiate the collection evaluator.
	  Else
	    MsgBox("Invalid Query: " + queryForRule)
     End If
End Sub

Function GetStartTime()
  Set objSWbemServices = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
  Set colTimeZone = objSWbemServices.ExecQuery ("SELECT * FROM Win32_TimeZone")

  For Each objTimeZone in colTimeZone
   strBias = objTimeZone.Bias
  Next

  dtmCurrentDate = Date
  GetStartTime = Year(dtmCurrentDate)

  dtmMonth = Month(dtmCurrentDate)
  If Len(dtmMonth) = 1 Then
   dtmMonth = "0" &amp; dtmMonth
  End If

  GetStartTime = GetStartTime &amp; dtmMonth

  dtmDay = Day(dtmCurrentDate)
  If Len(dtmDay) = 1 Then
   dtmDay = "0" &amp; dtmDay
  End If

  If Len(Hour(Now())) = 1 Then
   Hours = "0" &amp; Hour(Now())
  Else
   Hours = Hour(Now())
  End If

  If Len(Minute(Now())) = 1 Then
   Minutes = "0" &amp; Minute(Now())
  Else
   Minutes = Minute(Now())
  End If

  GetStartTime = GetStartTime &amp; dtmDay &amp; Hours &amp; Minutes &amp; "00.00000"
  GetStartTime = GetStartTime &amp; Cstr(strBias)
  GetStartTime = GetStartTime &amp; "+***"
End Function
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.windeploy.co.uk/blog/index.php/2010/01/creating-vista-windows-7-server-2008-collections-for-sccm-sp2-using-vbscript/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>BlueScreenView &#8211; Minidump viewer</title>
		<link>http://www.windeploy.co.uk/blog/index.php/2009/12/minidump-viewe/</link>
		<comments>http://www.windeploy.co.uk/blog/index.php/2009/12/minidump-viewe/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 14:10:48 +0000</pubDate>
		<dc:creator>Tone</dc:creator>
				<category><![CDATA[Utilities]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.windeploy.co.uk/blog/?p=133</guid>
		<description><![CDATA[Had a blue screen of death and wondered which driver caused the error before you had chance to write down the stop code and parameters? Normally I would load up the dump file in the Debugging Tools for Windows to find the culprit until I found this great utility by NirSoft called BlueScreenView. It scans [...]]]></description>
			<content:encoded><![CDATA[<p>Had a blue screen of death and wondered which driver caused the error before you had chance to write down the stop code and parameters?</p>
<p>Normally I would load up the dump file in the Debugging Tools for Windows to find the culprit until I found this great utility by NirSoft called BlueScreenView.</p>
<p>It scans your minidump files and displays the time of the crash, the basic crash information and the details of the driver that caused the crash.</p>
<p><a title="Download BlueScreenView" href="http://www.nirsoft.net/utils/blue_screen_view.html">Download BlueScreenView</a></p>
<p><img class="alignnone size-full wp-image-134" title="bluescreenview-xp-style" src="http://www.windeploy.co.uk/blog/wp-content/uploads/2009/12/bluescreenview1.png" alt="bluescreenview-xp-style" width="689" height="604" /></p>
<p><img class="alignnone size-full wp-image-135" title="bluescreenview-all-drivers" src="http://www.windeploy.co.uk/blog/wp-content/uploads/2009/12/bluescreenview2.png" alt="bluescreenview-all-drivers" width="689" height="261" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.windeploy.co.uk/blog/index.php/2009/12/minidump-viewe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extracting Hyper-V R2 Drivers</title>
		<link>http://www.windeploy.co.uk/blog/index.php/2009/10/extracting-hyper-v-r2-drivers/</link>
		<comments>http://www.windeploy.co.uk/blog/index.php/2009/10/extracting-hyper-v-r2-drivers/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 01:43:00 +0000</pubDate>
		<dc:creator>Tone</dc:creator>
				<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[Drivers]]></category>

		<guid isPermaLink="false">http://www.windeploy.co.uk/blog/?p=125</guid>
		<description><![CDATA[Logon on to a virtual Machine and insert integration service setup disk. If you do not have a virtual machine up and running you can mount %windir%\system32\vmguest.iso Extract the drivers by performing an admin install on the msi packages. msiexec /a d:\support\amd64\Windows5.x-HyperVIntegrationServices-x64.msi TARGETDIR=C:\AIPx64 msiexec /a d:\support\x86\Windows5.x-HyperVIntegrationServices-x86.msi TARGETDIR=C:\AIPx86 rename C:\AIPx64\Hyper-V Integration Services C:\AIPx86\ Hyper-V_x64 rename C:\AIPx86\Hyper-V [...]]]></description>
			<content:encoded><![CDATA[<p>Logon on to a virtual Machine and insert integration service setup disk.<br />
If you do not have a virtual machine up and running you can mount %windir%\system32\vmguest.iso</p>
<p>Extract the drivers by performing an admin install on the msi packages.</p>
<p><code>msiexec /a d:\support\amd64\Windows5.x-HyperVIntegrationServices-x64.msi TARGETDIR=C:\AIPx64<br />
msiexec /a d:\support\x86\Windows5.x-HyperVIntegrationServices-x86.msi TARGETDIR=C:\AIPx86</code></p>
<p>rename C:\AIPx64\Hyper-V Integration Services C:\AIPx86\ Hyper-V_x64<br />
rename C:\AIPx86\Hyper-V Integration Services C:\AIPx86\Hyper-V_x86</p>
<p>Copy Hyper-V_x64 and Hyper-V_x64 to your driver folder and you should end up with the following drivers and folder structure:</p>
<div id="attachment_126" class="wp-caption alignnone" style="width: 141px"><img class="size-full wp-image-126" title="Hyper-V Drivers folder structure" src="http://www.windeploy.co.uk/blog/wp-content/uploads/2009/10/Hyper-V-Drivers-Folders.png" alt="Hyper-V drivers directory" width="131" height="364" /><p class="wp-caption-text">Hyper-V drivers directory</p></div>
<p>Disk Virtual Machine Bus Acceleration Filter Driver<br />
Hyper-V Heartbeat<br />
Microsoft Emulated S3 Device Cap<br />
Microsoft Virtual Machine Bus Input Device Miniport<br />
Microsoft Virtual Machine Bus Network Adapter	Net<br />
Microsoft Virtual Machine Bus Video Device<br />
Storage miniport driver 	SCSI Adapter<br />
Virtual Machine Bus</p>
]]></content:encoded>
			<wfw:commentRss>http://www.windeploy.co.uk/blog/index.php/2009/10/extracting-hyper-v-r2-drivers/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Server 2008 R2 XP SP3 Remote Desktop Disconnected</title>
		<link>http://www.windeploy.co.uk/blog/index.php/2009/10/server-2008-r2-xp-sp3-remote-desktop-disconnected/</link>
		<comments>http://www.windeploy.co.uk/blog/index.php/2009/10/server-2008-r2-xp-sp3-remote-desktop-disconnected/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 12:48:51 +0000</pubDate>
		<dc:creator>Tone</dc:creator>
				<category><![CDATA[Remote Desktop Services]]></category>
		<category><![CDATA[Server 2008 R2]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[XP SP3]]></category>
		<category><![CDATA[Remote Desktop Connection]]></category>

		<guid isPermaLink="false">http://www.windeploy.co.uk/blog/?p=100</guid>
		<description><![CDATA[Network Level Authentication is an authentication method that can be used to enhance Remote Desktop Services Session Host server security by requiring that the user be authenticated to the RD Session Host server before a session is created. Network Level Authentication completes user authentication before you establish a remote desktop connection and the logon screen [...]]]></description>
			<content:encoded><![CDATA[<p>Network Level Authentication is an authentication method that can be used to enhance Remote Desktop Services Session Host server security by requiring that the user be authenticated to the RD Session Host server before a session is created.</p>
<div id="attachment_104" class="wp-caption alignnone" style="width: 421px"><img class="size-full wp-image-104" title="Remote Desktop Connection" src="http://www.windeploy.co.uk/blog/wp-content/uploads/2009/10/Remote-Desktop-Connection.png" alt="Remote Desktop Connection" width="411" height="250" /><p class="wp-caption-text">Remote Desktop Connection</p></div>
<p>Network Level Authentication completes user authentication before you establish a remote desktop connection and the logon screen appears. This is a more secure authentication method that can help protect the remote computer from malicious users and malicious software.</p>
<p>Network Level Authentication will disconnect XP SP3 Remote Desktop Connection with the following error message</p>
<blockquote><p>The remote computer requires Network Level Authentication, which your computer does not support.For assistance, contact your administrator to technical support.</p></blockquote>
<div id="attachment_103" class="wp-caption alignnone" style="width: 610px"><img class="size-full wp-image-103" title="Remote Desktop Disconnected" src="http://www.windeploy.co.uk/blog/wp-content/uploads/2009/10/Remote-Desktop-Disconnected.png" alt="Remote Desktop Disconnected" width="600" height="118" /><p class="wp-caption-text">Remote Desktop Disconnected</p></div>
<p>To enable Network Level Authentication on a XP SP3 client some registry settings must added which can be found in <a href="http://support.microsoft.com/kb/951608/">KB951608</a></p>
<p>The registry settings were tested using the Registration Entries (.reg) file below.</p>
<pre>Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]
"Security Packages"=hex(7):6b,00,65,00,72,00,62,00,65,00,72,00,6f,00,73,00,00,\
00,6d,00,73,00,76,00,31,00,5f,00,30,00,00,00,73,00,63,00,68,00,61,00,6e,00,\
6e,00,65,00,6c,00,00,00,77,00,64,00,69,00,67,00,65,00,73,00,74,00,00,00,74,\
00,73,00,70,00,6b,00,67,00,00,00,00,00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders]
"SecurityProviders"="credssp.dll"</pre>
<p>So after adding the registry settings and rebooting the workstation the following error message may appear if you connect to the Remote Desktop Services Session Host using an <strong>IP address</strong>, the error should not appear if you use the hostname of the remote computer.</p>
<blockquote><p>An authentication error has occurred (0&#215;80090303)</p>
<p>Remote Computer: 172.16.0.100</p></blockquote>
<div id="attachment_111" class="wp-caption alignnone" style="width: 369px"><img class="size-full wp-image-111" title="Remote Desktop Connection 0x80090303" src="http://www.windeploy.co.uk/blog/wp-content/uploads/2009/10/Remote-Desktop-Connection-0x80090303.png" alt="Remote Desktop Connection 0x80090303" width="359" height="133" /><p class="wp-caption-text">Remote Desktop Connection 0x80090303</p></div>
<p>To fix this you need to download and install <a href="http://support.microsoft.com/kb/953760">KB953760</a> which updates the following files</p>
<table border="0" cellspacing="1">
<tbody>
<tr>
<th>File name</th>
<th>File version</th>
<th>File size</th>
<th>Date</th>
<th>Time</th>
<th>Platform</th>
</tr>
<tr>
<td>Kerberos.dll</td>
<td>5.1.2600.5615</td>
<td>299,520</td>
<td>05-Jun-2008</td>
<td>13:50</td>
<td>x86</td>
</tr>
<tr>
<td>Msv1_0.dll</td>
<td>5.1.2600.5749</td>
<td>133,120</td>
<td>23-Jan-2009</td>
<td>17:05</td>
<td>x86</td>
</tr>
</tbody>
</table>
<p>Once WindowsXP-KB953760-x86-ENU has been installed and files updated you can access the Remote Desktop Services session using an IP address.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.windeploy.co.uk/blog/index.php/2009/10/server-2008-r2-xp-sp3-remote-desktop-disconnected/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Internal Consistency Evaluators (ICE) Reference</title>
		<link>http://www.windeploy.co.uk/blog/index.php/2009/09/internal-consistency-evaluators-ice-reference/</link>
		<comments>http://www.windeploy.co.uk/blog/index.php/2009/09/internal-consistency-evaluators-ice-reference/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 04:09:38 +0000</pubDate>
		<dc:creator>Tone</dc:creator>
				<category><![CDATA[Windows Installer]]></category>
		<category><![CDATA[ICE]]></category>
		<category><![CDATA[Internal Consistency Evaluators]]></category>
		<category><![CDATA[Validation]]></category>

		<guid isPermaLink="false">http://www.windeploy.co.uk/blog/?p=90</guid>
		<description><![CDATA[Internal Consistency Evaluators Internal consistency evaluators also called ICE&#8217;s are custom actions written in VBScript, JScript or as a DLL or EXE. When these custom actions are executed, they scan the database for entries in database records that are valid when examined individually but that may cause incorrect behavior in the context of the whole [...]]]></description>
			<content:encoded><![CDATA[<h1>Internal Consistency Evaluators</h1>
<blockquote><p>Internal consistency evaluators also called ICE&#8217;s are custom actions written in VBScript, JScript or as a DLL or EXE. When these custom actions are executed, they scan the database for entries in database records that are valid when examined individually but that may cause incorrect behavior in the context of the whole database.</p></blockquote>
<p>On basic level ICE01 to 105 are a set of predefined rules created by Microsoft to confirm the contents, logic and structure of Windows Installer package (MSI).</p>
<p>The table below also includes the recent additions ICE101 to ICE105 which were introduced with Windows Installer 5.0</p>
<h2>ICE Reference Table</h2>
<table style="height: 2942px;" border="0" width="574">
<tbody>
<tr>
<th>ICE</th>
<th>Description</th>
</tr>
<tr>
<td>ICE01</td>
<td>Simple test of ICE mechanism.</td>
</tr>
<tr>
<td>ICE02</td>
<td>Circular reference test for File-Component, Registry-Component KeyPaths.</td>
</tr>
<tr>
<td>ICE03</td>
<td>Basic data and foreign key validation.</td>
</tr>
<tr>
<td>ICE04</td>
<td>Validates file sequence numbers against the  LastSequence numbers of the Media Table.</td>
</tr>
<tr>
<td>ICE05</td>
<td>Validates for &#8220;required&#8221; entries in particular tables.</td>
</tr>
<tr>
<td>ICE06</td>
<td>Validates for missing column or tables in the database. Any column defined in the _Validation table must be found in the database.</td>
</tr>
<tr>
<td>ICE07</td>
<td>Validates that fonts are installed to the FontsFolder.</td>
</tr>
<tr>
<td>ICE08</td>
<td>Checks for duplicate GUIDs in the ComponentId column of the Component table.</td>
</tr>
<tr>
<td>ICE09</td>
<td>Validates that the permanent bit is set for every component marked for installation into the SystemFolder.</td>
</tr>
<tr>
<td>ICE10</td>
<td>Ensures that advertise feature states among children and parents are compatible.</td>
</tr>
<tr>
<td>ICE12</td>
<td>Validates type 35 and type 51 custom actions and their locations in the sequence tables.</td>
</tr>
<tr>
<td>ICE13</td>
<td>Validates that dialogs are not listed as actions in the execute sequence tables. Dialog actions are only allowed in the user interface sequence tables.</td>
</tr>
<tr>
<td>ICE14</td>
<td>Validates that feature parents do not have the msidbFeatureAttributesFollowParent bit set. Also validates that the entries in the Feature and Feature_Parent columns are not the same in the same record.</td>
</tr>
<tr>
<td>ICE15</td>
<td>Validates that a circular reference exists between every entry in the MIME table and the corresponding extension in the Extension table.</td>
</tr>
<tr>
<td>ICE16</td>
<td>Validates that the ProductName in the Property table is not greater than 63 characters in length.</td>
</tr>
<tr>
<td>ICE17</td>
<td>Validates control type dependencies in the Control table. Covers PushButtons, RadioButtonGroups, ListBoxes, ListViews, and ComboBoxes.</td>
</tr>
<tr>
<td>ICE18</td>
<td>Validates the KeyPath column of the Component table when it is null. In this case, the key path is a Directory.</td>
</tr>
<tr>
<td>ICE19</td>
<td>Validates the advertising tables: Class, TypeLib, Extension, PublishComponents, and Shortcut.</td>
</tr>
<tr>
<td>ICE20</td>
<td>Validates that the required dialogs are in the Dialog table.</td>
</tr>
<tr>
<td>ICE21</td>
<td>Validates that all components in the Component table map to a feature in the FeatureComponents table.</td>
</tr>
<tr>
<td>ICE22</td>
<td>Validates that the Feature_ and Component_ columns in the PublishComponent table.</td>
</tr>
<tr>
<td>ICE23</td>
<td>Validates the tab order of controls in all dialog boxes.</td>
</tr>
<tr>
<td>ICE24</td>
<td>Validates certain properties in the Property table.</td>
</tr>
<tr>
<td>ICE25</td>
<td>Verifies merge module dependencies and merge module exclusions.</td>
</tr>
<tr>
<td>ICE26</td>
<td>Validates required and prohibited actions in the sequence tables.</td>
</tr>
<tr>
<td>ICE27</td>
<td>Validates the organization and order of the sequence tables.</td>
</tr>
<tr>
<td>ICE28</td>
<td>Validates actions that must not be separated by ForceReboot.</td>
</tr>
<tr>
<td>ICE29</td>
<td>Validates that your stream names remain unique if truncated to the 62-character limit.</td>
</tr>
<tr>
<td>ICE30</td>
<td>Validates that the installation of components containing the same file never install the file more than one time in the same directory.</td>
</tr>
<tr>
<td>ICE31</td>
<td>Validates the text styles listed in the Text column of the control table.</td>
</tr>
<tr>
<td>ICE32</td>
<td>Compares the column definitions to validate that keys and foreign keys are of the same size and type.</td>
</tr>
<tr>
<td>ICE33</td>
<td>Checks the registry table for entries  that belong in other tables.</td>
</tr>
<tr>
<td>ICE34</td>
<td>Validates that every group of radio buttons has a default.</td>
</tr>
<tr>
<td>ICE35</td>
<td>Validates that any files from a cabinet file cannot be set to run from the source.</td>
</tr>
<tr>
<td>ICE36</td>
<td>Validates that icons listed in the Icon table are used in the Class, ProgID, or Shortcut tables.</td>
</tr>
<tr>
<td>ICE38</td>
<td>Validates that components installed under the user&#8217;s profile use a registry key under HKCU as their key path.</td>
</tr>
<tr>
<td>ICE39</td>
<td>Validates the Summary Information stream of the database.</td>
</tr>
<tr>
<td>ICE40</td>
<td>Performs various miscellaneous checks.</td>
</tr>
<tr>
<td>ICE41</td>
<td>Validates that entries in the Extension and Class tables refer to components belonging to the referenced feature.</td>
</tr>
<tr>
<td>ICE42</td>
<td>Checks that Class table entries do not have .exe files set as InProc values, and that only LocalServer contexts have arguments and DefInProc values.</td>
</tr>
<tr>
<td>ICE43</td>
<td>Checks that non-advertised shortcuts are in components with HKCU registry keys as the key paths.</td>
</tr>
<tr>
<td>ICE44</td>
<td>Checks that dialog events in the ControlEvent table (NewDialog, SpawnDialog, SpawnWaitDialog) reference valid Dialogs in the Dialog table.</td>
</tr>
<tr>
<td>ICE45</td>
<td>Checks for reserved bits that are set.</td>
</tr>
<tr>
<td>ICE46</td>
<td>Checks for custom properties that only differ from defined properties by their case.</td>
</tr>
<tr>
<td>ICE47</td>
<td>Checks for features with more than 1600 components per feature..</td>
</tr>
<tr>
<td>ICE48</td>
<td>Checks for directories that are hard-coded to local paths.</td>
</tr>
<tr>
<td>ICE49</td>
<td>Checks for non-REG_SZ default values in the registry table.</td>
</tr>
<tr>
<td>ICE50</td>
<td>Checks that advertised shortcuts have correct icons and context menus.</td>
</tr>
<tr>
<td>ICE51</td>
<td>Checks that TTC/TTF fonts do not have titles, but that all other fonts do.</td>
</tr>
<tr>
<td>ICE52</td>
<td>Checks for non-public properties in the AppSearch table.</td>
</tr>
<tr>
<td>ICE53</td>
<td>Checks for registry entries that write private installer information or policy values.</td>
</tr>
<tr>
<td>ICE54</td>
<td>Checks for components using companion files as their key path file.</td>
</tr>
<tr>
<td>ICE55</td>
<td>Checks that LockPermission objects exist and have valid permissions.</td>
</tr>
<tr>
<td>ICE56</td>
<td>Validates that the directory structure of the .msi file has a single valid root.</td>
</tr>
<tr>
<td>ICE57</td>
<td>Validates that individual components do not mix per-machine and per-user data.</td>
</tr>
<tr>
<td>ICE58</td>
<td>Checks that your<br />
Media Table does not have more than 80 rows.</td>
</tr>
<tr>
<td>ICE59</td>
<td>Checks that advertised shortcuts belong to components that are installed by the target feature of the shortcut.</td>
</tr>
<tr>
<td>ICE60</td>
<td>Checks that if a file in the<br />
File Table is not a font and has a version, then it also has a language.</td>
</tr>
<tr>
<td>ICE61</td>
<td>Checks the<br />
Upgrade Table.</td>
</tr>
<tr>
<td>ICE62</td>
<td>Performs extensive checks on the<br />
IsolatedComponent Table for data that may cause unexpected behavior.</td>
</tr>
<tr>
<td>ICE63</td>
<td>Checks for proper sequencing of the RemoveExistingProducts action.</td>
</tr>
<tr>
<td>ICE64</td>
<td>Checks that new directories in the user profile are removed in roaming scenarios.</td>
</tr>
<tr>
<td>ICE65</td>
<td>Checks that the<br />
Environment Table does not have invalid prefix or append values.</td>
</tr>
<tr>
<td>ICE66</td>
<td>Uses the tables in the database to determine which schema your database should use.</td>
</tr>
<tr>
<td>ICE67</td>
<td>Checks that the target of a non-advertised shortcut belongs to the same component as the shortcut itself, or that the attributes of the target component ensure that it does not change installation locations.</td>
</tr>
<tr>
<td>ICE68</td>
<td>Checks that all custom action types needed for an installation are valid.</td>
</tr>
<tr>
<td>ICE69</td>
<td>Checks that all substrings of the form [$componentkey] within a Formatted string do not cross-reference components.</td>
</tr>
<tr>
<td>ICE70</td>
<td>Verifies that integer values for registry entries are specified correctly.</td>
</tr>
<tr>
<td>ICE71</td>
<td>Verifies that the<br />
Media Table contains an entry with DiskId equal to 1.</td>
</tr>
<tr>
<td>ICE72</td>
<td>Ensures that the only custom actions used in the<br />
AdvtExecuteSequence Table are type 19, type 35, and type 51 custom actions.</td>
</tr>
<tr>
<td>ICE73</td>
<td>Verifies that your package does not reuse package codes or product codes of the Windows Installer SDK samples. For more information, see<br />
Package Codes and<br />
Product Codes.</td>
</tr>
<tr>
<td>ICE74</td>
<td>Verifies that the<br />
<strong>FASTOEM</strong> property has not been authored into the<br />
Property Table.</td>
</tr>
<tr>
<td>ICE75</td>
<td>Verifies that all custom action types that use an installed file as their source are sequenced after the<br />
CostFinalize Action.</td>
</tr>
<tr>
<td>ICE76</td>
<td>Verifies that no files in the<br />
BindImage Table reference SFP (WFP) catalogs.</td>
</tr>
<tr>
<td>ICE77</td>
<td>Verifies that in-script custom actions are sequenced after the<br />
InstallInitialize Action and before the<br />
InstallFinalize Action.</td>
</tr>
<tr>
<td>ICE78</td>
<td>Verifies that the<br />
AdvtUISequence Table either does not exist or is empty.</td>
</tr>
<tr>
<td>ICE79</td>
<td>Validates references to components and features entered in the database fields using the<br />
Condition data type.</td>
</tr>
<tr>
<td>ICE80</td>
<td>Validates that<br />
<strong>Template Summary</strong> Property and<br />
<strong>Page Count Summary</strong> Property correctly specify the presence of 64-bit components or custom action scripts.</td>
</tr>
<tr>
<td>ICE81</td>
<td>Validates the<br />
MsiDigitalCertificate Table, MsiDigitalSignature Table and MsiPackageCertificate Table.</td>
</tr>
<tr>
<td>ICE82</td>
<td>Validates the<br />
InstallExecuteSequence Table.</td>
</tr>
<tr>
<td>ICE83</td>
<td>Validates the<br />
MsiAssembly Table.</td>
</tr>
<tr>
<td>ICE84</td>
<td>Checks the sequence tables to verify that required<br />
Standard Actions are not set with conditions.</td>
</tr>
<tr>
<td>ICE85</td>
<td>Validates that the SourceName column of the<br />
MoveFile Table is a valid long file name.</td>
</tr>
<tr>
<td>ICE86</td>
<td>Issues a warning if the package uses the<br />
<strong>AdminUser</strong> property in database column of the<br />
Condition type.</td>
</tr>
<tr>
<td>ICE87</td>
<td>Validates that the following properties have not been authored in the<br />
Property Table.</td>
</tr>
<tr>
<td>ICE88</td>
<td>Validates the DirProperty column of<br />
IniFile Table.</td>
</tr>
<tr>
<td>ICE89</td>
<td>Validates that the value in the Progid_Parent column in<br />
ProgId Table is a valid foreign key into the ProgId column in ProgId table.</td>
</tr>
<tr>
<td>ICE90</td>
<td>Posts a warning if it finds that a shortcut&#8217;s directory has been specified as a public property.</td>
</tr>
<tr>
<td>ICE91</td>
<td>Posts a warning if a file, .ini file, or shortcut file is installed into a per-user profile directory that does not vary based on the<br />
<strong>ALLUSERS</strong> property.</td>
</tr>
<tr>
<td>ICE92</td>
<td>Verifies that a component without a Component Id GUID is not also specified as a permanent component. Verifies that no component has both the msidbComponentAttributesPermanent and msidbComponentAttributesUninstallOnSupersedence attributes.</td>
</tr>
<tr>
<td>ICE93</td>
<td>Issues a warning if a custom action uses the same name as a standard action.</td>
</tr>
<tr>
<td>ICE94</td>
<td>Issues a warning if there are any unadvertised shortcuts pointing to an assembly file in the global assembly cache.</td>
</tr>
<tr>
<td>ICE95</td>
<td>Checks the<br />
Control Table and<br />
BBControl Table to verify that the billboard controls fit onto all the billboards.</td>
</tr>
<tr>
<td>ICE96</td>
<td>Verifies that the<br />
PublishFeatures Action and the<br />
PublishProduct Action are entered in the<br />
AdvtExecuteSequence Table.</td>
</tr>
<tr>
<td>ICE97</td>
<td>Verifies that two components do not isolate a shared component to the same directory.</td>
</tr>
<tr>
<td>ICE98</td>
<td>Verifies the description field of the ODBCDataSource Table for an ODBC data source.</td>
</tr>
<tr>
<td>ICE99</td>
<td>Verifies that no property name entered in the Directory table duplicates a name reserved for the public or private use of the Windows Installer.</td>
</tr>
<tr>
<td>ICE100</td>
<td>Checks the authoring of the MsiEmbeddedUI and MsiEmbeddedChainer tables.</td>
</tr>
<tr>
<td>ICE101</td>
<td>Checks that  no value in the Feature column of the Feature table exceeds a maximum length of 38 characters.</td>
</tr>
<tr>
<td>ICE102</td>
<td>Validates the MsiServiceConfig and MsiServiceConfigFailureActions tables.</td>
</tr>
<tr>
<td>ICE103</td>
<td>Validates the MsiPrint and MsiLaunchApp control events.</td>
</tr>
<tr>
<td>ICE104</td>
<td>Verifies the MsiLockPermissionsEx and LockPermissions tables.</td>
</tr>
<tr>
<td>ICE105</td>
<td>Validates that the package has been authored to be installed in a per-user context.</td>
</tr>
</tbody>
</table>
<p><a href="http://msdn.microsoft.com/en-us/library/aa370569(VS.85).aspx">MSDN &#8211; Package Validation</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.windeploy.co.uk/blog/index.php/2009/09/internal-consistency-evaluators-ice-reference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating an Internal Consistency Evaluator</title>
		<link>http://www.windeploy.co.uk/blog/index.php/2009/09/creating-an-internal-consistency-evaluator/</link>
		<comments>http://www.windeploy.co.uk/blog/index.php/2009/09/creating-an-internal-consistency-evaluator/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 22:03:46 +0000</pubDate>
		<dc:creator>Tone</dc:creator>
				<category><![CDATA[Windows Installer]]></category>

		<guid isPermaLink="false">http://www.windeploy.co.uk/blog/?p=76</guid>
		<description><![CDATA[Example of Creating an Internal Consistency Evaluator (ICE) using Orca Whilst the ICE list is pretty comprehensive there will be a point where you need to validate information that is not covered by the standard ICE unit tests, to do this you will need to add your own Internal Consistency Evaluator. Here is an example [...]]]></description>
			<content:encoded><![CDATA[<h3>Example of Creating an Internal Consistency Evaluator (ICE) using Orca</h3>
<p>Whilst the ICE list is pretty comprehensive there will be a point where you need to validate information that is not covered by the standard ICE unit tests, to do this you will need to add your own Internal Consistency Evaluator.</p>
<p>Here is an example of creating a vbscript Internal Consistency Evaluator <em><strong>wdICE01</strong></em> to check that no hard coded paths (<strong>c :\</strong>) have been entered into the Registry table, wdICE01.vbs will be used to populate necessary tables in darice.cub</p>
<p>1.       Append the .ibd file extension to your vbscript                  example: wdICE01.vbs<strong>.ibd</strong></p>
<p>2.       Using Orca, Open C:\Program Files\orca\darice.cub</p>
<p>3.       Select Binary table and add new row <strong><em>(CTRL &amp; R)</em></strong><em>.</em></p>
<p><em> </em></p>
<div id="attachment_78" class="wp-caption alignnone" style="width: 371px"><em><em><img class="size-full wp-image-78" title="Binary Table add new row" src="http://www.windeploy.co.uk/blog/wp-content/uploads/2009/09/ICE-Validation-001.jpg" alt="Binary Table add new row" width="361" height="290" /></em></em><p class="wp-caption-text">Binary Table add new row</p></div>
<p><em> </em>Enter <strong>Name</strong> of VBScript in name field.</p>
<p>Enter the path to the location of ibd file into the <strong>Data</strong> field <em>(or <strong>Browse&#8230;</strong>) </em>and click <strong>OK</strong> to add new row.</p>
<p>4.       Select CustomAction table and add new row</p>
<div id="attachment_79" class="wp-caption alignnone" style="width: 371px"><img class="size-full wp-image-79" title="Custom Action table add new row" src="http://www.windeploy.co.uk/blog/wp-content/uploads/2009/09/ICE-Validation-002.jpg" alt="Custom Action table add new row" width="361" height="290" /><p class="wp-caption-text">Custom Action table add new row</p></div>
<p>Enter ICE name into <strong>Action</strong> field</p>
<p>Enter <strong>Type </strong>into Type field <strong><em>(see table below)</em></strong></p>
<p>Enter VBScript into <strong>Source</strong> field</p>
<p>Enter ICE name into <strong>Target</strong> field and click <strong>OK</strong> to add new row.</p>
<p>5.       Select _ICESequence table and add new row</p>
<div id="attachment_80" class="wp-caption alignnone" style="width: 383px"><img class="size-full wp-image-80" title="_ICESequence table add new row" src="http://www.windeploy.co.uk/blog/wp-content/uploads/2009/09/ICE-Validation-003.jpg" alt="_ICESequence table add new row" width="373" height="300" /><p class="wp-caption-text">_ICESequence table add new row</p></div>
<p>Enter ICE into <strong>Action</strong> field<br />
Leave <strong>Condition</strong> empty</p>
<p>Enter sequence number into <strong>Sequence</strong> field and click <strong>OK</strong> to add new row.</p>
<blockquote><p>Its a good idea to use a sequence number is greater than 1000 as not to interfere with built-in ICE sequences.</p></blockquote>
<p>Save darice.cub <strong><em>(CTRL &amp; L)</em></strong></p>
<p>6.       Open MSI package and Validation Output <strong><em>(CTRL &amp; L)</em></strong></p>
<p><strong><em> </em></strong></p>
<div id="attachment_81" class="wp-caption alignnone" style="width: 388px"><strong><em><strong><em><img class="size-full wp-image-81" title="Validation Output Windows" src="http://www.windeploy.co.uk/blog/wp-content/uploads/2009/09/ICE-Validation-004.jpg" alt="Validation Output Windows" width="378" height="427" /></em></strong></em></strong><p class="wp-caption-text">Validation Output Window</p></div>
<p><strong><em> </em></strong>Click <strong><span style="text-decoration: underline;">G</span>o <em>(ALT &amp; G)</em></strong></p>
<p>When validation has completed results are displayed, Click <strong><span style="text-decoration: underline;">C</span>lose</strong></p>
<p>The Table Error symbol <span style="color: #ff0000;"><strong>|</strong></span>appears to the left hand-side of Tables containing ICE messages</p>
<div id="attachment_77" class="wp-caption alignnone" style="width: 707px"><img class="size-full wp-image-77" title="Orca ICE Validation Window" src="http://www.windeploy.co.uk/blog/wp-content/uploads/2009/09/ICE-Validation-005.jpg" alt="Orca ICE Validation Window" width="697" height="492" /><p class="wp-caption-text">Orca ICE Validation Window</p></div>
<p>The validation pane lists Warning and Errors found when the validation has been run and can be used to quickly change the table list window and table view focus highlighting the location of a specific validation error.</p>
<h3>Example</h3>
<p>Here is an example vbscript if you want to try it out</p>
<pre class="brush: vbnet">Function wdICE02()
On Error Resume Next

	Set recInfo=Installer.CreateRecord(1)
	If Err &lt;&gt; 0 Then
		wdICE02 = 1
		Exit Function
	End If

	'Give description of test
	recInfo.StringData(0)="wdICE02" &amp; vbTab &amp; "3" &amp; vbTab &amp; "wdICE02 - Performs a non case sensitive search for C:\ hard coded into the IniFile table  "
	Message &amp;h03000000, recInfo

	'Give creation data
	recInfo.StringData(0)="wdICE02" &amp; vbTab &amp; "3" &amp; vbTab &amp; "Created 23/03/07. Last Modified 23/03/07."
	Message &amp;h03000000, recInfo

	'Is there a IniFile table in the database?
	iStat = Database.TablePersistent("IniFile")
	If 1 &lt;&gt; iStat Then
		recInfo.StringData(0)="wdICE02" &amp; vbTab &amp; "3" &amp; vbTab &amp; "'IniFile' table missing, wdICE02 cannot continue its validation."
		Message &amp;h03000000, recInfo
		wdICE02 = 1
		Exit Function
	End If

	'process table
	'					[1]	   [2]	    [3]	    [4]
	Set View = Database.OpenView("SELECT `IniFile`,`FileName`,`Key`,`Value` FROM `IniFile`")
	view.Execute

	If Err &lt;&gt; 0 Then
		recInfo.StringData(0)="wdICE02" &amp; vbTab &amp; "0" &amp; vbTab &amp; "view.Execute_1 API Error"
		Message &amp;h03000000, recInfo
		wdICE02=1
		Exit Function
	End If 

	Do
		Set rec=view.Fetch
		If rec Is Nothing Then Exit Do

		'check for hardcoded string.
		If InStr(1,rec.StringData(4),"c:\",1) &gt; 0 Then
			'Name of ICE  Message Type  Description  Help URL or location  Table Name  Column Name  Primary Key  Primary Key  Primary Key
			'(repeat for as many primary keys as needed)                  	http://msdn2.microsoft.com/en-us/library/aa369205.aspx
			rec.StringData(0)="wdICE02" &amp; vbTab &amp; "2" &amp; vbTab &amp;  "Path [4] is hard coded in [3] key within [2]" &amp; vbTab &amp; "" &amp; vbTab &amp; "IniFile" &amp; vbTab &amp; "IniFile" &amp; vbTab &amp; "[1]"
			Message &amp;h03000000,rec
		End If
	Loop

	'Return iesSuccess
	wdICE02 = 1
	Exit Function
End Function</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.windeploy.co.uk/blog/index.php/2009/09/creating-an-internal-consistency-evaluator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Disabling USB storage devices using Group Policy</title>
		<link>http://www.windeploy.co.uk/blog/index.php/2009/09/disabling-usb-storage-devices-using-group-policy/</link>
		<comments>http://www.windeploy.co.uk/blog/index.php/2009/09/disabling-usb-storage-devices-using-group-policy/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 13:02:17 +0000</pubDate>
		<dc:creator>Tone</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[Disabling USB storage drives]]></category>
		<category><![CDATA[Group Policy]]></category>

		<guid isPermaLink="false">http://www.windeploy.co.uk/blog/?p=26</guid>
		<description><![CDATA[How to prevent users from connecting USB storage devices To stop users connecting USB storage devices The following items must be carried out to ensure that the USB storage driver cannot be accessed, in cases where the USB storage driver has been installed the services should be disabled. Deny Access to usbstor.inf and usbstor.pnf Disable [...]]]></description>
			<content:encoded><![CDATA[<h1>How to prevent users from connecting USB storage devices</h1>
<h2>To stop users connecting USB storage devices</h2>
<p>The following items must be carried out to ensure that the USB storage driver<br />
cannot be accessed, in cases where the USB storage driver has been installed the<br />
services should be disabled.</p>
<ul>
<li>Deny Access to usbstor.inf and usbstor.pnf</li>
<li>Disable the USB storage service</li>
</ul>
<h3>1.Deny Access to usbstor.inf and usbstor.pnf</h3>
<p>Open the Group Policy Object and drill down to <strong>File System</strong></p>
<p><strong>Computer Configuration -&gt; Windows Settings -&gt; Security Settings -&gt; File System</strong></p>
<p>Right click and select <strong>Add File&#8230;</strong><br />
Enter <strong>%SystemRoot%\inf\usbstor.inf</strong><br />
Click <strong>OK</strong></p>
<p>Assign the <strong>Deny </strong>permissions to <strong>Authenticated Users</strong> and <strong>System</strong></p>
<p>Click <strong>OK</strong><br />
Click <strong>Yes</strong><br />
Click <strong>OK</strong></p>
<p>Carry out same procedure for <strong>%SystemRoot%\inf\usbstor.pnf</strong></p>
<h3>2.Disable the USB Storage Service</h3>
<p>The Start Dword value must be set to 00000004 (disable) in the registry</p>
<pre>[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\usbstore]
"Start"=dword:00000004</pre>
<p>To disable this service using Group Policy create an adm template.</p>
<p>Copy the following section into a text editor and save the file as usbstore.adm</p>
<pre>CLASS MACHINE
  CATEGORY  !!CATUSBManagement
     POLICY !!POLUSBManagement
        EXPLAIN !!POLUSBManagement_Help
          KEYNAME "System\CurrentControlSet\Services\usbstor"
             PART !!Part00 DROPDOWNLIST
                VALUENAME "Start"
              ITEMLIST
            NAME !!Name00 VALUE NUMERIC 0
         NAME !!Name01 VALUE NUMERIC 1
       NAME !!Name02 VALUE NUMERIC 2
      NAME !!Name03 VALUE NUMERIC 3
     NAME !!Name04 VALUE NUMERIC 4 DEFAULT
    END ITEMLIST
   END PART
  END POLICY
 END CATEGORY

 [strings]
 CATUSBManagement="USB Management"
 POLUSBManagement="USB Storage Service"
 POLUSBManagement_Help="Enables the changing of the startup type for the USB Storage Service.\nDisabled should be selected from startup type.\n\nYou should also set permissons on following files:\n\n%SystemRoot%\Inf\Usbstor.pnf\n%SystemRoot%\Inf\Usbstor.pnf"
 Part00="Startup type"
 Name00="Boot"
 Name01="System"
 Name02="Auto Load"
 Name03="Load On Demand"
 Name04="Disabled"</pre>
<p>As this isn&#8217;t quite as simple as setting a Group Policy more instructions are included below, detailing how to load adm template using the Group Policy snap-in.</p>
<h2>Add Administrative Template usbstore.adm</h2>
<p>Open the Group Policy object that you want to edit.</p>
<div class="wp-caption alignnone" style="width: 510px"><a href="http://www.windeploy.co.uk/sysmanagement/usbstor/images/usbstor-adm-01.png"><img title="In the console tree, right-click &lt;b&gt;Administrative Templates&lt;/b&gt;&lt;br /&gt; Click &lt;b&gt;Add/Remove Templates&lt;/b&gt; " src="http://www.windeploy.co.uk/sysmanagement/usbstor/images/usbstor-adm-01-small.png" alt="usbstor-adm-01-small.png" width="500" height="367" /></a><p class="wp-caption-text">Console tree, Administrative Templates</p></div>
<p>In the console tree, right-click <strong>Administrative Templates</strong><br />
Click <strong>Add/Remove Templates</strong></p>
<div class="wp-caption alignnone" style="width: 510px"><a href="http://www.windeploy.co.uk/sysmanagement/usbstor/images/usbstor-adm-02.png"><img title="usbstor-adm-02" src="http://www.windeploy.co.uk/sysmanagement/usbstor/images/usbstor-adm-02.png" alt="usbstor-adm-02" width="500" height="356" /></a><p class="wp-caption-text">Add/Remove Templates dialog</p></div>
<p>Click <strong>Add</strong></p>
<div class="wp-caption alignnone" style="width: 510px"><a href="http://www.windeploy.co.uk/sysmanagement/usbstor/images/usbstor-adm-03.png"><img title="usbstor-adm-03" src="http://www.windeploy.co.uk/sysmanagement/usbstor/images/usbstor-adm-03.png" alt="usbstor-adm-03" width="500" height="356" /></a><p class="wp-caption-text">Browse to template</p></div>
<p>Browse to .adm template and open, Click <strong>Close</strong></p>
<div class="wp-caption alignnone" style="width: 510px"><a href="http://www.windeploy.co.uk/sysmanagement/usbstor/images/usbstor-adm-04.png"><img title="usbstor-adm-04" src="http://www.windeploy.co.uk/sysmanagement/usbstor/images/usbstor-adm-04-small.png" alt="usbstor-adm-04" width="500" height="357" /></a><p class="wp-caption-text">The adm preference template is added</p></div>
<p>If you can see the policy\preference skip next two screens, if you see:<br />
<strong>&#8220;There are no items to show in this view&#8221;</strong></p>
<div class="wp-caption alignnone" style="width: 510px"><a href="http://www.windeploy.co.uk/sysmanagement/usbstor/images/usbstor-adm-05.png"><img title="usbstor-adm-05" src="http://www.windeploy.co.uk/sysmanagement/usbstor/images/usbstor-adm-05-small.png" alt="usbstor-adm-05" width="500" height="356" /></a><p class="wp-caption-text">Filtering Menu</p></div>
<p>Right click in left pane<br />
Select<br />
<strong>View</strong><br />
Select <strong>Filtering&#8230; </strong></p>
<div class="wp-caption alignnone" style="width: 510px"><a href="http://www.windeploy.co.uk/sysmanagement/usbstor/images/usbstor-adm-06.png"><img title="usbstor-adm-06" src="http://www.windeploy.co.uk/sysmanagement/usbstor/images/usbstor-adm-06-small.png" alt="usbstor-adm-06" width="500" height="356" /></a><p class="wp-caption-text">Remove Filtering</p></div>
<p>Deselect\Untick<br />
<strong>Only show policy settings that can be fully managed</strong></p>
<div class="wp-caption alignnone" style="width: 510px"><a href="http://www.windeploy.co.uk/sysmanagement/usbstor/images/usbstor-adm-07.png"><img title="usbstor-adm-07" src="http://www.windeploy.co.uk/sysmanagement/usbstor/images/usbstor-adm-07-small.png" alt="usbstor-adm-07" width="500" height="358" /></a><p class="wp-caption-text">Preference Preview</p></div>
<p>Double click the policy\preference, in this case <strong>USB Storage Service</strong></p>
<div class="wp-caption alignnone" style="width: 510px"><a href="http://www.windeploy.co.uk/sysmanagement/usbstor/images/usbstor-adm-08.png"><img title="usbstor-adm-08" src="http://www.windeploy.co.uk/sysmanagement/usbstor/images/usbstor-adm-08-small.png" alt="usbstor-adm-08" width="500" height="356" /></a><p class="wp-caption-text">Enable Preference</p></div>
<p>Select <strong>Enabled</strong><br />
Select startup type: <strong>Disabled</strong><br />
Click <strong>Apply\OK</strong></p>
<p>This is a preference rather than a group policy so it will tattoo the registry:</p>
<blockquote><p>This registry setting is not stored in a policies key and is thus considered a preference. Therefore if the Group Policy Object that implements the setting is ever removed, this setting will remain</p></blockquote>
<p>A copy of the template used to disable usbstore service can be found here: <a href="http://www.windeploy.co.uk/files/disable_ubstore.rar">disable usbstore adm</a></p>
<p>Adapted from <a href="http://support.microsoft.com/kb/823732">KB823732</a> <a href="http://support.microsoft.com/kb/555324/en-us">KB555324</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.windeploy.co.uk/blog/index.php/2009/09/disabling-usb-storage-devices-using-group-policy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MSI Import tool for SMS 2003.</title>
		<link>http://www.windeploy.co.uk/blog/index.php/2009/09/msi-import-tool-for-sms-2003/</link>
		<comments>http://www.windeploy.co.uk/blog/index.php/2009/09/msi-import-tool-for-sms-2003/#comments</comments>
		<pubDate>Fri, 18 Sep 2009 10:56:49 +0000</pubDate>
		<dc:creator>Tone</dc:creator>
				<category><![CDATA[Systems Management Server 2003]]></category>

		<guid isPermaLink="false">http://www.windeploy.co.uk/blog/?p=21</guid>
		<description><![CDATA[MSI2SMS tool imports MSI and MST packages into Systems Management Server 2003 creating Package, Programs, Advertisement and desired settings without the need to use SMS console, the information is extracted directly from the MSI Package. The MSI2SMS import tool not only saves time and effort it also ensures that a standard naming convention is used [...]]]></description>
			<content:encoded><![CDATA[<p>MSI2SMS tool imports MSI and MST packages into Systems Management Server 2003 creating Package, Programs, Advertisement and desired settings without the need to use SMS console, the information is extracted directly from the MSI Package.</p>
<p>The MSI2SMS import tool not only saves time and effort it also ensures that a standard naming convention is used for Package, Programs and Advertisement throughout Systems Management Server 2003.</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/PxJtrvx2RYE&#038;hl=en&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/PxJtrvx2RYE&#038;hl=en&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.windeploy.co.uk/blog/index.php/2009/09/msi-import-tool-for-sms-2003/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

