<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>The Deployment Guys</title><link>http://blogs.technet.com/b/deploymentguys/</link><description>Helping to deploy your world automagically...</description><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>Enterprise Management of ActiveX Controls using ActiveX Installer Service</title><link>http://blogs.technet.com/b/deploymentguys/archive/2013/06/16/enterprise-management-of-activex-controls-using-activex-installer-service.aspx</link><pubDate>Sun, 16 Jun 2013 09:01:02 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3579126</guid><dc:creator>Lutz Seidemann</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3579126</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3579126</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2013/06/16/enterprise-management-of-activex-controls-using-activex-installer-service.aspx#comments</comments><description>&lt;p&gt;The ActiveX Installer Service (AXIS) is a Windows technology that enables the installation of ActiveX controls to a standard user in the enterprise. It consists of a Windows service, a Group Policy administrative template, and a few changes in Internet Explorer behavior. &lt;/p&gt;  &lt;p&gt;Many organizations must install ActiveX controls on their desktops in order to ensure that a variety of programs that they must use on a daily basis will work properly. However, most ActiveX controls must be installed by a member of the Administrators group, and many organizations have configured or want to configure their users to run as standard users, which are non-administrative users that are members of the Users group. As a result, organizations often have to repackage and deploy the ActiveX controls to the users. In addition, many of these ActiveX controls must be regularly updated. Many organizations find this to be difficult and costly to manage for standard users. &lt;/p&gt;  &lt;p&gt;With Windows 7/8 the ActiveX Installer Service is a native OS service and you can easily deploy and update ActiveX controls to your standard user environments. The ActiveX Installer Service enables you to leverage Group Policy to define and manage approved host URLs that standard users can use to install ActiveX controls in a locked-down environment. For more information about AXIS, see: &lt;a href="http://technet.microsoft.com/en-us/library/cc721964.aspx"&gt;http://technet.microsoft.com/en-us/library/cc721964.aspx&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Here is how ActiveX Installer Service works :    &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/4520.image_5F00_68723937.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7608.image_5F00_thumb_5F00_7BB2EFD6.png" width="190" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Define a list of explicitly approved host URLs &lt;/li&gt;    &lt;li&gt;AxIS checks Group Policy Object (GPO) to see URL is approved &lt;/li&gt;    &lt;li&gt;Internet Explorer asks AxIS to install the ActiveX &lt;/li&gt;    &lt;li&gt;No admin credentials required for install if approved &lt;/li&gt;    &lt;li&gt;If not approved, administrator credentials required for install &lt;/li&gt;    &lt;li&gt;Only installs ActiveX controls with a .cab, .dll, or .ocx file extension &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;AxInstallerService in Windows allows the corporate administrator to manage ActiveX controls while maintaining a strong security posture, by having users run as standard user with default file system settings. AXIS provides Group Policy options to configure trusted sources of ActiveX controls and a broker process to install controls from those trusted sources on behalf of standard users. The key benefit is that you can maintain a non-administrative security posture on user workstations along with centralized administrative control. AXIS relies on the IT administrator to identify trusted sources (typically Internet or intranet URLs) of ActiveX controls. &lt;/p&gt;  &lt;p&gt;When an object tag directs Internet Explorer to invoke a control, AXIS takes the following steps:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Checks that the control is installed. If not, it must be installed prior to use &lt;/li&gt;    &lt;li&gt;Checks the AXIS policy setting to verify if the control is from a trusted source &lt;/li&gt;    &lt;li&gt;The specific check matches the host name of the URL specified in the CODEBASE attribute of the object tag against the list of trusted locations specified in policy &lt;/li&gt;    &lt;li&gt;Downloads and installs the control on the user’s behalf &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Some security zones settings configure the ability for computers to execute and/or download ActiveX controls. However, even if Internet Explorer allows an ActiveX control to be downloaded from the web site, the ActiveX control can only be installed from an elevated process or administrative account. One of the goals for enterprises is to only provide end users standard, non-administrative access to their operating system. This means that ActiveX controls downloaded from web sites – regardless of the web site’s security zone – cannot be installed by the end users. &lt;/p&gt;  &lt;p&gt;With Windows 7/8 and beyond, AXIS is a native Windows service that will install ActiveX controls &lt;i&gt;&lt;u&gt;on behalf of end-users&lt;/u&gt;&lt;/i&gt;. Enterprises can maintain a list of approved web sites, implemented via Group Policy, that will cause AXIS to install any required ActiveX controls for the end-user. Further, AXIS can be configured to install ActiveX controls from all Trusted Sites.&lt;/p&gt;  &lt;p&gt;The advantage of using AXIS over an Software Distribution tool is that no packaging of ActiveX controls is required, which significantly reduces the amount of time needed to get an ActiveX control installed in production. Group Policy based administration enables rapid changes to the deployed computers. Leveraging AXIS involves some additional management, specifically the management of a Group Policy object to add specific sites to leverage AXIS. The control of ActiveX installation and functional state can be managed in enterprises via Active Directory Group Policy.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;   &lt;table cellspacing="0" cellpadding="0" width="806" border="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="332"&gt;           &lt;p&gt;&lt;b&gt;Policy Settings&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="120"&gt;           &lt;p&gt;&lt;b&gt;Scope&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="360"&gt;           &lt;p&gt;&lt;b&gt;Policy Path&lt;/b&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="332"&gt;           &lt;p&gt;Turn off ActiveX Opt-In Prompt&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="120"&gt;           &lt;p&gt;User, Machine&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="360"&gt;           &lt;p&gt;Windows Components\Internet Explorer&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="332"&gt;           &lt;p&gt;Only use the ActiveX Installer Service for              &lt;br /&gt;installation of ActiveX controls&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="120"&gt;           &lt;p&gt;User, Machine&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="360"&gt;           &lt;p&gt;Windows Components\Internet Explorer&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="332"&gt;           &lt;p&gt;Only allow approved domains to use              &lt;br /&gt;ActiveX without prompt&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="120"&gt;           &lt;p&gt;User, Machine&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="360"&gt;           &lt;p&gt;Windows Components\Internet Explorer\Internet Control Panel\Security\PER ZONE&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="332"&gt;           &lt;p&gt;Disable Per-User Installation of              &lt;br /&gt;ActiveX Controls&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="120"&gt;           &lt;p&gt;User, Machine&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="360"&gt;           &lt;p&gt;Windows Components\Internet Explorer&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Turn off ActiveX Opt-In prompt:&lt;/b&gt; This policy setting allows you to turn off the ActiveX Opt-in prompt. The ActiveX Opt-in prevents websites from loading any COM object without prior approval. If a page attempts to load a COM object that Internet Explorer has not used before, an Information bar will appear asking the user for approval. If you enable this policy setting, the ActiveX Opt-in prompt will not appear. Internet Explorer does not ask the user for permission to load a control, and will load the ActiveX if it passes all other internal security checks. If you disable or do not configure this policy setting, the ActiveX Opt-In prompt will appear.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Only use the ActiveX Installer Service for installation of ActiveX controls:&lt;/b&gt;     &lt;br /&gt;This policy setting allows you to specify how ActiveX controls are installed. If you enable this policy setting, ActiveX controls will only install if the ActiveX Installer Service is present and has been configured to allow ActiveX controls to be installed. If you disable or do not configure this policy setting, ActiveX controls, including per-user controls, will be installed using the standard installation process.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Disable Per-User Installation of ActiveX Controls:&lt;/b&gt; This policy setting allows you to disable the per-user installation of ActiveX controls. This policy only affects ActiveX controls that can be installed on a per-user basis. If you enable this policy setting, ActiveX controls cannot be installed on a per-user basis. If you disable or do not configure this policy setting, ActiveX controls can be installed on a per-user basis.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a name="_Toc338850315"&gt;&lt;u&gt;&lt;strong&gt;&lt;font color="#000000" size="3"&gt;Configuring the ActiveX Installer Service&lt;/font&gt;&lt;/strong&gt;&lt;/u&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The ActiveX Installer Service is enabled by default in Windows 7 /8 , you only need GPMC to configure it. You must configure the ActiveX Installer Service settings by using an administrative template in Group Policy. The administrative template consists of a list of approved installation sites, which the ActiveX Installer Service uses to determine whether an ActiveX control can be installed. We recommend Domain policies over Local policies. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;To configure the ActiveX Installer Service using local GPMC (similar steps for Domain Policy) &lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Press &lt;strong&gt;Windows Key + R&lt;/strong&gt; to open the &lt;strong&gt;Run&lt;/strong&gt; command. &lt;/li&gt;    &lt;li&gt;Type mmc, and then click &lt;strong&gt;OK&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;In the &lt;strong&gt;File&lt;/strong&gt; menu, click &lt;strong&gt;Add/Remove Snap-in&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;In the &lt;strong&gt;Add/Remove Snap-ins&lt;/strong&gt; dialog box, select &lt;strong&gt;Group Policy Management Console&lt;/strong&gt;, and then click &lt;strong&gt;Add&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;In the &lt;strong&gt;Select Group Policy Object &lt;/strong&gt;dialog box, accept the default setting of the local computer or click &lt;strong&gt;Browse&lt;/strong&gt; to configure a remote computer, and then click &lt;strong&gt;Finish&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;In the &lt;strong&gt;Add/Remove Snap-ins&lt;/strong&gt; dialog box, click &lt;strong&gt;OK&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;In the console tree, expand &lt;strong&gt;Local Computer Policy&lt;/strong&gt;, expand &lt;strong&gt;Computer Configuration&lt;/strong&gt;, expand &lt;strong&gt;Administrative Templates&lt;/strong&gt;, expand &lt;strong&gt;&lt;font color="#0000ff"&gt;Windows Components&lt;/font&gt;&lt;/strong&gt;, and then click &lt;strong&gt;&lt;font color="#0000ff"&gt;ActiveX Installer Service&lt;/font&gt;&lt;/strong&gt;.       &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0602.image_5F00_2C65F782.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/6082.image_5F00_thumb_5F00_407F140B.png" width="637" height="59" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;In the details pane, click &lt;strong&gt;Approved Installation Sites for ActiveX Controls&lt;/strong&gt; to edit       &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7028.image_5F00_58364B71.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/5811.image_5F00_thumb_5F00_16BB9918.png" width="390" height="360" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;In the &lt;strong&gt;Approved Installation Sites for ActiveX Controls Properties&lt;/strong&gt; dialog box, select &lt;strong&gt;Enabled&lt;/strong&gt;, and then click &lt;strong&gt;Show&lt;/strong&gt; next to &lt;strong&gt;Host URLs&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;In the &lt;strong&gt;Show Contents&lt;/strong&gt; dialog box type the name for the URL where you want to allow ActiveX controls to be installed &lt;/li&gt;    &lt;li&gt;Type the values for the four ActiveX Installer Service host URLs settings.      &lt;br /&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7571.image_5F00_2034578E.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7002.image_5F00_thumb_5F00_0660215F.png" width="407" height="167" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;In the details pane, click &lt;strong&gt;Establish ActiveX installation policy for sites in Trusted zones&lt;/strong&gt; to &lt;strong&gt;Edit&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;Make your selection for the Trusted zones      &lt;br /&gt;&amp;#160;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/4743.image_5F00_4551A1FA.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/8054.image_5F00_thumb_5F00_0AF62C19.png" width="349" height="322" /&gt;&lt;/a&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/5672.image_5F00_425C3D47.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/5102.image_5F00_thumb_5F00_4183D75D.png" width="244" height="169" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Click &lt;strong&gt;OK&lt;/strong&gt; to close       &lt;br /&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;When you add a URL, you can specify comma-delimited values that detail the settings for the ActiveX Installer Service.    &lt;br /&gt;You can configure four values:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Installing ActiveX controls that have trusted signatures &lt;/li&gt;    &lt;li&gt;Installing signed ActiveX controls &lt;/li&gt;    &lt;li&gt;Installing unsigned ActiveX controls &lt;/li&gt;    &lt;li&gt;HTTPS error exceptions &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a name="_Toc338850304"&gt;&lt;font color="#000000" size="3"&gt;&lt;strong&gt;&lt;u&gt;ActiveX Recommended Practices&lt;/u&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;▪ &lt;b&gt;Only install ActiveX controls from reputable organizations -&lt;/b&gt;     &lt;br /&gt;We recommend that you only install ActiveX controls from publishers that you know and trust. The ActiveX Installer Service does not determine whether the host presenting the ActiveX control is connected to a secure network. Ensuring that you only install ActiveX controls from reputable publishers will help mitigate this threat.&lt;/p&gt;  &lt;p&gt;▪ &lt;b&gt;Deploy commonly used ActiveX controls -&lt;/b&gt;     &lt;br /&gt;We recommend that you deploy ActiveX controls that are commonly used in your environment by using your organization's application deployment method. Many users today use laptops to connect to multiple networks, including wireless hot spots. A malicious proxy at an insecure network could attempt to trick the ActiveX Installation Service by redirecting it to a host with malicious software that represents itself as a commonly used ActiveX control. Ensuring that you deploy commonly used ActiveX controls for your users will help mitigate this threat. &lt;/p&gt;  &lt;p&gt;▪ &lt;b&gt;Only use HTTPS host URLs -&lt;/b&gt;     &lt;br /&gt;We recommend that you only modify the value for HTTPS error exceptions to require the connection to pass all verification checks (0). If a remote users connects to an insecure wireless network, and the proxy attempts to redirect the connection, this setting will ensure that the ActiveX control installation will fail since the certificate will be invalid.&lt;/p&gt;  &lt;p&gt;▪ &lt;b&gt;Consolidate ActiveX controls to a central server -&lt;/b&gt;     &lt;br /&gt;We recommend that you consolidate the ActiveX controls you use in your organization to a central server. The location where a Web site hosts an ActiveX control is called a CODEBASE. Normally, the CODEBASE is specified in the Web page, and the installation process retrieves the ActiveX control from that location.     &lt;br /&gt;In managed enterprises, you can use Group Policy to override the CODEBASE that is specified within the Web page to redirect to an internal server. Using this setting allows you to easily manage which ActiveX controls users can install by consolidating the ActiveX controls onto a central server; if the server is an HTTPS server, you also satisfy the previous recommended practice, only use HTTPS host URLs.     &lt;br /&gt;You can configure a common Group Policy setting to redirect all ActiveX control installations to a central server in your organization. You can do this by using the CodeBaseSearchPath registry key. For more information on the CodeBaseSearchPath see Implementing Internet Component Download &lt;a href="http://go.microsoft.com/fwlink/?LinkId=90677"&gt;http://go.microsoft.com/fwlink/?LinkId=90677&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a name="_Toc338850310"&gt;&lt;strong&gt;&lt;u&gt;&lt;font color="#000000" size="3"&gt;AXIS Implementation Checklist&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Gather ActiveX controls - You can assess which controls, if any, are appropriate to use within your organization. You may need to gather an inventory of existing ActiveX controls already in production use. The &lt;a href="http://technet.microsoft.com/en-us/solutionaccelerators/dd537566.aspx"&gt;Microsoft&amp;#160; Assessment and Planning &lt;/a&gt;Toolkit or Application Compatibility Manager as part of the Windows 8 &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=30652"&gt;ADK&lt;/a&gt; will help for the inventory. &lt;/li&gt;    &lt;li&gt;Create and implement Group Policies &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;font color="#000000" size="3"&gt;Most Common Controls&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&amp;#160;&lt;a href="http://www.adobe.com/products/shockwaveplayer/"&gt;Adobe Shockwave Player&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&amp;#160;&lt;a href="http://www.adobe.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash&amp;amp;P2_Platform=Win32&amp;amp;P3_Browser_Version=MSIE"&gt;Adobe Flash Player&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&amp;#160;&lt;a href="http://www.adobe.com/products/acrobat/readstep2.html"&gt;Adobe Reader&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&amp;#160;&lt;a href="http://www.microsoft.com/downloads/info.aspx?na=47&amp;amp;p=1&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=428d5727-43ab-4f24-90b7-a94784af71a4&amp;amp;u=details.aspx%3ffamilyid%3d048DC840-14E1-467D-8DCA-19D2A8FD7485%26displaylang%3den"&gt;PowerPoint 2007 Viewer&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&amp;#160;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=3657ce88-7cfa-457a-9aec-f4f827f20cac&amp;amp;DisplayLang=en"&gt;Word Viewer&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&amp;#160;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=B48F920B-5AF0-46B4-994F-2F62582CC86F"&gt;Rights Management&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#000000" size="3"&gt;&lt;u&gt;More Information about ActiveX can be found:&lt;/u&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;ActiveX Installer Service in Windows 7 Technical Reference      &lt;br /&gt;&lt;a href="http://technet.microsoft.com/en-us/library/ee247410(v=WS.10).aspx"&gt;http://technet.microsoft.com/en-us/library/ee247410(v=WS.10).aspx&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Administering the ActiveX Installer Service in Windows 7      &lt;br /&gt;&lt;a href="http://technet.microsoft.com/en-us/library/dd631688(v=WS.10).aspx"&gt;http://technet.microsoft.com/en-us/library/dd631688(v=WS.10).aspx&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Fixing ActiveX Installation Compatibility Issues for Standard Users      &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ff966518(v=vs.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/windows/desktop/ff966518(v=vs.85).aspx&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://support.microsoft.com/kb/912945"&gt;http://support.microsoft.com/kb/912945&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://support.microsoft.com/kb/240797"&gt;http://support.microsoft.com/kb/240797&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://support.microsoft.com/kb/176810"&gt;http://support.microsoft.com/kb/176810&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/technet/technetmag/issues/2007/07/AxIS/default.aspx"&gt;http://www.microsoft.com/technet/technetmag/issues/2007/07/AxIS/default.aspx&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;!--EndFragment--&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;This post is based on the work of&amp;#160; &lt;strong&gt;Steve Campbell&lt;/strong&gt;&amp;#160; (&lt;em&gt;Architect with Microsoft Consulting Services US&lt;/em&gt; ) and was contributed by &lt;strong&gt;&lt;em&gt;Lutz Seidemann&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;, a Solution Architect with Microsoft Consulting Services – World Wide Client Center of Excellence.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The information on this site is provided &amp;quot;AS IS&amp;quot; with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;/strong&gt;&lt;a href="http://www.microsoft.com/about/legal/en/us/Copyright/Default.aspx"&gt;&lt;strong&gt;Terms of Use&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3579126" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Windows+7/">Windows 7</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Tools/">Tools</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Windows+8/">Windows 8</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/GPO/">GPO</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/AXIS/">AXIS</category></item><item><title>Signing Windows 8 applications using an Internal PKI</title><link>http://blogs.technet.com/b/deploymentguys/archive/2013/06/14/signing-windows-8-applications-using-an-internal-pki.aspx</link><pubDate>Fri, 14 Jun 2013 08:22:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3578842</guid><dc:creator>DeploymentGuys</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3578842</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3578842</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2013/06/14/signing-windows-8-applications-using-an-internal-pki.aspx#comments</comments><description>&lt;p&gt;So &amp;ndash; your development cycles have been completed and now you are ready to deploy the much anticipated Windows 8 based application that you have developed to your clients. You will quickly realize that the deployment of your newly created Windows 8 application cannot happen until the appx assembly has been signed. All methods of deployment (Windows Store, PowerShell or System Center 2012 Configuration Manager) require the application to be signed using a certificate issued by a trusted source before you can deploy it.&lt;/p&gt;
&lt;p&gt;If your application was developed with the intention of staying within the corporate landscape, then you may use a certificate issued by an internally hosted trusted CA. A lot of documentation is available about the requirements of the certificate issued, but a how-to guide was not available until now. This blog post will walk you through the steps required to install an internally developed application to production systems.&lt;/p&gt;
&lt;p&gt;The screen captures in this blog post are performed using Windows Server 2012 Domain Controller, Windows Server 2012 Certificate Authority, Visual Studio 2012 and Windows 8 Enterprise. The procedures for Windows Server 2008 R2 vary slightly, but the same certificate requirements can been completed.&lt;/p&gt;
&lt;p&gt;The diagram below identifies the workflow that this blog post will walk you through.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/6523.clip_5F00_image002_5F00_01C02598.jpg"&gt;&lt;img style="border: 0px currentcolor; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image002" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/3404.clip_5F00_image002_5F00_thumb_5F00_63756EA1.jpg" alt="clip_image002" width="762" height="439" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;&lt;span style="color: #000000;"&gt;Get the Certificate&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Visual Studio will validate the certificate used to sign the app in the following ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Verifies the presence of the Basic Constraints extension and its value, which must be either &lt;strong&gt;Subject Type=End Entity&lt;/strong&gt; or &lt;strong&gt;unspecified&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Verifies the value of the Enhanced Key Usage property, which must contain Code Signing and may also contain Lifetime Signing. Any other EKUs are prohibited.&lt;/li&gt;
&lt;li&gt;Verifies the value of the KeyUsage (KU) property, which must be either &lt;strong&gt;Unset&lt;/strong&gt; or &lt;strong&gt;DigitalSignature&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Verifies the existence of a private key exists.&lt;/li&gt;
&lt;li&gt;Verifies whether the certificate is active, hasn&amp;rsquo;t expired, and hasn't been revoked.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;a name="_Toc347472796"&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;h4&gt;&lt;a name="_Toc347437138"&gt;&lt;/a&gt;&lt;span style="color: #000000;"&gt;Create the Template&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;The built-in Windows 2008 R2 or Windows 2012 templates will not allow the creation of a certificate which meets all of these requirements. A new template must be created which allows the issuance of a properly configured certificate.&lt;/p&gt;
&lt;table style="width: 654px;" border="1" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="261"&gt;
&lt;p&gt;Load an MMC and add the Certificate Authority and Certificate Templates&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="391"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0020.clip_5F00_image0026_5F00_0C13A8D3.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image002[6]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7180.clip_5F00_image0026_5F00_thumb_5F00_7B9B37D7.jpg" alt="clip_image002[6]" width="440" height="213" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="261"&gt;
&lt;p&gt;Select Certificate Templates &amp;gt; Right Click on Code Signing &amp;gt; Duplicate Template&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="391"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/8103.clip_5F00_image004_5F00_5226F697.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image004" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0458.clip_5F00_image004_5F00_thumb_5F00_764EE1D7.jpg" alt="clip_image004" width="442" height="198" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="261"&gt;
&lt;p&gt;On the Compatibility tab&lt;/p&gt;
&lt;p&gt;&amp;middot; Change Certificate Authority to Windows Server 2008 R2 or Higher&lt;/p&gt;
&lt;p&gt;&amp;middot; Change the Certificate Recipient to Windows 7/Server 2008 R2 or Higher&lt;/p&gt;
&lt;p&gt;Note: These two changes allow the Basic Constraints Extension to be enabled.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="391"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/1385.clip_5F00_image006_5F00_67EE8019.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image006" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/6518.clip_5F00_image006_5F00_thumb_5F00_69BED5E0.jpg" alt="clip_image006" width="338" height="371" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="261"&gt;
&lt;p&gt;On the Request Handling tab&lt;/p&gt;
&lt;p&gt;&amp;middot; Check the box to allow private key to be exported&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="391"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/8105.clip_5F00_image008_5F00_404A94A0.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image008" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/2275.clip_5F00_image008_5F00_thumb_5F00_09040D65.jpg" alt="clip_image008" width="345" height="396" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="261"&gt;
&lt;p&gt;On the General tab&lt;/p&gt;
&lt;p&gt;&amp;middot; Provide a useful name for this new template&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="391"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/4353.clip_5F00_image010_5F00_6D62121F.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image010" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7838.clip_5F00_image010_5F00_thumb_5F00_4145152E.jpg" alt="clip_image010" width="347" height="402" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="261"&gt;
&lt;p&gt;On the Extensions tab&lt;/p&gt;
&lt;p&gt;&amp;middot; Click on the Application Policies Extension and verify Code Signing&lt;/p&gt;
&lt;p&gt;Note: For additional security, you can also add the Lifetime Signing extension to this template to ensure the signing certificate is no longer valid after expiration.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="391"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0820.clip_5F00_image012_5F00_45BE26A6.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image012" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/1033.clip_5F00_image012_5F00_thumb_5F00_406F3FF5.jpg" alt="clip_image012" width="351" height="406" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="261"&gt;
&lt;p&gt;On the Extensions tab&lt;/p&gt;
&lt;p&gt;&amp;middot; Click on Basic Constraints and click Edit and check the box to Enable this extension.&lt;/p&gt;
&lt;p&gt;Note: If this checkbox is grayed out, make sure the certificate template is set properly on the Compatibility tab&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="391"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/4201.clip_5F00_image014_5F00_5DE421B2.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image014" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/8666.clip_5F00_image014_5F00_thumb_5F00_0DA1CA32.jpg" alt="clip_image014" width="357" height="417" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="261"&gt;
&lt;p&gt;On the Subject Name tab&lt;/p&gt;
&lt;p&gt;&amp;middot; Select the Supply in the request radio button and Click OK on the warning&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="391"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/6237.clip_5F00_image016_5F00_38E8F1EA.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image016" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0638.clip_5F00_image016_5F00_thumb_5F00_61875DF1.jpg" alt="clip_image016" width="426" height="404" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="261"&gt;
&lt;p&gt;On the Security tab&lt;/p&gt;
&lt;p&gt;&amp;middot; Add a user or group to allow them to enroll the certificate. The must have the Read and Enroll permissions.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="391"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/3718.clip_5F00_image018_5F00_50A2BA01.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image018" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/4745.clip_5F00_image018_5F00_thumb_5F00_62EE1174.jpg" alt="clip_image018" width="374" height="424" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="261"&gt;
&lt;p&gt;In the MMC, expand Certificate Authority &amp;gt; {CAName} &amp;gt; Right Click Certificate Templates &amp;gt; New &amp;gt; Certificate Template to Issue&lt;/p&gt;
&lt;p&gt;Select the Template Name just created &amp;gt; Click OK&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="391"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/4035.clip_5F00_image020_5F00_1D8D8AC8.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image020" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0272.clip_5F00_image020_5F00_thumb_5F00_7ACC530A.jpg" alt="clip_image020" width="434" height="253" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="261"&gt;
&lt;p&gt;Notice the APPX Code Signing Template is now listed on the CA under Certificate Templates&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="391"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0216.clip_5F00_image022_5F00_7826280A.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image022" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/1145.clip_5F00_image022_5F00_thumb_5F00_6ECCF387.jpg" alt="clip_image022" width="424" height="130" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;&lt;a name="_Toc347472797"&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;h4&gt;&lt;a name="_Toc347437139"&gt;&lt;/a&gt;&lt;span style="color: #000000;"&gt;Request the Certificate&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;The certificate template has been created and now must be requested to generate a .cer file that will be placed in the local store on the computer the request is made from. It doesn&amp;rsquo;t matter which system makes the request because the .cer is immediately used to generate the .pfx file needed to sign the application.&lt;/p&gt;
&lt;table style="width: 653px;" border="1" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="260"&gt;
&lt;p&gt;Open an MMC and add the certificates snap-in and select My User account radio button.&lt;/p&gt;
&lt;p&gt;In the MMC &amp;gt; Expand Certificates &amp;ndash; Current user &amp;gt; Personal &amp;gt; Right Click on Certificates &amp;gt; All Tasks &amp;gt; Request New Certificate&lt;/p&gt;
&lt;p&gt;Note: The computer store can be used as well, but the computer account would need permission to enroll the certificate. In this example, we only added permissions for the application developers group.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="391"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/4278.clip_5F00_image0028_5F00_7943B6B9.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image002[8]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/4214.clip_5F00_image0028_5F00_thumb_5F00_73F4D008.jpg" alt="clip_image002[8]" width="421" height="383" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="260"&gt;
&lt;p&gt;Click Next on the Before You Begin screen&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="391"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/1425.clip_5F00_image0046_5F00_3837C806.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image004[6]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7737.clip_5F00_image0046_5F00_thumb_5F00_00F140CB.jpg" alt="clip_image004[6]" width="421" height="273" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="260"&gt;
&lt;p&gt;On the Select Certificate Enrollment Policy screen&lt;/p&gt;
&lt;p&gt;&amp;middot; Ensure Active Directory Enrollment Policy is selected&lt;/p&gt;
&lt;p&gt;&amp;middot; Click Next&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="391"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/4201.clip_5F00_image0067_5F00_1746E610.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image006[7]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/1030.clip_5F00_image0067_5F00_thumb_5F00_2E08BE4A.jpg" alt="clip_image006[7]" width="420" height="273" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="260"&gt;
&lt;p&gt;On the Request Certificates screen&lt;/p&gt;
&lt;p&gt;&amp;middot; Click on the link below the APPX Code Signing template to configure additional settings&lt;/p&gt;
&lt;p&gt;Note: The Enroll button cannot be selected until the missing settings are configured&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="391"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7230.clip_5F00_image0085_5F00_3DAB5A0C.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image008[5]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/3463.clip_5F00_image0085_5F00_thumb_5F00_0664D2D1.jpg" alt="clip_image008[5]" width="425" height="271" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="260"&gt;
&lt;p&gt;On the Certificate Properties screen&lt;/p&gt;
&lt;p&gt;&amp;middot; Under Subject Name the type should be Common Name&lt;/p&gt;
&lt;p&gt;&amp;middot; Value must be the same as the Publisher value in the Visual Studio 2012 package.appxmanifest&lt;/p&gt;
&lt;p&gt;&amp;middot; Click Add&lt;/p&gt;
&lt;p&gt;Note: The CN= is automatically appended and is not required when typing the Publisher Name. In this example just ContosoAppDev was entered in the value textbox.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="391"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/6521.clip_5F00_image0105_5F00_0ADDE449.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image010[5]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0601.clip_5F00_image0105_5F00_thumb_5F00_058EFD98.jpg" alt="clip_image010[5]" width="432" height="378" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/8156.clip_5F00_image0125_5F00_1D062D9B.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image012[5]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/1072.clip_5F00_image0125_5F00_thumb_5F00_182379DF.jpg" alt="clip_image012[5]" width="438" height="142" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="260"&gt;
&lt;p&gt;On the Request Certificates screen&lt;/p&gt;
&lt;p&gt;&amp;middot; APPX Code Signing is selected&lt;/p&gt;
&lt;p&gt;&amp;middot; Click Enroll&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="391"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/5126.clip_5F00_image0145_5F00_67FC2F1B.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image014[5]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/3286.clip_5F00_image0145_5F00_thumb_5F00_02C85528.jpg" alt="clip_image014[5]" width="447" height="327" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="260"&gt;
&lt;p&gt;On the Certificate Installation Results screen&lt;/p&gt;
&lt;p&gt;&amp;middot; Check the status&lt;/p&gt;
&lt;p&gt;&amp;middot; Click finish&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="391"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/3108.clip_5F00_image0165_5F00_724FE42C.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image016[5]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/2475.clip_5F00_image0165_5F00_thumb_5F00_7015EC21.jpg" alt="clip_image016[5]" width="441" height="319" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="260"&gt;
&lt;p&gt;On the Certificates &amp;ndash; Current User MMC&lt;/p&gt;
&lt;p&gt;&amp;middot; The new certificate will be listed&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="391"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/3482.clip_5F00_image0185_5F00_23DDE273.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image018[5]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/5483.clip_5F00_image0185_5F00_thumb_5F00_73B697AF.jpg" alt="clip_image018[5]" width="454" height="186" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4&gt;&lt;a name="_Toc347472798"&gt;&lt;/a&gt;&lt;span style="color: #000000;"&gt;Export to PFX&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;Visual Studio requires the .pfx format to sign the application. In the previous step, we generated a .cer file which is located in the user store. We need to convert that .cer to a .pfx in preparation for signing.&lt;/p&gt;
&lt;table style="width: 657px;" border="1" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="258"&gt;
&lt;p&gt;On the Certificates &amp;ndash; Current User MMC&lt;/p&gt;
&lt;p&gt;&amp;middot; Right Click the New Certificate &amp;gt; Click All Tasks &amp;gt; Click Export&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="397"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0245.clip_5F00_image00210_5F00_03593372.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image002[10]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/5481.clip_5F00_image00210_5F00_thumb_5F00_2E342835.jpg" alt="clip_image002[10]" width="441" height="302" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="258"&gt;
&lt;p&gt;On the Welcome screen&lt;/p&gt;
&lt;p&gt;&amp;middot; Click Next&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="397"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/5811.clip_5F00_image0049_5F00_17DA550B.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image004[9]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7411.clip_5F00_image0049_5F00_thumb_5F00_32A67B17.jpg" alt="clip_image004[9]" width="416" height="368" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="258"&gt;
&lt;p&gt;On the Export Private key screen&lt;/p&gt;
&lt;p&gt;&amp;middot; Click &amp;lsquo;Yes, export the private key&amp;rsquo;&lt;/p&gt;
&lt;p&gt;&amp;middot; Click Next&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="397"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/4621.clip_5F00_image00610_5F00_371F8C8F.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image006[10]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/2273.clip_5F00_image00610_5F00_thumb_5F00_7FD90553.jpg" alt="clip_image006[10]" width="419" height="370" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="258"&gt;
&lt;p&gt;On the Export File Format screen&lt;/p&gt;
&lt;p&gt;&amp;middot; Ensure Personal Information Exchange is selected&lt;/p&gt;
&lt;p&gt;&amp;middot; Ensure Include all certificates in the certification path if possible is checked&lt;/p&gt;
&lt;p&gt;&amp;middot; Check Export all extended properties&lt;/p&gt;
&lt;p&gt;&amp;middot; Click Next&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="397"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/8802.clip_5F00_image0088_5F00_7A8A1EA2.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image008[8]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0815.clip_5F00_image0088_5F00_thumb_5F00_0A2CBA65.jpg" alt="clip_image008[8]" width="423" height="372" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="258"&gt;
&lt;p&gt;On the Security screen&lt;/p&gt;
&lt;p&gt;&amp;middot; Select the Password checkbox&lt;/p&gt;
&lt;p&gt;&amp;middot; Enter a password (this will be needed during import into Visual Studio 2012)&lt;/p&gt;
&lt;p&gt;&amp;middot; Click Next&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="397"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/2018.clip_5F00_image0108_5F00_558EEEDA.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image010[8]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/2055.clip_5F00_image0108_5F00_thumb_5F00_04E06465.jpg" alt="clip_image010[8]" width="423" height="368" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="258"&gt;
&lt;p&gt;On the File to Export screen&lt;/p&gt;
&lt;p&gt;&amp;middot; Provide a path and filename&lt;/p&gt;
&lt;p&gt;&amp;middot; Click Next&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="397"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/8662.clip_5F00_image0128_5F00_22554622.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image012[8]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/4073.clip_5F00_image0128_5F00_thumb_5F00_76384930.jpg" alt="clip_image012[8]" width="425" height="372" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="258"&gt;
&lt;p&gt;On the Completing the Certificate Export Wizard screen&lt;/p&gt;
&lt;p&gt;&amp;middot; Click Next&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="397"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7558.clip_5F00_image0148_5F00_484D8729.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image014[8]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7506.clip_5F00_image0148_5F00_thumb_5F00_37D5162E.jpg" alt="clip_image014[8]" width="427" height="373" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="258"&gt;
&lt;p&gt;On the Certificate Export Wizard message box&lt;/p&gt;
&lt;p&gt;&amp;middot; Click OK&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="397"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/8562.clip_5F00_image0168_5F00_151A9D07.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image016[8]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0574.clip_5F00_image0168_5F00_thumb_5F00_7DEF2288.jpg" alt="clip_image016[8]" width="244" height="170" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;&lt;a name="_Toc347472799"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;h3&gt;&lt;a name="_Toc347437141"&gt;&lt;/a&gt;&lt;span style="color: #000000;"&gt;Sign the Application&lt;/span&gt;&lt;/h3&gt;
&lt;table style="width: 658px;" border="1" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="258"&gt;
&lt;p&gt;Open Windows Explorer to the location where the pfx file was saved.&lt;/p&gt;
&lt;p&gt;Note: The pfx file should be moved to a computer with VS 2012 installed.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="398"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/5850.clip_5F00_image001_5F00_5549F7EB.png"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image001" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/3162.clip_5F00_image001_5F00_thumb_5F00_10312AB5.png" alt="clip_image001" width="435" height="289" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="258"&gt;
&lt;p&gt;Open Visual Studio 2012 project to be signed&lt;/p&gt;
&lt;p&gt;&amp;middot; double click the package.appxmanifest&lt;/p&gt;
&lt;p&gt;&amp;middot; Click Choose Certificate&amp;hellip;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="398"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/3034.clip_5F00_image003_5F00_50FC505E.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image003" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0815.clip_5F00_image003_5F00_thumb_5F00_7A06EF5A.jpg" alt="clip_image003" width="448" height="161" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="258"&gt;
&lt;p&gt;On the Choose Certificate screen&lt;/p&gt;
&lt;p&gt;&amp;middot; Click Configure Certificate &amp;gt; Select from File&amp;hellip;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="398"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/6330.clip_5F00_image005_5F00_2686CFFA.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image005" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7343.clip_5F00_image005_5F00_thumb_5F00_1204112D.jpg" alt="clip_image005" width="438" height="282" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="258"&gt;
&lt;p&gt;On the Select File screen&lt;/p&gt;
&lt;p&gt;&amp;middot; Navigate to and select the exported PFX file&lt;/p&gt;
&lt;p&gt;&amp;middot; Click Open&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="398"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/8272.clip_5F00_image007_5F00_1A877077.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image007" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7120.clip_5F00_image007_5F00_thumb_5F00_6340E93B.jpg" alt="clip_image007" width="439" height="266" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="258"&gt;
&lt;p&gt;On the Enter Password screen&lt;/p&gt;
&lt;p&gt;&amp;middot; Enter Password&lt;/p&gt;
&lt;p&gt;&amp;middot; Click OK&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="398"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/1526.clip_5F00_image009_5F00_180CAF62.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image009" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7180.clip_5F00_image009_5F00_thumb_5F00_475E24EC.jpg" alt="clip_image009" width="344" height="161" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="258"&gt;
&lt;p&gt;On the Choose Certificate screen&lt;/p&gt;
&lt;p&gt;&amp;middot; Click OK&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="398"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/5466.clip_5F00_image011_5F00_5E1FFD26.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image011" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/6305.clip_5F00_image011_5F00_thumb_5F00_3FD54630.jpg" alt="clip_image011" width="346" height="239" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;&lt;a name="_Toc347472800"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;h3&gt;&lt;a name="_Toc347437142"&gt;&lt;/a&gt;&lt;span style="color: #000000;"&gt;Package the signed APPX&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;We have created the .pfx file needed to sign the application in the previous steps, so now we can sign our application.&lt;/p&gt;
&lt;table style="width: 662px;" border="1" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="255"&gt;
&lt;p&gt;Open Visual Studio 2012 project to be packaged&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="405"&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="255"&gt;
&lt;p&gt;Inside the project&lt;/p&gt;
&lt;p&gt;&amp;middot; Right click the Project&lt;/p&gt;
&lt;p&gt;&amp;middot; Click Rebuild&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="405"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7167.clip_5F00_image00212_5F00_52C87840.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image002[12]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/2235.clip_5F00_image00212_5F00_thumb_5F00_37267CFB.jpg" alt="clip_image002[12]" width="389" height="410" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="255"&gt;
&lt;p&gt;Inside Solution Explorer&lt;/p&gt;
&lt;p&gt;&amp;middot; Right click the solution to be packaged&lt;/p&gt;
&lt;p&gt;&amp;middot; Click Store&lt;/p&gt;
&lt;p&gt;&amp;middot; Click Create App Package&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="405"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0525.clip_5F00_image00411_5F00_4D7C2240.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image004[11]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/4762.clip_5F00_image00411_5F00_thumb_5F00_6AF103FD.jpg" alt="clip_image004[11]" width="388" height="456" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="255"&gt;
&lt;p&gt;On Create Your Package screen&lt;/p&gt;
&lt;p&gt;&amp;middot; Select No&lt;/p&gt;
&lt;p&gt;&amp;middot; Click Next&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="405"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/6763.clip_5F00_image00612_5F00_5359568A.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image006[12]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/5228.clip_5F00_image00612_5F00_thumb_5F00_4589A140.jpg" alt="clip_image006[12]" width="388" height="277" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="255"&gt;
&lt;p&gt;On the Select and Configure Packages screen&lt;/p&gt;
&lt;p&gt;&amp;middot; Specify the path for the package to be placed&lt;/p&gt;
&lt;p&gt;&amp;middot; Click Create&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="405"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/1033.clip_5F00_image00810_5F00_2E5E26C2.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image008[10]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0728.clip_5F00_image00810_5F00_thumb_5F00_290F4011.jpg" alt="clip_image008[10]" width="389" height="272" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="255"&gt;
&lt;p&gt;On the Package Creation Completed screen&lt;/p&gt;
&lt;p&gt;&amp;middot; Click OK&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note: You may click on the link provided to navigate to the location the package was placed.&lt;/em&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="405"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/4135.clip_5F00_image01010_5F00_7F9AFED0.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image010[10]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/5141.clip_5F00_image01010_5F00_thumb_5F00_21866155.jpg" alt="clip_image010[10]" width="384" height="280" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;&lt;a name="_Toc347472801"&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;h3&gt;&lt;a name="_Toc347437143"&gt;&lt;/a&gt;&lt;span style="color: #000000;"&gt;Configure Group Policy&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;In order to deploy a Windows 8 application using Side loading, the computer receiving the package must either have a developer license (used for testing purposes only) or appropriate local/group policy settings to ensure the applications which are trusted can be installed.&lt;/p&gt;
&lt;table style="width: 668px;" border="1" cellspacing="0" cellpadding="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="253"&gt;
&lt;p&gt;Open Group Policy Management&lt;/p&gt;
&lt;p&gt;&amp;middot; Right click where you want to link the new Group Policy&lt;/p&gt;
&lt;p&gt;&amp;middot; Click Create a GPO in this domain and Link it here&amp;hellip;&lt;/p&gt;
&lt;p&gt;Note: The Windows 8 systems must be located within the location where the new GPO is being linked&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="413"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/1307.clip_5F00_image00214_5F00_1F4C694A.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image002[14]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/8662.clip_5F00_image00214_5F00_thumb_5F00_59C7691E.jpg" alt="clip_image002[14]" width="431" height="391" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="253"&gt;
&lt;p&gt;On the new GPO screen&lt;/p&gt;
&lt;p&gt;&amp;middot; Name the GPO appropriately&lt;/p&gt;
&lt;p&gt;&amp;middot; Click OK&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="413"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7608.clip_5F00_image00413_5F00_0AAD8CC8.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image004[13]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/2330.clip_5F00_image00413_5F00_thumb_5F00_73821249.jpg" alt="clip_image004[13]" width="312" height="149" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="253"&gt;
&lt;p&gt;On the GPMC&lt;/p&gt;
&lt;p&gt;&amp;middot; Right click the new policy&lt;/p&gt;
&lt;p&gt;&amp;middot; Click Edit&amp;hellip;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="413"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/2350.clip_5F00_image005_5F00_4BF7B3D4.png"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image005" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/8510.clip_5F00_image005_5F00_thumb_5F00_624D5919.png" alt="clip_image005" width="425" height="324" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="253"&gt;
&lt;p&gt;On the Group Policy Management Editor screen&lt;/p&gt;
&lt;p&gt;&amp;middot; Expand Computer Configuration &amp;gt; Policies &amp;gt; Administrative Templates &amp;gt; Windows Components &amp;gt; App Package Deployment&lt;/p&gt;
&lt;p&gt;&amp;middot; Right Click Allow all trusted apps to install &amp;gt; Click Edit&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="413"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/8030.clip_5F00_image0077_5F00_01265DA9.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image007[7]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/1031.clip_5F00_image0077_5F00_thumb_5F00_7EEC659D.jpg" alt="clip_image007[7]" width="439" height="280" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="253"&gt;
&lt;p&gt;On Allow trusted apps to install screen&lt;/p&gt;
&lt;p&gt;&amp;middot; Select Enabled&lt;/p&gt;
&lt;p&gt;&amp;middot; Click OK&lt;/p&gt;
&lt;/td&gt;
&lt;td valign="top" width="413"&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7345.clip_5F00_image0095_5F00_73A6BD9E.jpg"&gt;&lt;img style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="clip_image009[5]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/4130.clip_5F00_image0095_5F00_thumb_5F00_17CEA8DF.jpg" alt="clip_image009[5]" width="443" height="406" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This post was contributed by &lt;strong&gt;John Taylor&lt;/strong&gt;, a Senior Consultant with Microsoft National IT Operational Consulting &amp;ndash; US.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer: The information on this site is provided "AS IS" with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;/strong&gt;&lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;&lt;strong&gt;Terms of Use&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3578842" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-57-88-42/Signing-Windows-8-apps-using-an-Internal-PKI.docx" length="2218825" type="application/octet-stream" /><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Deployment/">Deployment</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/ConfigMgr+2012/">ConfigMgr 2012</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Windows+8/">Windows 8</category></item><item><title>Update – Removing Built-in Applications from Windows 8</title><link>http://blogs.technet.com/b/deploymentguys/archive/2013/06/07/update-removing-built-in-applications-from-windows-8.aspx</link><pubDate>Fri, 07 Jun 2013 18:48:41 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3577489</guid><dc:creator>Ben Hunter</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3577489</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3577489</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2013/06/07/update-removing-built-in-applications-from-windows-8.aspx#comments</comments><description>&lt;p&gt;In October last year I published a &lt;a href="http://blogs.technet.com/b/deploymentguys/archive/2012/10/26/removing-built-in-applications-from-windows-8.aspx"&gt;script&lt;/a&gt; that is designed to remove the built-in Windows 8 applications when creating a Windows 8 image. After a reading some of the comments in that blog post I decided to create a new version of the script that is simpler to use. The new script removes the need to know the full name for the app and the different names for each architecture. I am sure you will agree that this name - &lt;em&gt;Microsoft.Bing&lt;/em&gt; – is much easier to manage than this - &lt;em&gt;Microsoft.Bing_1.2.0.137_x86__8wekyb3d8bbwe.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;The script below takes a simple list of Apps and then removes the &lt;strong&gt;provisioned package&lt;/strong&gt; and the &lt;strong&gt;package&lt;/strong&gt; that is installed for the Administrator. To adjust the script for your requirements simply update the $AppList comma separated list to include the Apps you want to remove. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;$AppsList = &amp;quot;Microsoft.Bing&amp;quot; , &amp;quot;Microsoft.BingFinance&amp;quot; , &amp;quot;Microsoft.BingMaps&amp;quot; , &amp;quot;Microsoft.BingNews&amp;quot;`     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; , &amp;quot;Microsoft.BingSports&amp;quot; , &amp;quot;Microsoft.BingTravel&amp;quot; , &amp;quot;Microsoft.BingWeather&amp;quot; , &amp;quot;Microsoft.Camera&amp;quot;`      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; , &amp;quot;microsoft.microsoftskydrive&amp;quot; , &amp;quot;Microsoft.Reader&amp;quot; , &amp;quot;microsoft.windowscommunicationsapps&amp;quot;`      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; , &amp;quot;microsoft.windowsphotos&amp;quot; , &amp;quot;Microsoft.XboxLIVEGames&amp;quot; , &amp;quot;Microsoft.ZuneMusic&amp;quot;`      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; , &amp;quot;Microsoft.ZuneVideo&amp;quot; , &amp;quot;Microsoft.Media.PlayReadyClient&amp;quot; &lt;/p&gt;    &lt;p&gt;ForEach ($App in $AppsList)     &lt;br /&gt; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; $PackageFullName = (Get-AppxPackage $App).PackageFullName      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; if ((Get-AppxPackage $App).PackageFullName)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Write-Host &amp;quot;Removing Package: $App&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; remove-AppxProvisionedPackage -online -packagename $PackageFullName      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; remove-AppxPackage -package $PackageFullName      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; else      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Write-Host &amp;quot;Unable to find package: $App&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt; }&lt;/p&gt;    &lt;p&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;For more information on adding and removing apps please refer to &lt;a href="http://technet.microsoft.com/en-us/library/hh852635.aspx"&gt;this TechNet article&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;This post was contributed by &lt;strong&gt;Ben Hunter&lt;/strong&gt;, a Solution Architect with Microsoft Consulting Services.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Disclaimer: The information on this site is provided &amp;quot;AS IS&amp;quot; with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;/strong&gt;&lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;&lt;strong&gt;Terms of Use&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3577489" width="1" height="1"&gt;</description></item><item><title>Automatically Populate the PATCH Property for the ConfigMgr Client Installation – Script Update</title><link>http://blogs.technet.com/b/deploymentguys/archive/2013/06/04/automatically-populate-the-patch-property-for-the-configmgr-client-installation-script-update.aspx</link><pubDate>Wed, 05 Jun 2013 02:05:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3576752</guid><dc:creator>Michael Murgolo</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3576752</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3576752</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2013/06/04/automatically-populate-the-patch-property-for-the-configmgr-client-installation-script-update.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://blogs.technet.com/b/deploymentguys/archive/2012/10/11/automatically-populate-the-patch-property-for-the-configmgr-client-installation-updated-for-configmgr-2012.aspx" target="_blank"&gt;Last October&lt;/a&gt; I posted an update to the script to automatically set the PATCH property used by ccmsetup.exe to install client updates during the Configuration Manager client installation in a task sequence.&amp;#160; That update was to make the script compatible with ConfigMgr 2012.&lt;/p&gt;  &lt;p&gt;Since that time, my colleague &lt;a href="http://blogs.msdn.com/b/alex_semi/" target="_blank"&gt;Alexey Semibratov&lt;/a&gt; pointed out to me that the script did not correctly handle FullMedia deployments correctly.&amp;#160; In that scenario, I had assumed that the script could install the client updates directly off the media.&amp;#160; This assumption will not work if the media drive letter changes after booting into the new OS.&lt;/p&gt;  &lt;p&gt;To overcome this, the new version attached below now uses Alexey’s idea to copy the updates to %OSDisk%\windows\temp\hotfix in all scenarios.&amp;#160; The %OSDISK% variable should get set properly in all scenarios when using latest MDT 2012 Update 1 task sequence template.&lt;/p&gt;  &lt;p&gt;Follow the &lt;a href="http://blogs.technet.com/b/deploymentguys/archive/2012/10/11/automatically-populate-the-patch-property-for-the-configmgr-client-installation-updated-for-configmgr-2012.aspx" target="_blank"&gt;October 2012&lt;/a&gt; post for instructions to setup the client package and Chris Nackers’ great &lt;a href="http://myitforum.com/cs2/blogs/cnackers/archive/2010/08/28/configuration-manager-configmgr-automatically-populating-the-patch-property.aspx"&gt;blog post&lt;/a&gt; for instructions on how to configure this solution.&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="600" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="598"&gt;&lt;strong&gt;Update 2013-06-12: &lt;/strong&gt; In a comment posted to the October 2012 post, a reader had an issue where it appeared that the OSDisk variable did not get set before this script ran.&amp;#160; To try to alleviate this, I have made a small change to the script where it now checks to see if OSDisk has a value and if not, calls a ZTIUtility.vbs function to try to set it.&amp;#160; The updated script (v1.1.3) is now attached below.&amp;#160; This version requires the latest version of ZTIUtility.vbs (from MDT 2012 Update 1 as of this writing).&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Disclaimer: The information on this site is provided &amp;quot;AS IS&amp;quot; with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;/strong&gt;&lt;a href="http://www.microsoft.com/about/legal/en/us/IntellectualProperty/Copyright/Default.aspx"&gt;Terms of Use&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;This post was contributed by &lt;strong&gt;Michael Murgolo,&lt;/strong&gt; a Senior Consultant with Microsoft Services - U.S. East Region.&lt;/em&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3576752" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-03-57-67-52/SCCMClientHotfixPath_5F00_v1.1.3.zip" length="4886" type="application/zip" /></item><item><title>PXE Deployment with Surface Pro</title><link>http://blogs.technet.com/b/deploymentguys/archive/2013/05/16/pxe-deployment-with-surface-pro.aspx</link><pubDate>Thu, 16 May 2013 20:44:43 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3573229</guid><dc:creator>Ben Hunter</dc:creator><slash:comments>14</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3573229</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3573229</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2013/05/16/pxe-deployment-with-surface-pro.aspx#comments</comments><description>&lt;p&gt;PXE support has been added to Surface Pro as part of the May firmware update.&amp;#160; This means that as long as you have the Surface Pro Ethernet Adapter and installed the firmware update you can now perform PXE based deployments to Surface Pro. For detailed guidance on updating firmware on Surface pro please refer to my previous blog post - &lt;a title="http://blogs.technet.com/b/deploymentguys/archive/2013/05/14/deploying-drivers-and-firmware-to-surface-pro.aspx" href="http://blogs.technet.com/b/deploymentguys/archive/2013/05/14/deploying-drivers-and-firmware-to-surface-pro.aspx"&gt;http://blogs.technet.com/b/deploymentguys/archive/2013/05/14/deploying-drivers-and-firmware-to-surface-pro.aspx&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;To perform a deployment from your existing Windows Server 2008 R2 or Windows Server 2012 WDS server you need to do the following:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Attach the Surface Pro Ethernet Adapter to the Surface Pro.&lt;/li&gt;    &lt;li&gt;Press and hold the &lt;b&gt;volume down button&lt;/b&gt; and then press the &lt;b&gt;power button&lt;/b&gt;, continue to hold the volume down button until the Surface starts to boot from the USB key.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;em&gt;A dialog box will appear that states that it is “Checking Media Presence……”. Then it will “Start PXE over IPv4”.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 3. When prompted press &lt;b&gt;Enter &lt;/b&gt;for &lt;em&gt;network boot service.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;The Surface Pro should now connect to your PXE server and allow you to perform a normal deployment.&lt;/p&gt;  &lt;p&gt;For further details on Surface Pro deployment please refer to the &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=38826"&gt;Surface Pro - Enterprise Deployment Quick Start Guide&lt;/a&gt; within the Surface Pro firmware and driver pack that I worked with the Surface Team create.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;This post was contributed by &lt;strong&gt;Ben Hunter&lt;/strong&gt;, a Solution Architect with Microsoft Consulting Services.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Disclaimer: The information on this site is provided &amp;quot;AS IS&amp;quot; with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;/strong&gt;&lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;&lt;strong&gt;Terms of Use&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3573229" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Windows+8/">Windows 8</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Surface+Pro/">Surface Pro</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/PXE/">PXE</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/firmware/">firmware</category></item><item><title>Deploying Drivers and Firmware to Surface Pro</title><link>http://blogs.technet.com/b/deploymentguys/archive/2013/05/16/deploying-drivers-and-firmware-to-surface-pro.aspx</link><pubDate>Thu, 16 May 2013 20:44:33 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3573228</guid><dc:creator>Ben Hunter</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3573228</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3573228</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2013/05/16/deploying-drivers-and-firmware-to-surface-pro.aspx#comments</comments><description>&lt;p&gt;In the last month the Surface Pro team have started releasing &lt;a href="http://go.microsoft.com/fwlink/?LinkID=301483&amp;amp;clcid=0x409"&gt;driver and firmware pack&lt;/a&gt;s that include all on the drivers and firmware required for Surface Pro. This pack is a simple zip file that contains all of the drivers as INF files that can be installed with out requiring an executable, which for those of you that have followed my previous posts will know is the way I like to see drivers provided.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Firmware Deployment&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Perhaps the coolest thing about this pack is the fact that it includes firmware that is delivered in the form of a driver package. This is possible due to a UEFI feature called capsule packages. These capsule packages can be installed several ways: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Published via Windows Update &lt;/li&gt;    &lt;li&gt;Injected into an offline Windows image&lt;/li&gt;    &lt;li&gt;Installed into Windows 8 online &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt; - They cannot be installed via Windows Software Update Service (WSUS).&lt;/p&gt;  &lt;p&gt;The firmware is exposed to the machine as a device under the firmware node in device manager.&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0572.image_5F00_4CFD3150.png"&gt;&lt;img title="image" style="display: inline;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0363.image_5F00_thumb_5F00_019D8D8C.png" width="283" height="141" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;To update the firmware manually simply install the driver package on the machine then Windows will then seamlessly take care of the update process for you, ensuring that the correct firmware is applied. Once installed a flag is set for the loader and &lt;u&gt;on restart&lt;/u&gt; all available firmware updates are applied. During the boot process a dialog will appear that states “installing system updates”. If you are deploying the drivers as part of an OS deployment, perhaps with the Microsoft Deployment Toolkit or System Center Configuration Manager 2012 you simply add these firmware drivers to your existing driver deployment methodology and the Windows will handle handle the update process for you.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Driver Deployment&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Deploying these drivers as part of your existing OS deployment process is simple, however what happens if you want to update drivers on a Surface Pro that has already been deployed. This is definitely something you will want to do as the Surface team has already delivered a number of significant performance improvements as driver and firmware updates. One option would be to manually right clicking on the device in device manager, and select the appropriate driver to install. However this is a laborious process. It is possible to automate this process using a PowerShell script that calls the &lt;a href="http://msdn.microsoft.com/en-us/library/ff550419.aspx"&gt;PnPUtil&lt;/a&gt; utility.&lt;/p&gt;  &lt;p&gt;The following script iterates recursively through the pack and installs all of the drivers that it finds:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;$ScriptPath = Split-Path -parent $MyInvocation.MyCommand.Definition &lt;/p&gt;    &lt;p&gt;$files = get-childitem -path $Scriptpath -recurse -filter *.inf &lt;/p&gt;    &lt;p&gt;foreach ($file in $files) &lt;/p&gt;    &lt;p&gt;{ &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; Write-host &amp;quot;Injecting driver $file&amp;quot; &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; pnputil -i -a $file.FullName &lt;/p&gt;    &lt;p&gt;} &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;To use this script extract the driver pack and place the script in top level folder of the extracted zip file. Then execute the script, it will install all drivers (including firmware). This could also be packaged into a System Center Configuration Manager package and deployed to existing machines.&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/2022.image_5F00_3A483799.png"&gt;&lt;img title="image" style="display: inline;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/8321.image_5F00_thumb_5F00_1A2D2ADC.png" width="257" height="154" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;For further details on Surface Pro deployment please refer to the &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=38826"&gt;Surface Pro - Enterprise Deployment Quick Start Guide&lt;/a&gt; within the Surface Pro firmware and driver pack that I worked with the Surface Team create.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;This post was contributed by &lt;strong&gt;Ben Hunter&lt;/strong&gt;, a Solution Architect with Microsoft Consulting Services.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Disclaimer: The information on this site is provided &amp;quot;AS IS&amp;quot; with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;/strong&gt;&lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;&lt;strong&gt;Terms of Use&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3573228" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Windows+8/">Windows 8</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Surface+Pro/">Surface Pro</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/firmware/">firmware</category><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Drivers/">Drivers</category></item><item><title>Supporting Windows 8 Mail App in the Enterprise</title><link>http://blogs.technet.com/b/deploymentguys/archive/2013/05/14/supporting-windows-8-mail-app-in-the-enterprise.aspx</link><pubDate>Tue, 14 May 2013 21:21:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3571960</guid><dc:creator>Lutz Seidemann</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3571960</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3571960</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2013/05/14/supporting-windows-8-mail-app-in-the-enterprise.aspx#comments</comments><description>&lt;p&gt;In a recent project we faced an interesting problems using the Windows 8 Mail App.&lt;/p&gt;
&lt;p&gt;Windows 8 include a built-in email app named Mail (also referred to as Windows 8 Mail or the Windows 8 Mail app). We used a Standard User Account without any local Admin privileges, logged on to the Domain and tried to add our Exchange information to the mail app. After adding our Account information an error is popping up &amp;ldquo;&lt;em&gt;To sync &lt;a href="mailto:username@yourdomainname.com"&gt;username@yourdomainname.com&lt;/a&gt;, you will need to change this PC&amp;rsquo;s settings to match the mail server&amp;rsquo;s security settings&lt;/em&gt;.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/2045.clip_5F00_image0025_5F00_6F1A37FF.jpg"&gt;&lt;img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="clip_image002[5]" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7652.clip_5F00_image0025_5F00_thumb_5F00_71DFECF2.jpg" alt="clip_image002[5]" width="304" height="46" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;After some investigation about this error we found out there are few settings Enterprises need to prepare before using the mail app in an environment with logged down user rights.&lt;/p&gt;
&lt;p&gt;The Windows 8 Mail to allows users using ActiveSync (EAS) for Exchange synchronization. If you add your account to the Mail application your Exchange policies will pushed down and the stronger policy will take presence (&lt;a href="http://blogs.technet.com/b/exchange/archive/2012/11/26/supporting-windows-8-mail-in-your-organization.aspx"&gt;http://blogs.technet.com/b/exchange/archive/2012/11/26/supporting-windows-8-mail-in-your-organization.aspx&lt;/a&gt;). If your EAS is stronger than your Domain or local policy the Windows Policy Engine requires admin access to apply policy changes, since non-admins are not allowed to make changes to computer/account configurations, you will get the issue documented above.&lt;/p&gt;
&lt;p&gt;In a next step you have to compare the policy that is applied on the device(s) against what is being requested by the Exchange server.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Control&amp;nbsp; the corresponding Group Policy (Computer Configuration / Windows Settings / Security Settings / Local Policies / Security Options /) to have the same settings&amp;nbsp; as you have configured in Exchange. If both are identical you can add your Exchange Account without getting any popup.&lt;/p&gt;
&lt;p&gt;AllowSimpleDevicePassword&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : &lt;em&gt;Windows Policy Engine would try to apply this policy,&lt;/em&gt; &lt;br /&gt;&lt;em&gt;MaxInactivityTimeDeviceLock&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : Windows Policy Engine would try to apply this policy, &lt;br /&gt;MaxDevicePasswordFailedAttempts&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : Windows Policy Engine would try to apply this policy,&lt;/em&gt; &lt;br /&gt;DevicePasswordExpiration&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : &lt;em&gt;Windows Policy Engine would try to apply this policy,&lt;/em&gt; &lt;br /&gt;&lt;em&gt;DevicePasswordHistory&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : Windows Policy Engine would try to apply this policy, &lt;br /&gt;RequireDeviceEncryption&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : Windows Policy Engine would try to apply this policy, &lt;/em&gt; &lt;br /&gt;MinDevicePasswordComplexCharacters&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : domain accounts, password length and complex characters are not governed by EAS, &lt;br /&gt;MinDevicePasswordLength&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : domain accounts, password length and complex characters are not governed by EAS,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This post was contributed by &lt;/em&gt;&lt;strong&gt;&lt;em&gt;Lutz Seidemann&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;, a Solution Architect with Microsoft Consulting Services.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The information on this site is provided "AS IS" with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;a href="http://www.microsoft.com/about/legal/en/us/Copyright/Default.aspx"&gt;Terms of Use&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3571960" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/b/deploymentguys/archive/tags/Windows+8/">Windows 8</category></item><item><title>Windows 8 – Supporting proxy services with Static Configurations, Web Hosted PAC files and Domain Policy Configured Proxy</title><link>http://blogs.technet.com/b/deploymentguys/archive/2013/05/08/windows-8-supporting-proxy-services-with-static-configurations-web-hosted-pac-files-and-domain-policy-configured-proxy.aspx</link><pubDate>Wed, 08 May 2013 19:32:07 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3571464</guid><dc:creator>Scott Culbertson</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3571464</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3571464</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2013/05/08/windows-8-supporting-proxy-services-with-static-configurations-web-hosted-pac-files-and-domain-policy-configured-proxy.aspx#comments</comments><description>&lt;p&gt;Many companies have started using Windows 8 and have noticed with some of the new features there are times when things just don’t seem to work the way they expected them too; this was due to configuration needs and not actual issues in many cases.&amp;#160; We have found this is normally due to some additional configurations that are required to enable the newer features and applications that have been introduced with the new OS.&lt;/p&gt;  &lt;p&gt;I would like to focus on one that I have been putting some extra effort towards to help customers get the best experience they can when the enterprise has proxy services enabled and they see issues such as the Windows 8 apps and basic services are not communicating with web services.&lt;/p&gt;  &lt;p&gt;Sometimes communities identify issues and is important that we help improve the user experience when issues are identified. There are a couple articles currently articles addressing some of the original issues.&amp;#160;&amp;#160; Specifically the need to use the NETSH commands to correct the WINHTTP Proxy service; see the reference articles within this blog for links to them.&amp;#160; This include transitioning to new networks and the use of WPAD for the most robust model for Windows 8. &lt;/p&gt;  &lt;p&gt;Note: It is important to also understand before we review these scenarios and options that for the best Windows 8 experience it is recommended to use WPAD to enable all the features of Windows 8 without additional work for the client.&amp;#160; Use these links to understand how to implement WPAD and enabling Authenticated Proxy support.&lt;/p&gt;  &lt;p&gt;&lt;a name="Articles"&gt;&lt;b&gt;Supporting Articles:&amp;#160; &lt;/b&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Implementing WPAD: &lt;a href="http://support.microsoft.com/kb/2777643/EN-US"&gt;KB2777643&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Authenticated Proxy Support: &lt;a href="http://support.microsoft.com/kb/2778122/EN-US"&gt;KB2778122&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;font size="4"&gt;Proxy Service in the Enterprise:&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a name="KeyScenarios"&gt;&lt;b&gt;Key Scenarios&lt;/b&gt;&lt;/a&gt;: Typical results in the following scenarios with “Static Proxy”, “Web Hosted Proxy PAC Files” and “Domain Policy Defined Proxy”, hosted PAC files is the following: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Window 8 Network Location Awareness:&lt;/b&gt; NLA is required for Windows 8 applications to function properly by determining that you are connected to the internet by looking for a file called ncsi.txt on the internet and is the feature that tells the Windows 8 applications if your online.&amp;#160; When this is working right your Network Icon will reflect your online and when you access Windows 8 Application such as Bing Sports it will identify your access and function properly. Properly define proxy services will enable this.&lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Windows 8 Applications:&amp;#160; &lt;/b&gt;In general testing Windows 8 applications will function as designed.&amp;#160; &lt;b&gt;Note:&lt;/b&gt; &lt;i&gt;This is not a blanket statement for all Windows store application due to the lack of testing. I have tested the normal inbox apps and some additional application downloaded.&amp;#160;&amp;#160; &lt;/i&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;The Windows Store Application updates:&lt;/b&gt; This feature is functioning while using Static or PAC files when the user is on &lt;b&gt;public networks only&lt;/b&gt;.&amp;#160;&amp;#160; In some cases it has been noticed that the Inbox Windows 8 apps will be able to update while connected to the corporate network.&amp;#160; If the updating is needed internally and you must use a PAC file you may wish to look at using WPAD. Another option is to use the PAC file model I describe below.&amp;#160; &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;The Windows Store Catalogue:&lt;/b&gt;&amp;#160; Can be&amp;#160; viewed and searched.&amp;#160; &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Windows Store Apps Downloads:&lt;/b&gt;&amp;#160; This feature is functioning while using Static or PAC files when the user is on &lt;b&gt;&lt;i&gt;public networks only&lt;/i&gt; &lt;/b&gt;to purchase apps and download.&amp;#160;&amp;#160; If the download is needed internally and you must use a PAC file you may wish to look at using WPAD. Another option is to use the PAC file model I describe below. &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Windows Update:&lt;/b&gt;&amp;#160;&amp;#160; For Windows updates it has been observed that Automatic Updates do not work with Proxy configuration but both User Activated updates in the Windows 8 WU and the Classic Update model they will work.&amp;#160; Once the computer is on the public network it will be able to receive Automatic Updates or with the user checking for updates.&amp;#160; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;Note: There is a known Issue for Authenticating Proxies Solutions:&lt;/b&gt;&amp;#160; You will need to follow the guidance in the &lt;a href="http://support.microsoft.com/kb/2778122/EN-US"&gt;KB2778122&lt;/a&gt; for whitelisting certain HTTP address’s listed in article to ensure the best experience while on the corporate network. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; &lt;strong&gt;Known issue with local installed PAC files:&lt;/strong&gt;&amp;#160; Local install of PAC files will not work for more than Local Browser services. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;font size="3"&gt;Enabling these PROXY scenarios:&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;We will walk through the simplest implementation which also has most limitation to the preferred method and options for configuration of PAC files. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a name="StaticPAC"&gt;&lt;b&gt;&lt;font size="2"&gt;Static Proxy Services:&lt;/font&gt; &lt;/b&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Note: &lt;/b&gt;&lt;i&gt;Only noted to help customers understand chance for negative experience. This is not preferred, this shouldn’t be used unless you are supporting desktop only. I just wanted to make people aware of it.&amp;#160;&amp;#160; Preferred approach is WPAD&lt;/i&gt;&lt;i&gt; and then Web Proxy PAC file&lt;/i&gt;&lt;i&gt; &lt;/i&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;This model is a direct insertion of the proxy server address and port used for communication via Internet Explore through the configuration via “Internet Options” and clicking on “Connections Tab” then “LAN Settings” and setting up your proxy definition under Proxy Server”&lt;/p&gt;  &lt;p&gt;Load Internet Explorer&amp;#160; and open Settings / Internet Options&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/4314.clip_5F00_image001_5F00_5AB977E2.jpg"&gt;&lt;img title="clip_image001" style="display: inline; background-image: none;" border="0" alt="clip_image001" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/1602.clip_5F00_image001_5F00_thumb_5F00_32A6C8C3.jpg" width="238" height="313" /&gt;&lt;/a&gt; &lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/5342.clip_5F00_image002_5F00_18D29294.jpg"&gt;&lt;img title="clip_image002" style="display: inline; background-image: none;" border="0" alt="clip_image002" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0564.clip_5F00_image002_5F00_thumb_5F00_3EC842EA.jpg" width="288" height="252" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;With this implementation you will find that as long as your computer is on the proper network where the proxy server can be found your services as described above will work.&amp;#160; If the Proxy Server is not locatable the following error will be observed due to WEB services not routing properly. Resolution will be to connect the system back to the proper network.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/2642.clip_5F00_image003_5F00_04D8FFFE.jpg"&gt;&lt;img title="clip_image003" style="display: inline; background-image: none;" border="0" alt="clip_image003" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/2570.clip_5F00_image003_5F00_thumb_5F00_6F0F17A0.jpg" width="325" height="144" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; Put the system back onto the proper network or remove the static proxy setting. &lt;/p&gt;  &lt;p&gt;&lt;a name="WEBPAC"&gt;&lt;b&gt;&lt;font size="2"&gt;Web Based Proxy PAC File: &lt;/font&gt;&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Note:&lt;/b&gt;&amp;#160; U&lt;i&gt;sing the following two configuration options in the Proxy path configuration &lt;font color="#ff0000"&gt;do not&lt;/font&gt; work:&lt;/i&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font color="#ff0000"&gt;&amp;#160;&lt;/font&gt;&lt;a href="file://\\server\share\file.pac"&gt;&lt;font color="#ff0000"&gt;\\server\share\file.pac&lt;/font&gt;&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="file://C:/ProxyFolder/file.pac"&gt;&lt;font color="#ff0000"&gt;File://C:/ProxyFolder/file.pac&lt;/font&gt;&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If Proxy PAC files need to be used in the enterprise environment using a web hosted service is the preferred method.&amp;#160; This can be hosted on the proxy server or any other IIS services hosting the file so it can be accessed by the computer at boot.&amp;#160;&amp;#160; To do this you need to configure the PROXY setting in the manner below. &lt;/p&gt;  &lt;p&gt;This model is a direct insertion of the web server address for the PAC file for communication via Internet Explore through the configuration via “Internet Options” and clicking on “Connections Tab” then “LAN Settings” and setting up your proxy definition under Proxy Server&lt;/p&gt;  &lt;p&gt;Load Internet Explorer&amp;#160; and open Settings / Internet Options&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/6724.clip_5F00_image001_5F00_0328342A.jpg"&gt;&lt;img title="clip_image001" style="display: inline; background-image: none;" border="0" alt="clip_image001" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0572.clip_5F00_image001_5F00_thumb_5F00_2D283252.jpg" width="274" height="360" /&gt;&lt;/a&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/6278.clip_5F00_image004_5F00_531DE2A8.jpg"&gt;&lt;img title="clip_image004" style="display: inline; background-image: none;" border="0" alt="clip_image004" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/2818.clip_5F00_image004_5F00_thumb_5F00_791392FE.jpg" width="336" height="296" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In this case you will have the expected results I noted &lt;a href="#KeyScenarios"&gt;above&lt;/a&gt; in the top of this Blog. I also want to provide a couple sample PAC files that I have found to help make the user experience work well.&amp;#160;&amp;#160; I also will discuss a model where you could potentially enable the Windows 8 App Store for downloading applications that was mentioned above where it may potentially not work with PAC files.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Sample PAC file #1:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Net Results will be that your system will function with new Windows 8 Apps but you will not be able to download new apps till the device is placed outside the corporate network.&amp;#160; The proxy will be offline and your system will default to standard full internet access allowing the download of the selected applications.&amp;#160; If for some reason you have an external Proxy you will need to consider the second sample file for the best results. &lt;/p&gt;  &lt;p&gt;This file is the simplest and will identify your host network and then designate the Proxy Server for that network.&amp;#160; If the network host is not found it instructs the WINHTTP services to use the default gateway of the computer.&amp;#160; While on the company network Windows 8 App Store Downloads may not work but when the computer is on a public network it will be able to download Windows Store Apps. &lt;/p&gt;  &lt;p&gt;You can use&amp;#160; notepad.exe to create a simple test file, example: Sample1.PAC&lt;/p&gt;  &lt;p&gt;&lt;font color="#9b00d3"&gt;//Begin&lt;/font&gt;&lt;/p&gt; &lt;font color="#9b00d3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font color="#9b00d3"&gt;function FindProxyForURL(url, host)&lt;/font&gt;&lt;/p&gt; &lt;font color="#9b00d3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font color="#9b00d3"&gt;{&lt;/font&gt;&lt;/p&gt; &lt;font color="#9b00d3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font color="#9b00d3"&gt;if (isInNet(myIpAddress(), &amp;quot;10.0.0.0&amp;quot;, &amp;quot;255.255.255.0&amp;quot;))&lt;/font&gt;&lt;/p&gt; &lt;font color="#9b00d3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font color="#9b00d3"&gt;return &amp;quot;PROXY ProxyServerName:8080&amp;quot;;&lt;/font&gt;&lt;/p&gt; &lt;font color="#9b00d3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font color="#9b00d3"&gt;else &amp;quot;Proxy Direct&amp;quot;;&lt;/font&gt;&lt;/p&gt; &lt;font color="#9b00d3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font color="#9b00d3"&gt;}&lt;/font&gt;&lt;/p&gt; &lt;font color="#9b00d3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font color="#9b00d3"&gt;//End&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a name="SAMPLEPAC2"&gt;&lt;/a&gt;&lt;a name="SAMPLEPAC"&gt;&lt;/a&gt;&lt;b&gt;Sample PAC File #2: &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Note: &lt;/b&gt;&lt;i&gt;This will require corporate review and approval most likely. The purpose of this Script is to enable Windows Application Store Downloads within the corporate network with proxy services or if the company is using an External Web based Proxy Service.&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;In this scenario you have a Default Gateway on the corporate network that is open to the internet but normal traffic is always processed through the Proxy server.&amp;#160;&amp;#160; With this configuration we have directed any traffic required to communicate with Microsoft to be allowed to operate through the default gateway and the limited capabilities are now removed and Windows Store Apps will now be successfully downloaded on the corporate network. &lt;/p&gt;  &lt;p&gt;You can use&amp;#160; notepad.exe to create a simple test file, example: Sample2.PAC&lt;/p&gt;  &lt;p&gt;&lt;font color="#9b00d3"&gt;//Begin&lt;/font&gt;&lt;/p&gt; &lt;font color="#9b00d3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font color="#9b00d3"&gt;function FindProxyForURL(url, host)&lt;/font&gt;&lt;/p&gt; &lt;font color="#9b00d3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font color="#9b00d3"&gt;{&lt;/font&gt;&lt;/p&gt; &lt;font color="#9b00d3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font color="#9b00d3"&gt;// variable strings to return&lt;/font&gt;&lt;/p&gt; &lt;font color="#9b00d3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font color="#9b00d3"&gt;var proxy_online = &amp;quot;PROXY ProxyServer:8080&amp;quot;;&lt;/font&gt;&lt;/p&gt; &lt;font color="#9b00d3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font color="#9b00d3"&gt;var proxy_offline = &amp;quot;DIRECT&amp;quot;;&lt;/font&gt;&lt;/p&gt; &lt;font color="#9b00d3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font color="#9b00d3"&gt;if (shExpMatch(url, &amp;quot;&lt;/font&gt;&lt;a href="http://*.microsoft.com*"&gt;&lt;font color="#9b00d3"&gt;http://*.microsoft.com*&lt;/font&gt;&lt;/a&gt;&lt;font color="#9b00d3"&gt;&amp;quot;)) &lt;/font&gt;&lt;/p&gt; &lt;font color="#9b00d3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font color="#9b00d3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; { return proxy_offline; }&lt;/font&gt;&lt;/p&gt; &lt;font color="#9b00d3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font color="#9b00d3"&gt;if (shExpMatch(url, &amp;quot;&lt;/font&gt;&lt;a href="https://*.microsoft.com*"&gt;&lt;font color="#9b00d3"&gt;https://*.microsoft.com*&lt;/font&gt;&lt;/a&gt;&lt;font color="#9b00d3"&gt;&amp;quot;))      &lt;br /&gt; { return proxy_offline; }&lt;/font&gt;&lt;/p&gt; &lt;font color="#9b00d3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font color="#9b00d3"&gt;// Proxy anything else&lt;/font&gt;&lt;/p&gt; &lt;font color="#9b00d3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font color="#9b00d3"&gt;return proxy_online;&lt;/font&gt;&lt;/p&gt; &lt;font color="#9b00d3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font color="#9b00d3"&gt;}&lt;/font&gt;&lt;/p&gt; &lt;font color="#9b00d3"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font color="#9b00d3"&gt;//END&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a name="DomainPolicy"&gt;&lt;b&gt;&lt;font size="2"&gt;Domain Policy Configuration for a PAC File:&lt;/font&gt;&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This procedure assumes you are familiar will traversing the Group Policy Management tool using either Server 2012 or the Remote Server Administration Toolkit for Windows 8.&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;First create a policy for Internet Explorer 10 for the proxy configuration under “User Settings” Preference – Control panel settings. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/2330.clip_5F00_image005_5F00_1F094355.jpg"&gt;&lt;img title="clip_image005" style="display: inline; background-image: none;" border="0" alt="clip_image005" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/2474.clip_5F00_image005_5F00_thumb_5F00_5DFAC3F0.jpg" width="323" height="292" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; Wizard will pull up and then you can select “Connection” Tab and then “LAN settings” Radio Button&lt;/p&gt;  &lt;p&gt;Enter the required Proxy settings and then link the GPO to you target OU &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7587.clip_5F00_image007_5F00_5603218E.jpg"&gt;&lt;img title="clip_image007" style="display: inline; background-image: none;" border="0" alt="clip_image007" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/3817.clip_5F00_image007_5F00_thumb_5F00_4D9F4C37.jpg" width="326" height="213" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Make sure to select F5 on the Field when you enter the Name so it is accepted.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/8547.clip_5F00_image008_5F00_5A992C48.jpg"&gt;&lt;img title="clip_image008" style="display: inline; background-image: none;" border="0" alt="clip_image008" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/7802.clip_5F00_image008_5F00_thumb_5F00_52A189E6.jpg" width="328" height="273" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This will allow you to now set the Proxy GPO on your system.&amp;#160; &lt;/p&gt;  &lt;p&gt;Additional information for PAC Files Scripting options can be found here: &lt;a href="http://technet.microsoft.com/en-us/library/dd361950.aspx"&gt;MS TechNet on PAC File Scripting&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;This post was contributed by &lt;/em&gt;&lt;strong&gt;Scott Culbertson&lt;/strong&gt;&lt;em&gt;, a Solution Architect with Microsoft Consulting Services.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;The information on this site is provided &amp;quot;AS IS&amp;quot; with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;a href="http://www.microsoft.com/about/legal/en/us/Copyright/Default.aspx"&gt;Terms of Use&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3571464" width="1" height="1"&gt;</description></item><item><title>USMT Restore Status Notification HTA in Full Operating System</title><link>http://blogs.technet.com/b/deploymentguys/archive/2013/04/09/usmt-restore-status-notification-hta-in-full-operating-system.aspx</link><pubDate>Tue, 09 Apr 2013 16:35:15 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3564388</guid><dc:creator>Brad Tucker</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3564388</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3564388</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2013/04/09/usmt-restore-status-notification-hta-in-full-operating-system.aspx#comments</comments><description>&lt;p&gt;In my previous blog &lt;a href="http://blogs.technet.com/b/deploymentguys/archive/2013/04/09/usmt-capture-status-notification-hta-in-full-operating-system.aspx" target="_blank"&gt;entry&lt;/a&gt;, I explained my customer’s need for stand-alone USMT Capture and USMT Restore task sequences and their need for a notification box to pop up and let the technicians know the process completed successfully.&amp;#160; This post will continue in that vein and discuss the notification HTA for the USMT Restore task sequence.&lt;/p&gt;  &lt;p&gt;The requirement was to make a notification box pop up and pause the task sequence until it is acknowledged or closed.&amp;#160; &lt;/p&gt;  &lt;p&gt;I created a simple HTA that will look for the loadstate.log in the CCM\Logs\SMSTSlog folder based on architecture.&amp;#160; As I am sure you are aware, the SMSTSLog folder is where the logs are placed during the task sequence, so they are always guaranteed to be current.&amp;#160; It isn’t until the task sequence is closed out that the logs are moved one level up and the SMSTSLog folder removed.&lt;/p&gt;  &lt;p&gt;If they are running on a Windows XP machine the path is: &lt;/p&gt;  &lt;p&gt;&lt;em&gt;C:\Windows\System32\CCM\Logs\SMSTSLog\loadstate.log.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;If they are running on a Windows 7 x64 machine, the path is: &lt;/p&gt;  &lt;p&gt;&lt;em&gt;C:\Windows\SysWow64\CCM\Logs\SMSTSLog\loadstate.log&lt;/em&gt;&lt;/p&gt; &lt;em&gt;&lt;/em&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The HTA then parses this log file looking for ‘MIGACTIVITY_SUCCESS’.&amp;#160; If this message exists in the log file, the HTA returns the following box…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0005.image_5F00_5A2CE1F5.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/6646.image_5F00_thumb_5F00_170163C8.png" width="518" height="261" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;If it doesn’t exist, they see the following box…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/1830.image_5F00_0A6390DF.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0081.image_5F00_thumb_5F00_6D99F5FC.png" width="521" height="262" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now that the HTA is functional, I have to put it in the task sequence and make it visible while running inside the full operating system.&amp;#160; This is where the fun really begins…&lt;/p&gt;  &lt;p&gt;Luckily, we can take advantage of ServiceUi.exe that exists in the Tools\x86 or Tools\x64 folders within the Microsoft Deployment Toolkit package.&amp;#160; We can launch this by calling it from %toolroot%.&lt;/p&gt;  &lt;p&gt;Placing my HTA file in a folder called CustomScripts underneath the Scripts folder in the toolkit package allows me to use the command line…&lt;/p&gt;  &lt;p align="left"&gt;&lt;em&gt;%toolroot%\serviceui.exe –process:tsprogressui.exe %systemroot%\system32\mshta.exe %scriptroot%\CustomScripts\USMTRestoreStatus.hta&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Here is an example of how to call my HTA using the ServiceUi.exe…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/3652.RestoreNotificationTaskCommand_5F00_4DDAF667.png"&gt;&lt;img title="RestoreNotificationTaskCommand" style="display: inline; background-image: none;" border="0" alt="RestoreNotificationTaskCommand" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/1134.RestoreNotificationTaskCommand_5F00_thumb_5F00_79B75C24.png" width="651" height="325" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;For more information on the use of ServiceUI.exe, see &lt;a href="http://blogs.technet.com/b/cameronk/archive/2011/01/25/can-i-use-serviceui-exe-to-launch-other-programs-besides-the-udi-setup-wizard.aspx" target="_blank"&gt;‘Can I use ServiceUI.exe to launch other programs besides the UDI Setup Wizard?’&lt;/a&gt; on &lt;a href="http://blogs.technet.com/b/cameronk" target="_blank"&gt;Cameron’s Blog – Cravings of System Center&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;USMTRestoreStatus.hta&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1"&gt;&amp;lt;html&amp;gt;      &lt;br /&gt;&amp;lt; head&amp;gt;       &lt;br /&gt;&amp;lt; title&amp;gt;USMT Restore Status&amp;lt;/title&amp;gt;       &lt;br /&gt;&amp;lt; HTA:APPLICATION       &lt;br /&gt;&amp;#160; APPLICATIONNAME=&amp;quot;USMT Restore Status&amp;quot;       &lt;br /&gt;&amp;#160; ID=&amp;quot;USMTRestoreStatus&amp;quot;       &lt;br /&gt;&amp;#160; SCROLL=&amp;quot;no&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;lt; /head&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;&amp;lt;script language=&amp;quot;VBScript&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;' *****************      &lt;br /&gt; ' * Window_OnLoad *       &lt;br /&gt; ' *****************&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;Sub Window_OnLoad      &lt;br /&gt;&amp;#160; 'This method will be called when the application loads       &lt;br /&gt;&amp;#160;&amp;#160; window.resizeTo 600,300       &lt;br /&gt;&amp;#160;&amp;#160; window.moveto 1,1       &lt;br /&gt;&amp;#160;&amp;#160; USMTStatus       &lt;br /&gt; End Sub&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;   &lt;br /&gt;&lt;font size="1"&gt; ' *****************      &lt;br /&gt; ' * USMTStatus&amp;#160;&amp;#160;&amp;#160; *       &lt;br /&gt; ' *****************&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;Sub USMTStatus      &lt;br /&gt;Const ForReading = 1&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;' Set the search parameter      &lt;br /&gt; Set objRegEx = CreateObject(&amp;quot;VBScript.RegExp&amp;quot;)       &lt;br /&gt;objRegEx.Pattern = &amp;quot;MIGACTIVITY_SUCCESS&amp;quot;&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;' Prepare log file connectivity      &lt;br /&gt; Set objFSO = CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;' WMI Connectivity      &lt;br /&gt;strComputer = &amp;quot;.&amp;quot;       &lt;br /&gt; Set objWMIService = GetObject(&amp;quot;winmgmts:&amp;quot; &amp;amp; &amp;quot;{impersonationLevel=impersonate}!\\&amp;quot; &amp;amp; strComputer &amp;amp; &amp;quot;\root\cimv2&amp;quot;)&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;' Query WMI for processor architecture type      &lt;br /&gt; Set colProcessors= objWMIService.ExecQuery (&amp;quot;Select * From Win32_Processor&amp;quot;)&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;' Set log file location based on processor architecture type      &lt;br /&gt; For Each objProcessor in colProcessors       &lt;br /&gt;&amp;#160; If objProcessor.Architecture = 0 Then       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Set objFile = objFSO.OpenTextFile(&amp;quot;C:\windows\system32\ccm\logs\SMSTSLog\loadstate.log&amp;quot;, ForReading)       &lt;br /&gt;&amp;#160; Else       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Set objFile = objFSO.OpenTextFile(&amp;quot;C:\windows\syswow64\ccm\logs\SMSTSLog\loadstate.log&amp;quot;, ForReading)       &lt;br /&gt;&amp;#160; End If&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;' Set initial returnSuccess to 'False'      &lt;br /&gt;returnSuccess = False&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;' Parse the scanstate.log file for search parameters      &lt;br /&gt; Do Until objFile.AtEndOfStream       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; strSearchString = objFile.ReadLine       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set colMatches = objRegEx.Execute(strSearchString)&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; If colMatches.Count &amp;gt; 0 Then       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; For Each strMatch in colMatches       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; returnSuccess = True       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Next       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End If       &lt;br /&gt; Loop&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;' Set HTA pop-up box text based on search results      &lt;br /&gt; If returnSuccess = True Then       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DataArea.InnerHTML = &amp;quot;The user state was SUCCESSFULLY restored.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;PLEASE CLOSE THIS BOX TO END THE TASK SEQUENCE.&amp;quot;       &lt;br /&gt; Else       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DataArea.InnerHTML = &amp;quot;The user state was NOT SUCCESSFULLY restored.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;PLEASE CLOSE THIS BOX TO END THE TASK SEQUENCE.&amp;quot;       &lt;br /&gt; End If&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;Next&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;End Sub&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;   &lt;br /&gt;&lt;font size="1"&gt;&amp;lt; /script&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;&amp;lt;body bgcolor= &amp;quot;white&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;&amp;lt;span id = &amp;quot;DataArea&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;&amp;lt;!--{{InsertControlsHere}}-Do not remove this line--&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;&amp;lt;/body&amp;gt;      &lt;br /&gt;&amp;lt; /html&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;br clear="all" /&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;div id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:f305e452-2adc-4a8d-a848-5c67ed242c4b" class="wlWriterEditableSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt;&lt;p&gt; &lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/6646.USMTRestoreStatus_5F00_0A3F3146.zip" target="_blank"&gt;USMTRestoreStatus.hta&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br clear="all" /&gt;&amp;#160; &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;This post was contributed by &lt;strong&gt;Brad Tucker&lt;/strong&gt;, a Senior Consultant with Microsoft Services, East Region, United States&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Disclaimer: The information on this site is provided &amp;quot;AS IS&amp;quot; with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;&lt;strong&gt;Terms of Use&lt;/strong&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3564388" width="1" height="1"&gt;</description></item><item><title>USMT Capture Status Notification HTA in Full Operating System</title><link>http://blogs.technet.com/b/deploymentguys/archive/2013/04/09/usmt-capture-status-notification-hta-in-full-operating-system.aspx</link><pubDate>Tue, 09 Apr 2013 13:48:26 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3564319</guid><dc:creator>Brad Tucker</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/rsscomments.aspx?WeblogPostID=3564319</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.technet.com/b/deploymentguys/commentapi.aspx?WeblogPostID=3564319</wfw:comment><comments>http://blogs.technet.com/b/deploymentguys/archive/2013/04/09/usmt-capture-status-notification-hta-in-full-operating-system.aspx#comments</comments><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Recently, I had a customer that wanted separate, stand-alone USMT Capture and USMT Restore task sequences.&amp;#160; They had key depot locations that would allow users to drop off an old machine, and have the depot technicians image and restore data to a new device.&amp;#160; They would then repurpose the old machine.&lt;/p&gt;  &lt;p&gt;Evidently, they had issues with USMT not running successfully or perhaps it was forgotten by the technician in the first place.&amp;#160; So they asked for a notification box to pop up and let the technician know the data was, in fact, captured successfully.&lt;/p&gt;  &lt;p&gt;The requirement was to make a notification box pop up and pause the task sequence until it is acknowledged or closed.&amp;#160; &lt;/p&gt;  &lt;p&gt;I created a simple HTA that will look for the scanstate.log in the CCM\Logs\SMSTSlog folder based on architecture.&amp;#160; As I am sure you are aware, the SMSTSLog folder is where the logs are placed &lt;em&gt;during&lt;/em&gt; the task sequence, so they are always guaranteed to be current.&amp;#160; It isn’t until the task sequence is closed out that the logs are moved one level up and the SMSTSLog folder removed.&lt;/p&gt;  &lt;p&gt;If they are running on a Windows XP machine the path is: &lt;/p&gt;  &lt;p&gt;&lt;em&gt;C:\Windows\System32\CCM\Logs\SMSTSLog\scanstate.log.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;If they are running on a Windows 7 x64 machine, the path is: &lt;/p&gt;  &lt;p&gt;&lt;em&gt;C:\Windows\SysWow64\CCM\Logs\SMSTSLog\scanstate.log&lt;/em&gt;&lt;/p&gt; &lt;em&gt;&lt;/em&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The HTA then parses this log file looking for ‘MIGACTIVITY_SUCCESS’.&amp;#160; If this message exists in the log file, the HTA returns the following box…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/4760.image_5F00_57DAD01C.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/6644.image_5F00_thumb_5F00_153B0ED7.png" width="525" height="264" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;If it doesn’t exist, they see the following box…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/3660.image_5F00_7EF4CDB7.png"&gt;&lt;img title="image" style="display: inline; background-image: none;" border="0" alt="image" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/4048.image_5F00_thumb_5F00_21F5195B.png" width="522" height="263" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now that the HTA is functional, I have to put it in the task sequence and make it visible while running inside the full operating system.&amp;#160; This is where the fun really begins…&lt;/p&gt;  &lt;p&gt;Luckily, we can take advantage of ServiceUi.exe that exists in the Tools\x86 or Tools\x64 folders within the Microsoft Deployment Toolkit package.&amp;#160; We can launch this by calling it from %toolroot%.&lt;/p&gt;  &lt;p&gt;Placing my HTA file in a folder called CustomScripts underneath the Scripts folder in the toolkit package allows me to use the command line…&lt;/p&gt;  &lt;p align="left"&gt;&lt;em&gt;%toolroot%\serviceui.exe –process:tsprogressui.exe %systemroot%\system32\mshta.exe %scriptroot%\CustomScripts\USMTCaptureStatus.hta&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Here is an example of how to call my HTA using the ServiceUi.exe…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/4505.CaptureNotificationTaskCommand_5F00_3C918FA7.png"&gt;&lt;img title="CaptureNotificationTaskCommand" style="display: inline; background-image: none;" border="0" alt="CaptureNotificationTaskCommand" src="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/0284.CaptureNotificationTaskCommand_5F00_thumb_5F00_76CCB9EE.png" width="630" height="311" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;For more information on the use of ServiceUI.exe, see &lt;a href="http://blogs.technet.com/b/cameronk/archive/2011/01/25/can-i-use-serviceui-exe-to-launch-other-programs-besides-the-udi-setup-wizard.aspx" target="_blank"&gt;‘Can I use ServiceUI.exe to launch other programs besides the UDI Setup Wizard?’&lt;/a&gt; on &lt;a href="http://blogs.technet.com/b/cameronk" target="_blank"&gt;Cameron’s Blog – Cravings of System Center&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;USMTCaptureStatus.hta&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1"&gt;&amp;lt;html&amp;gt;      &lt;br /&gt;&amp;lt; head&amp;gt;       &lt;br /&gt;&amp;lt; title&amp;gt;USMT Capture Status&amp;lt;/title&amp;gt;       &lt;br /&gt;&amp;lt; HTA:APPLICATION       &lt;br /&gt;&amp;#160; APPLICATIONNAME=&amp;quot;USMT Capture Status&amp;quot;       &lt;br /&gt;&amp;#160; ID=&amp;quot;USMTCaptureStatus&amp;quot;       &lt;br /&gt;&amp;#160; SCROLL=&amp;quot;no&amp;quot;/&amp;gt;       &lt;br /&gt;&amp;lt; /head&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;&amp;lt;script language=&amp;quot;VBScript&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;' *****************      &lt;br /&gt;' * Window_OnLoad *       &lt;br /&gt;' *****************&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;Sub Window_OnLoad      &lt;br /&gt;&amp;#160; 'This method will be called when the application loads       &lt;br /&gt;&amp;#160;&amp;#160; window.resizeTo 600,300       &lt;br /&gt;&amp;#160;&amp;#160; window.moveto 1,1       &lt;br /&gt;&amp;#160;&amp;#160; USMTStatus       &lt;br /&gt;End Sub&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;     &lt;br /&gt;' *****************       &lt;br /&gt;' * USMTStatus&amp;#160;&amp;#160;&amp;#160; *       &lt;br /&gt;' *****************&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;Sub USMTStatus      &lt;br /&gt;Const ForReading = 1&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;' Set the search parameter      &lt;br /&gt;Set objRegEx = CreateObject(&amp;quot;VBScript.RegExp&amp;quot;)       &lt;br /&gt;objRegEx.Pattern = &amp;quot;MIGACTIVITY_SUCCESS&amp;quot;&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;' Prepare log file connectivity      &lt;br /&gt;Set objFSO = CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;' WMI Connectivity      &lt;br /&gt;strComputer = &amp;quot;.&amp;quot;       &lt;br /&gt;Set objWMIService = GetObject(&amp;quot;winmgmts:&amp;quot; &amp;amp; &amp;quot;{impersonationLevel=impersonate}!\\&amp;quot; &amp;amp; strComputer &amp;amp; &amp;quot;\root\cimv2&amp;quot;)&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;' Query WMI for processor architecture type      &lt;br /&gt;Set colProcessors= objWMIService.ExecQuery (&amp;quot;Select * From Win32_Processor&amp;quot;)&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;' Set log file location based on processor architecture type      &lt;br /&gt; For Each objProcessor in colProcessors       &lt;br /&gt;&amp;#160; If objProcessor.Architecture = 0 Then       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Set objFile = objFSO.OpenTextFile(&amp;quot;C:\windows\system32\ccm\logs\SMSTSLog\scanstate.log&amp;quot;, ForReading)       &lt;br /&gt;&amp;#160; Else       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Set objFile = objFSO.OpenTextFile(&amp;quot;C:\windows\syswow64\ccm\logs\SMSTSLog\scanstate.log&amp;quot;, ForReading)       &lt;br /&gt;&amp;#160; End If&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;' Set initial returnSuccess to 'False'      &lt;br /&gt;returnSuccess = False&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;' Parse the scanstate.log file for search parameters      &lt;br /&gt; Do Until objFile.AtEndOfStream       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; strSearchString = objFile.ReadLine       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set colMatches = objRegEx.Execute(strSearchString)&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; If colMatches.Count &amp;gt; 0 Then       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; For Each strMatch in colMatches       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; returnSuccess = True       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Next       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End If       &lt;br /&gt; Loop&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;' Set HTA pop-up box text based on search results      &lt;br /&gt; If returnSuccess = True Then       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DataArea.InnerHTML = &amp;quot;The user state was SUCCESSFULLY captured.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;PLEASE CLOSE THIS BOX TO END THE TASK SEQUENCE.&amp;quot;       &lt;br /&gt; Else       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DataArea.InnerHTML = &amp;quot;The user state was NOT SUCCESSFULLY captured.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;PLEASE CLOSE THIS BOX TO END THE TASK SEQUENCE.&amp;quot;       &lt;br /&gt; End If&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;Next&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;End Sub&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;     &lt;br /&gt;&amp;lt; /script&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;&amp;lt;body bgcolor= &amp;quot;white&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;&amp;lt;span id = &amp;quot;DataArea&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;&amp;lt;!--{{InsertControlsHere}}-Do not remove this line--&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;font size="1"&gt;&lt;/font&gt;  &lt;p&gt;&lt;font size="1"&gt;&amp;lt;/body&amp;gt;      &lt;br /&gt;&amp;lt; /html&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;br clear="all" /&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;div id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:01facb15-266e-4c4a-a0e0-d3c377d9d98d" class="wlWriterEditableSmartContent" style="margin: 0px; padding: 0px; float: none; display: inline;"&gt;&lt;p&gt; &lt;a href="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-61-27-metablogapi/3730.USMTCaptureStatus_5F00_13567F44.zip" target="_blank"&gt;USMTCaptureStatus.zip&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;  &lt;br clear="all" /&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;This post was contributed by &lt;strong&gt;Brad Tucker&lt;/strong&gt;, a Senior Consultant with Microsoft Services, East Region, United States&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Disclaimer: The information on this site is provided &amp;quot;AS IS&amp;quot; with no warranties, confers no rights, and is not supported by the authors or Microsoft Corporation. Use of included script samples are subject to the terms specified in the &lt;a href="http://www.microsoft.com/info/cpyright.mspx"&gt;&lt;strong&gt;Terms of Use&lt;/strong&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3564319" width="1" height="1"&gt;</description></item></channel></rss>