<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.iis.net/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/" xmlns:cs="http://blogs.iis.net/"><channel><title>Nazim&amp;#39;s IIS Security Blog : IIS5X</title><link>http://blogs.iis.net/nazim/archive/tags/IIS5X/default.aspx</link><description>Tags: IIS5X</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>FTP recursive list after applying MS09-053</title><link>http://blogs.iis.net/nazim/archive/2009/10/15/ftp-recursive-list-after-applying-ms09-053.aspx</link><pubDate>Thu, 15 Oct 2009 21:14:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3460891</guid><dc:creator>naziml</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/nazim/rsscomments.aspx?PostID=3460891</wfw:commentRss><comments>http://blogs.iis.net/nazim/archive/2009/10/15/ftp-recursive-list-after-applying-ms09-053.aspx#comments</comments><description>&lt;P&gt;We &lt;A href="http://blogs.iis.net/nazim/archive/2009/10/15/fixes-released-for-ftp-vulnerabilities.aspx" mce_href="http://blogs.iis.net/nazim/archive/2009/10/15/fixes-released-for-ftp-vulnerabilities.aspx"&gt;recently released fixes&lt;/A&gt; for the publicly disclosed FTP vulnerabilities. One of the after-effects of applying this update will be that recursive list commands to IIS FTP 5.x, 6.0 will return the non-recursive listing. To make it clear, this feature does not exist on IIS FTP 7.x either, and that is why I did not include those versions in the previous statement. For those that will miss this feature, &lt;A href="http://blogs.msdn.com/robert_mcmurray/archive/2009/09/05/creating-recursive-directory-listing-files-for-ftp-clients.aspx" mce_href="http://blogs.msdn.com/robert_mcmurray/archive/2009/09/05/creating-recursive-directory-listing-files-for-ftp-clients.aspx"&gt;there is a workaround on Robert McMurray’s blog&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3460891" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/nazim/archive/tags/IIS6/default.aspx">IIS6</category><category domain="http://blogs.iis.net/nazim/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://blogs.iis.net/nazim/archive/tags/IIS5X/default.aspx">IIS5X</category><category domain="http://blogs.iis.net/nazim/archive/tags/FTP/default.aspx">FTP</category></item><item><title>Fixes released for FTP vulnerabilities</title><link>http://blogs.iis.net/nazim/archive/2009/10/15/fixes-released-for-ftp-vulnerabilities.aspx</link><pubDate>Thu, 15 Oct 2009 21:06:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3460882</guid><dc:creator>naziml</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/nazim/rsscomments.aspx?PostID=3460882</wfw:commentRss><comments>http://blogs.iis.net/nazim/archive/2009/10/15/fixes-released-for-ftp-vulnerabilities.aspx#comments</comments><description>&lt;P&gt;Microsoft has released &lt;A href="http://www.microsoft.com/technet/security/bulletin/MS09-053.mspx" mce_href="http://www.microsoft.com/technet/security/bulletin/MS09-053.mspx"&gt;security bulletin MS09-053&lt;/A&gt; that will address the &lt;A href="http://blogs.iis.net/nazim/archive/2009/09/04/updated-iis-ftp-server-vulnerabilities-for-ftp-5-x-and-ftp-6.aspx" mce_href="http://blogs.iis.net/nazim/archive/2009/09/04/updated-iis-ftp-server-vulnerabilities-for-ftp-5-x-and-ftp-6.aspx"&gt;FTP vulnerabilities&lt;/A&gt; that were publicly disclosed a couple of weeks ago. The information in this bulletin supercedes the previous advisory. &lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3460882" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/nazim/archive/tags/IIS6/default.aspx">IIS6</category><category domain="http://blogs.iis.net/nazim/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://blogs.iis.net/nazim/archive/tags/Windows+Security/default.aspx">Windows Security</category><category domain="http://blogs.iis.net/nazim/archive/tags/IIS5X/default.aspx">IIS5X</category><category domain="http://blogs.iis.net/nazim/archive/tags/FTP/default.aspx">FTP</category></item><item><title>[Updated] IIS FTP server vulnerabilities for FTP 5.x and FTP 6</title><link>http://blogs.iis.net/nazim/archive/2009/09/04/updated-iis-ftp-server-vulnerabilities-for-ftp-5-x-and-ftp-6.aspx</link><pubDate>Fri, 04 Sep 2009 12:00:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3387620</guid><dc:creator>naziml</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/nazim/rsscomments.aspx?PostID=3387620</wfw:commentRss><comments>http://blogs.iis.net/nazim/archive/2009/09/04/updated-iis-ftp-server-vulnerabilities-for-ftp-5-x-and-ftp-6.aspx#comments</comments><description>&lt;SPAN style="FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class=MsoNormal mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;There have been two recently publicly disclosed vulnerabilities for FTP 5, FTP 5.1 and FTP 6. Wade has gone through great detail to explain what platforms are affected by each vulnerability in his &lt;A href="http://blogs.iis.net/wadeh/archive/2009/09/03/understanding-versions-of-the-iis-ftp-server.aspx" mce_href="http://blogs.iis.net/wadeh/archive/2009/09/03/understanding-versions-of-the-iis-ftp-server.aspx"&gt;blog post&lt;/A&gt;. Microsoft has released and &lt;A href="http://www.microsoft.com/technet/security/advisory/975191.mspx" mce_href="http://www.microsoft.com/technet/security/advisory/975191.mspx"&gt;refreshed an advisory&lt;/A&gt; that covers the details, mitigations and workarounds for the vulnerability. The Microsoft Security Research and Defense team has a &lt;A href="http://blogs.technet.com/srd/archive/2009/09/01/new-vulnerability-in-iis5-and-iis6.aspx" mce_href="http://blogs.technet.com/srd/archive/2009/09/01/new-vulnerability-in-iis5-and-iis6.aspx"&gt;blog&lt;/A&gt; about the exploit details for the original vulnerability. Here is the summary including both vulnerabilities:&lt;BR&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;DIV style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class=MsoNormal mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;Affected platforms: Windows Server 2000, Windows XP and Windows Server 2003, Windows Vista (FTP 6 only), Windows Server 2008 (FTP 6 only). &lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class=MsoNormal mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;Non-affected platforms: Windows 7, Windows Server 2008 R2.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class=MsoNormal mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;Windows Server 2008 and Windows Vista ships with FTP 6 by default and is affected by only one of the two disclosed vulnerabilites.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class=MsoNormal mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;The vulnerabilities does not affect FTP 7 or FTP 7.5 that ships out-of-band fro Windows Vista or Windows Server 2008.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class=MsoNormal mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;Windows 7 and Windows Server 2008 R2 are entirely unaffected because they contain FTP 7.5.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class=MsoNormal mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;The newer&amp;nbsp;vulnerability is a Denial of Service issue across all affected platforms and is caused by stack exhaustion.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class=MsoNormal mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;The&amp;nbsp;first vulnerability is a Remote Code Execution Vulnerability for Windows 2000 and a Denial of Service for all other platforms and is caused by a stack buffer overflow.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class=MsoNormal mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;Both exploits were not responsibly disclosed to Microsoft. Microsoft has released an &lt;A href="http://www.microsoft.com/technet/security/advisory/975191.mspx" mce_href="http://www.microsoft.com/technet/security/advisory/975191.mspx"&gt;advisory &lt;/A&gt;to assist customers while an update is being engineered.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class=MsoNormal mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;The stack exhaustion PoC exploit uses anonymous user with read permissions to trigger the overflow. The vulnerability is not constrained to anonymous users, and authenticated users can exploit it as well, though this will be auditable.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class=MsoNormal mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;The stack buffer overflow PoC exploit uses anonymous user with write permissions to trigger the overflow. The vulnerability is not constrained to anonymous users, and authenticated users can exploit it as well, though this will be auditable.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class=MsoNormal mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;Windows XP, Windows Server 2003, Windows Vista and Windows Server 2008 are protected from code execution by /GS and no public PoC exploit has yet bypassed this.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class=MsoNormal mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;Windows Server 2000 is not protected by &lt;A href="http://msdn.microsoft.com/en-us/library/8dbf701c.aspx" mce_href="http://msdn.microsoft.com/en-us/library/8dbf701c.aspx"&gt;/GS&lt;/A&gt; and the exploit hence results in code execution on that platform under &lt;A href="http://msdn.microsoft.com/en-us/library/ms684190(VS.85).aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms684190(VS.85).aspx"&gt;LocalSystem&lt;/A&gt; context.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class=MsoNormal mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;The &lt;A href="http://www.microsoft.com/technet/security/advisory/975191.mspx" mce_href="http://www.microsoft.com/technet/security/advisory/975191.mspx"&gt;advisory&lt;/A&gt; has workarounds to protect customers with varied impact on FTP functionality.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class=MsoNormal mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;The &lt;A href="http://blogs.technet.com/srd/archive/2009/09/01/new-vulnerability-in-iis5-and-iis6.aspx" mce_href="http://blogs.technet.com/srd/archive/2009/09/01/new-vulnerability-in-iis5-and-iis6.aspx"&gt;Microsoft Security Research &amp;amp; Defense blog&lt;/A&gt; has information about detecting attacks for the first vulnerability&amp;nbsp;that can be used for intrusion prevention. I will update this post with information on the second vulnerability when available.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P style="LINE-HEIGHT: normal; MARGIN: 0in 0in 10pt; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in" class=MsoNormal mce_keep="true"&gt;&lt;SPAN style="LINE-HEIGHT: 115%; FONT-FAMILY: 'Times New Roman','serif'; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3387620" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/nazim/archive/tags/IIS6/default.aspx">IIS6</category><category domain="http://blogs.iis.net/nazim/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://blogs.iis.net/nazim/archive/tags/Windows+Security/default.aspx">Windows Security</category><category domain="http://blogs.iis.net/nazim/archive/tags/IIS5X/default.aspx">IIS5X</category><category domain="http://blogs.iis.net/nazim/archive/tags/FTP/default.aspx">FTP</category></item><item><title>Updated advisory for FTP Vulnerability on IIS</title><link>http://blogs.iis.net/nazim/archive/2009/09/04/updated-advisory-for-ftp-vulnerability-on-iis.aspx</link><pubDate>Fri, 04 Sep 2009 04:04:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3386772</guid><dc:creator>naziml</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/nazim/rsscomments.aspx?PostID=3386772</wfw:commentRss><comments>http://blogs.iis.net/nazim/archive/2009/09/04/updated-advisory-for-ftp-vulnerability-on-iis.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;The public exposure of another vulnerability in the FTP stack has caused a revision in the Microsoft advisory. Please refer the advisory @ &lt;A href="http://www.microsoft.com/technet/security/advisory/975191.mspx" mce_href="http://www.microsoft.com/technet/security/advisory/975191.mspx"&gt;http://www.microsoft.com/technet/security/advisory/975191.mspx&lt;/A&gt;&amp;nbsp;to get updated information on exposure and impact of vulnerabilities. I have previously discussed this information in an earlier &lt;A href="http://blogs.iis.net/nazim/archive/2009/09/04/updated-iis-ftp-server-vulnerabilities-for-ftp-5-x-and-ftp-6.aspx" mce_href="http://blogs.iis.net/nazim/archive/2009/09/04/updated-iis-ftp-server-vulnerabilities-for-ftp-5-x-and-ftp-6.aspx"&gt;blog post&lt;/A&gt;&amp;nbsp;and have updated this post as well. Microsoft Security Response Center (MSRC) has a &lt;A href="http://blogs.technet.com/msrc/archive/2009/09/03/microsoft-security-advisory-975191-revised.aspx" mce_href="http://blogs.technet.com/msrc/archive/2009/09/03/microsoft-security-advisory-975191-revised.aspx"&gt;revised blog&lt;/A&gt; as well.&lt;/P&gt;
&lt;P mce_keep="true"&gt;The one thing I want to clarify before hand is that in the Mitigations section it mentions that FTP is not installed by default on Windows 2000, Windows XP and Windows Server 2003. Please add Windows Vista and above to this list as well. This is probably obvious to most, but I wanted to call it out anyway.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Also there has been a lot of confusion about FTP versions and what is affected. Refer to &lt;A href="http://blogs.iis.net/wadeh/archive/2009/09/03/understanding-versions-of-the-iis-ftp-server.aspx" mce_href="http://blogs.iis.net/wadeh/archive/2009/09/03/understanding-versions-of-the-iis-ftp-server.aspx"&gt;Wade's blog post&lt;/A&gt; on the topic to help clarify things.&lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3386772" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/nazim/archive/tags/IIS6/default.aspx">IIS6</category><category domain="http://blogs.iis.net/nazim/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://blogs.iis.net/nazim/archive/tags/Windows+Security/default.aspx">Windows Security</category><category domain="http://blogs.iis.net/nazim/archive/tags/IIS5X/default.aspx">IIS5X</category><category domain="http://blogs.iis.net/nazim/archive/tags/FTP/default.aspx">FTP</category></item><item><title>Update for WebDAV vulnerability on IIS 5.x and IIS 6</title><link>http://blogs.iis.net/nazim/archive/2009/06/09/update-for-webdav-vulnerability-on-iis-5-x-and-iis-6.aspx</link><pubDate>Tue, 09 Jun 2009 18:34:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3221060</guid><dc:creator>naziml</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/nazim/rsscomments.aspx?PostID=3221060</wfw:commentRss><comments>http://blogs.iis.net/nazim/archive/2009/06/09/update-for-webdav-vulnerability-on-iis-5-x-and-iis-6.aspx#comments</comments><description>&lt;P&gt;We now have a &lt;A href="http://www.microsoft.com/technet/security/bulletin/ms09-020.mspx" mce_href="http://www.microsoft.com/technet/security/bulletin/ms09-020.mspx"&gt;security update&lt;/A&gt; available to address the &lt;A href="http://blogs.iis.net/nazim/archive/2009/05/20/webdav-authentication-bypass-on-iis-6-0.aspx" mce_href="http://blogs.iis.net/nazim/archive/2009/05/20/webdav-authentication-bypass-on-iis-6-0.aspx"&gt;WebDAV extension vulnerability&lt;/A&gt; reported earlier. All customers affected should apply the update even if they have mitigated the issue through a workaround.&lt;/P&gt;
&lt;P&gt;The background here is that we had an encoding vulnerability in the WebDAV extension for IIS 5.x and IIS 6 that was publicly disclosed by a party and responsibly disclosed by someone else. Immediately following the public disclosure, we released an &lt;A href="http://www.microsoft.com/technet/security/advisory/971492.mspx" mce_href="http://www.microsoft.com/technet/security/advisory/971492.mspx"&gt;advisory&lt;/A&gt; detailing the issue and workarounds. We then accelerated our release of the fix that is now out this patch Tuesday.&lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3221060" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/nazim/archive/tags/IIS6/default.aspx">IIS6</category><category domain="http://blogs.iis.net/nazim/archive/tags/Windows+Security/default.aspx">Windows Security</category><category domain="http://blogs.iis.net/nazim/archive/tags/IIS5X/default.aspx">IIS5X</category><category domain="http://blogs.iis.net/nazim/archive/tags/WebDAV/default.aspx">WebDAV</category></item><item><title>WebDAV Authentication Bypass on IIS 5.0, 5.1 and 6.0</title><link>http://blogs.iis.net/nazim/archive/2009/05/20/webdav-authentication-bypass-on-iis-6-0.aspx</link><pubDate>Wed, 20 May 2009 16:52:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3176172</guid><dc:creator>naziml</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/nazim/rsscomments.aspx?PostID=3176172</wfw:commentRss><comments>http://blogs.iis.net/nazim/archive/2009/05/20/webdav-authentication-bypass-on-iis-6-0.aspx#comments</comments><description>&lt;P&gt;Microsoft has released &lt;A href="http://www.microsoft.com/technet/security/advisory/971492.mspx" mce_href="http://www.microsoft.com/technet/security/advisory/971492.mspx"&gt;advisory 971492&lt;/A&gt;&amp;nbsp; about an Elevation of Privilege issue with the WebDAV extension for IIS 5.0, 5.1 and 6.0. These versions of IIS reside on Windows Server 2000, Windows XP and Windows Server 2003 respectively. The advisory contains relevant information for who is affected and what the mitigations and workarounds are. The Microsoft Security Response Center (MSRC) has also release a &lt;A href="http://blogs.technet.com/msrc/archive/2009/05/18/microsoft-security-advisory-971492.aspx" mce_href="http://blogs.technet.com/msrc/archive/2009/05/18/microsoft-security-advisory-971492.aspx"&gt;blog&lt;/A&gt; outlining our response and the Security Research &amp;amp; Defense team has a &lt;A href="http://blogs.technet.com/srd/archive/2009/05/18/more-information-about-the-iis-authentication-bypass.aspx" mce_href="http://blogs.technet.com/srd/archive/2009/05/18/more-information-about-the-iis-authentication-bypass.aspx"&gt;blog&lt;/A&gt; outlining technical details.&lt;/P&gt;
&lt;P&gt;Here are the key takeaways:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;This only affects WebDAV for IIS 5.0, 5.1 and 6.0. It does not affect WebDAV 7.0 for IIS 7.0. &lt;/LI&gt;
&lt;LI&gt;This issue does not affect non-DAV requests to IIS 5.0, 5.1 and 6.0. &lt;/LI&gt;
&lt;LI&gt;WebDAV is not enabled by default on IIS 6.0 and IIS is not installed by default on for WinXP or Win2k3. &lt;/LI&gt;
&lt;LI&gt;File access checks are still enforced on vulnerable systems. &lt;/LI&gt;
&lt;LI&gt;Anonymous user account is explicitly denied write access to default web root folder in default configuration. &lt;/LI&gt;
&lt;LI&gt;Sharepoint, OWA and Exchange have a different implementation of DAV that is unaffected. &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;The advisory has workarounds on how to protect vulnerable systems. To find out if a system is vulnerable, send the HTTP request below to the root of your site. You can use a tool like &lt;A href="http://www.microsoft.com/Downloads/details.aspx?FamilyID=b134a806-d50e-4664-8348-da5c17129210&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/Downloads/details.aspx?FamilyID=b134a806-d50e-4664-8348-da5c17129210&amp;amp;displaylang=en"&gt;WFetch&lt;/A&gt; to send out requests to your sites (even SSL protected ones).&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;FONT size=2 face="Courier New"&gt;REQUEST: **************\n &lt;BR&gt;OPTIONS / HTTP/1.1\r\n &lt;BR&gt;Host: 127.0.0.1\r\n &lt;BR&gt;Accept: */*\r\n &lt;BR&gt;\r\n &lt;BR&gt;RESPONSE: **************\n &lt;BR&gt;HTTP/1.1 200 OK\r\n &lt;BR&gt;Server: Microsoft-IIS/5.0\r\n &lt;BR&gt;Date: Tue, 19 May 2009 20:13:53 GMT\r\n &lt;BR&gt;&lt;FONT color=#ff0000&gt;MS-Author-Via: MS-FP/4.0,DAV\r\n&lt;/FONT&gt; &lt;BR&gt;Content-Length: 0\r\n &lt;BR&gt;Accept-Ranges: none\r\n &lt;BR&gt;DASL: &amp;lt;DAV:sql&amp;gt;\r\n &lt;BR&gt;&lt;FONT color=#ff0000&gt;DAV: 1, 2\r\n&lt;/FONT&gt; &lt;BR&gt;Public: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, POST, COPY, MOVE, MKCOL, PROPFIND, PROPPATCH, LOCK, UNLOCK, SEARCH\r\n &lt;BR&gt;Allow: OPTIONS, TRACE, GET, HEAD, COPY, PROPFIND, SEARCH, LOCK, UNLOCK\r\n &lt;BR&gt;Cache-Control: private\r\n &lt;BR&gt;\r\n&lt;/FONT&gt;&lt;/P&gt;&lt;BR&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;The interesting portions of the response are highlighted in &lt;FONT color=#ff0000&gt;red&lt;/FONT&gt;. To check if WebDAV is enabled and in effect, check the following items in the response.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Need to receive a 2xx response to OPTIONS request made to root of site to analyze the result. If this is not the case, the test is inconclusive. &lt;/LI&gt;
&lt;LI&gt;Response contains the DAV header with value 1,2. &lt;/LI&gt;
&lt;LI&gt;Response contains MS-Author-Via header which contains DAV value. &lt;/LI&gt;
&lt;LI&gt;Response DOES NOT contain X-MSDAVEXT header. Existence of this means its Sharepoint’s DAV, which is a different implementation that is not susceptible to this vulnerability. &lt;/LI&gt;&lt;/OL&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3176172" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/nazim/archive/tags/IIS6/default.aspx">IIS6</category><category domain="http://blogs.iis.net/nazim/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://blogs.iis.net/nazim/archive/tags/IIS5X/default.aspx">IIS5X</category><category domain="http://blogs.iis.net/nazim/archive/tags/WebDAV/default.aspx">WebDAV</category></item><item><title>Script to lock down IIS paths</title><link>http://blogs.iis.net/nazim/archive/2009/03/11/script-to-lock-down-iis-paths.aspx</link><pubDate>Wed, 11 Mar 2009 18:48:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:3000346</guid><dc:creator>naziml</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/nazim/rsscomments.aspx?PostID=3000346</wfw:commentRss><comments>http://blogs.iis.net/nazim/archive/2009/03/11/script-to-lock-down-iis-paths.aspx#comments</comments><description>&lt;P&gt;In IIS 7 we have request filtering available to help with locking down files and directories that you don't want to serve out. This is useful for resources (like configuration) that you want your IIS worker process to have access to, but not serve it out to clients. Things like web.config files fall in to this bucket, and default IIS 7 request filtering configuration denies serving out this extension. However on IIS 6, you don't have request filtering functionality built into the IIS platform. You would need to install stand-alone tools like UrlScan. &lt;/P&gt;
&lt;P&gt;But there is a way on IIS 6 to prevent serving out files that exists on the platform; it's the AccessFlags&amp;nbsp; metabase property. This property can be applied to any file or directory, and setting it to 0 will block anything from the directory or file from being served out. To make the task of setting this property for any file or directory under your sites easy, I wrote a quick script using ADSI to assist with the task. I have done very minimal testing on this, so please let me know if there are any issues.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;DIV class=code&gt;&lt;FONT color=#006400&gt;//&amp;nbsp; File: IISLockPath.js &lt;BR&gt;//&amp;nbsp; Copyright Microsoft Corp. 2009 &lt;BR&gt;//&amp;nbsp; Author: Nazim Lala &lt;BR&gt;// &lt;BR&gt;//&amp;nbsp; This script will set the AccessFlags property to 0 for a file/folder in&amp;nbsp;&amp;nbsp; &lt;BR&gt;//&amp;nbsp; IIS so that the file is not served out. &lt;BR&gt;//&amp;nbsp; Access to the file/folder will result in 403s. &lt;BR&gt;// &lt;BR&gt;//&amp;nbsp; Usage: &lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IISLockPath.js &amp;lt;app_mb_path&amp;gt; &amp;lt;dir/filepath&amp;gt; &lt;BR&gt;//&amp;nbsp; where -&amp;nbsp; &lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;vdir_path&amp;gt;: Metabase path to vdir under which application lives.&amp;nbsp; &lt;BR&gt;//&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; Can be ROOT as well. &lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;dir/filepath&amp;gt;: relative path to file or folder under vdir. &lt;BR&gt;//&amp;nbsp; eg - &lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For Application = W3SVC/1/MyApp, which has physical path c:/MyApp &lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; To lock c:/MyApp/Config/Hidden folder the command would be: &lt;BR&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IISLockPath.js W3SVC/1/MyApp Config/Hidden &lt;BR&gt;// &lt;BR&gt;////////////////////////////////////////////////////////////////////////////////////////////// &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;var&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;VdirMBPath&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;null;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;var&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;RelResourcePath&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;null;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;var&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;VdirObj&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;null;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;var&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;WebObj&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;null;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;var&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;IsFolder&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;false;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;var&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;IsFile&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;false;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;var&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;SplitPath&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;if&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;WScript.Arguments.Count()&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;!&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#800000&gt;2&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WScript.Echo(&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Usage: IISLockPath.js &amp;lt;app_mb_path&amp;gt; &amp;lt;dir/filepath&amp;gt;.\r\n" &lt;/FONT&gt;&lt;FONT color=#000000&gt;+&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&amp;lt;vdir_path&amp;gt;: Metabase path to vdir under which application lives." &lt;/FONT&gt;&lt;FONT color=#000000&gt;+&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&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; "Can be ROOT as well.\r\n" &lt;/FONT&gt;&lt;FONT color=#000000&gt;+&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&amp;lt;dir/filepath&amp;gt;: relative path to file or folder under vdir." &lt;/FONT&gt;&lt;FONT color=#000000&gt;+&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Eg: App = W3SVC/1/MyApp, which has physical path c:/MyApp." &lt;/FONT&gt;&lt;FONT color=#000000&gt;+&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "To lock c:/MyApp/Config/Hidden folder the command would be: "&lt;/FONT&gt;&lt;FONT color=#000000&gt;+&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "IISLockPath.js W3SVC/1/MyApp Config/Hidden"&lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WScript.Quit()&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;else&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#006400&gt;// Verify format for MB vdir path &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#006400&gt;// Must have atleast w3svc/# - 7 characters &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;if&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;WScript.Arguments.Item(&lt;/FONT&gt;&lt;FONT color=#800000&gt;0&lt;/FONT&gt;&lt;FONT color=#000000&gt;).length&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;&amp;lt;&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#800000&gt;7&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;||&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WScript.Arguments.Item(&lt;/FONT&gt;&lt;FONT color=#800000&gt;0&lt;/FONT&gt;&lt;FONT color=#000000&gt;).toUpperCase().slice(&lt;/FONT&gt;&lt;FONT color=#800000&gt;0&lt;/FONT&gt;&lt;FONT color=#000000&gt;,&lt;/FONT&gt;&lt;FONT color=#800000&gt;6&lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;!&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt; "W3SVC/" &lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WScript.Echo(&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Error: " &lt;/FONT&gt;&lt;FONT color=#000000&gt;+&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;WScript.Arguments.Item(&lt;/FONT&gt;&lt;FONT color=#800000&gt;0&lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;+&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp; &lt;BR&gt;&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; " is not a valid IIS metabase path"&lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WScript.Quit()&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#006400&gt;// Replace all '\' with '/' and remove beginning and trailing slashes &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;var&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;rgx&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;new&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;RegExp&lt;/FONT&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;FONT color=#808080&gt;"\\\\"&lt;/FONT&gt;&lt;FONT color=#000000&gt;,&lt;/FONT&gt;&lt;FONT color=#808080&gt; "g"&lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;var&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;startindex,&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;endindex&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;var&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;s&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;WScript.Arguments.Item(&lt;/FONT&gt;&lt;FONT color=#800000&gt;0&lt;/FONT&gt;&lt;FONT color=#000000&gt;).replace(rgx,&lt;/FONT&gt;&lt;FONT color=#808080&gt; "/"&lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;if&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;s.substring(&lt;/FONT&gt;&lt;FONT color=#800000&gt;0&lt;/FONT&gt;&lt;FONT color=#000000&gt;,&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#800000&gt;1&lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;==&lt;/FONT&gt;&lt;FONT color=#808080&gt; "/" &lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;startindex&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#800000&gt;1&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;else&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;startindex&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#800000&gt;0&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;if&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;s.substring(s.length-&lt;/FONT&gt;&lt;FONT color=#800000&gt;1&lt;/FONT&gt;&lt;FONT color=#000000&gt;,&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;s.length)&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;==&lt;/FONT&gt;&lt;FONT color=#808080&gt; "/" &lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;endindex&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;s.length-&lt;/FONT&gt;&lt;FONT color=#800000&gt;1&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;else&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;endindex&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;s.length&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;VdirMBPath&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;s.substring(startindex,&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;endindex)&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;s&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;WScript.Arguments.Item(&lt;/FONT&gt;&lt;FONT color=#800000&gt;1&lt;/FONT&gt;&lt;FONT color=#000000&gt;).replace(rgx,&lt;/FONT&gt;&lt;FONT color=#808080&gt; "/"&lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;if&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;s.substring(&lt;/FONT&gt;&lt;FONT color=#800000&gt;0&lt;/FONT&gt;&lt;FONT color=#000000&gt;,&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#800000&gt;1&lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;==&lt;/FONT&gt;&lt;FONT color=#808080&gt; "/" &lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;startindex&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#800000&gt;1&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;else&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;startindex&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#800000&gt;0&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;if&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;s.substring(s.length-&lt;/FONT&gt;&lt;FONT color=#800000&gt;1&lt;/FONT&gt;&lt;FONT color=#000000&gt;,&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;s.length)&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;==&lt;/FONT&gt;&lt;FONT color=#808080&gt; "/" &lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;endindex&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;s.length-&lt;/FONT&gt;&lt;FONT color=#800000&gt;1&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;else&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;endindex&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;s.length&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;RelResourcePath&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;s.substring(startindex,&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;endindex)&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#006400&gt;// Verify existence of vdir path &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#006400&gt;// Technically we can get this working even if this is a web directory, but that has more steps to it &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#006400&gt;// So we will stick to VDirs for now. &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;try&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;VdirObj&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;GetObject(&lt;/FONT&gt;&lt;FONT color=#808080&gt;"IIS://localhost/" &lt;/FONT&gt;&lt;FONT color=#000000&gt;+&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;VdirMBPath)&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;catch&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;(e)&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;VdirObj&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;null;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;if&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;VdirObj&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;==&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;null&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WScript.Echo(&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Error: Could not locate virtual directory " &lt;/FONT&gt;&lt;FONT color=#000000&gt;+&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp; &lt;BR&gt;&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;/FONT&gt;&lt;FONT color=#000000&gt;VdirMBPath)&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WScript.Quit()&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#006400&gt;// Check if the Metabase has a&amp;nbsp; web directory/file for this. &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;try&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;var&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;Path&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt; "IIS://localhost/" &lt;/FONT&gt;&lt;FONT color=#000000&gt;+&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;VdirMBPath&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;+&lt;/FONT&gt;&lt;FONT color=#808080&gt; "/" &lt;/FONT&gt;&lt;FONT color=#000000&gt;+&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;RelResourcePath&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WebObj&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;GetObject(Path)&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#006400&gt;// We should be able to directly set the AccessFlag then. &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WebObj.Put(&lt;/FONT&gt;&lt;FONT color=#808080&gt; "AccessFlags"&lt;/FONT&gt;&lt;FONT color=#000000&gt;,&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#800000&gt;0&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WebObj.SetInfo()&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WScript.Echo(&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Done"&lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WScript.Quit()&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;catch&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;(e)&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WebObj&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;null;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#006400&gt;// We will need to create the web directory/file under the vdir. &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#006400&gt;// Validate that the relative path exists under the vdir and if it&amp;nbsp; &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#006400&gt;// is a file or folder &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;try&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;var&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;FSObject&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;new&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;ActiveXObject&lt;/FONT&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Scripting.FileSystemObject"&lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;var&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;PhysicalPath&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;VdirObj.Path&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;+&lt;/FONT&gt;&lt;FONT color=#808080&gt; "\\" &lt;/FONT&gt;&lt;FONT color=#000000&gt;+&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;RelResourcePath&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;if&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;FSObject.FileExists(PhysicalPath)&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;IsFile&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;true;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;else&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;if&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;FSObject.FolderExists(PhysicalPath)&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;IsFolder&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;true;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;if&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;!(&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;IsFile&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;||&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;IsFolder&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WScript.Echo(&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Error: Could not locate " &lt;/FONT&gt;&lt;FONT color=#000000&gt;+&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;RelResourcePath&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;+&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp; &lt;BR&gt;&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; " under physical path of " &lt;/FONT&gt;&lt;FONT color=#000000&gt;+&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;VdirMBPath)&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WScript.Quit()&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;catch&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;(e)&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WScript.Echo(&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Error: Could not create file system object."&lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WScript.Quit()&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#006400&gt;// Recursively create web folders for the relative path, making sure&amp;nbsp; &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#006400&gt;// the last one is either folder or file. &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;SplitPath&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;RelResourcePath.split(&lt;/FONT&gt;&lt;FONT color=#808080&gt;"/"&lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;var&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;CurrentPath&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt; "IIS://localhost/" &lt;/FONT&gt;&lt;FONT color=#000000&gt;+&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;VdirMBPath&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;for&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;(i&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#800000&gt;0&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;i&amp;lt;SplitPath.length-&lt;/FONT&gt;&lt;FONT color=#800000&gt;1&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;i++)&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WebObj&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;GetObject(CurrentPath)&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WebObj.Create(&lt;/FONT&gt;&lt;FONT color=#808080&gt;"IISWebDirectory"&lt;/FONT&gt;&lt;FONT color=#000000&gt;,&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;SplitPath[i])&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WebObj.SetInfo()&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;CurrentPath&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;+&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt; "/" &lt;/FONT&gt;&lt;FONT color=#000000&gt;+&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;SplitPath[i]&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;if&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;IsFolder&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WebObj&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;GetObject(CurrentPath)&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WebObj.Create(&lt;/FONT&gt;&lt;FONT color=#808080&gt;"IISWebDirectory"&lt;/FONT&gt;&lt;FONT color=#000000&gt;,&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;SplitPath[SplitPath.length-&lt;/FONT&gt;&lt;FONT color=#800000&gt;1&lt;/FONT&gt;&lt;FONT color=#000000&gt;])&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WebObj.SetInfo()&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#0000ff&gt;else&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WebObj&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;GetObject(CurrentPath)&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WebObj.Create(&lt;/FONT&gt;&lt;FONT color=#808080&gt;"IISWebFile"&lt;/FONT&gt;&lt;FONT color=#000000&gt;,&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;SplitPath[SplitPath.length-&lt;/FONT&gt;&lt;FONT color=#800000&gt;1&lt;/FONT&gt;&lt;FONT color=#000000&gt;])&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WebObj.SetInfo()&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;CurrentPath&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;+&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt; "/" &lt;/FONT&gt;&lt;FONT color=#000000&gt;+&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;SplitPath[SplitPath.length-&lt;/FONT&gt;&lt;FONT color=#800000&gt;1&lt;/FONT&gt;&lt;FONT color=#000000&gt;]&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WebObj&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;GetObject(CurrentPath)&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WebObj.Put(&lt;/FONT&gt;&lt;FONT color=#808080&gt; "AccessFlags"&lt;/FONT&gt;&lt;FONT color=#000000&gt;,&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#800000&gt;0&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WebObj.SetInfo()&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WScript.Echo(&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Done"&lt;/FONT&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=#000000&gt;WScript.Quit()&lt;/FONT&gt;&lt;FONT color=#0000ff&gt;;&lt;/FONT&gt;&lt;FONT color=#808080&gt; &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt; &lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=3000346" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/nazim/archive/tags/RequestFiltering/default.aspx">RequestFiltering</category><category domain="http://blogs.iis.net/nazim/archive/tags/IIS6/default.aspx">IIS6</category><category domain="http://blogs.iis.net/nazim/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://blogs.iis.net/nazim/archive/tags/IIS5X/default.aspx">IIS5X</category><category domain="http://blogs.iis.net/nazim/archive/tags/HTTP/default.aspx">HTTP</category></item><item><title>Script to install UrlScan v3.0 as a site filter.</title><link>http://blogs.iis.net/nazim/archive/2008/10/14/script-to-install-urlscan-v3-0-as-a-site-filter.aspx</link><pubDate>Tue, 14 Oct 2008 07:02:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:2680894</guid><dc:creator>naziml</dc:creator><slash:comments>23</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/nazim/rsscomments.aspx?PostID=2680894</wfw:commentRss><comments>http://blogs.iis.net/nazim/archive/2008/10/14/script-to-install-urlscan-v3-0-as-a-site-filter.aspx#comments</comments><description>&lt;P&gt;Although using WIX to create an MSI to do this task is a cleaner approach, it is too heavy duty for me. I do this often enough to warrant creating a script for it, so I though I would share it out.&lt;/P&gt;
&lt;P&gt;To use it you would run: InstallUrlScanAtSite.js -siteid:1 [-dest:c:\foo]. You have to specify the site ID of the site you want it installed at. The 'dest' parameter will be the location where your urlscan.dll and urlscan.ini file will be copied to for use as the filter path. If you don't specify this, it will copy them to your site's ROOT vdir path.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE class=csharpcode&gt;&lt;SPAN class=rem&gt;// InstallUrlScatAtSite.js&lt;/SPAN&gt;
&lt;SPAN class=rem&gt;//&lt;/SPAN&gt;
&lt;SPAN class=rem&gt;// Install UrlScan 3.0 at a particular site.&lt;/SPAN&gt;
&lt;SPAN class=rem&gt;//&lt;/SPAN&gt;
&lt;SPAN class=rem&gt;// Author: Nazim Lala&lt;/SPAN&gt;
&lt;SPAN class=rem&gt;//&lt;/SPAN&gt;
&lt;SPAN class=rem&gt;// What it does:&lt;/SPAN&gt;
&lt;SPAN class=rem&gt;//   1. By default copy urlscan.dll and urlscan.ini from &lt;/SPAN&gt;
&lt;SPAN class=rem&gt;//      system32\inetsrv\urlscan dir to root of site you want to install to.&lt;/SPAN&gt;
&lt;SPAN class=rem&gt;//      Else use the value of Dest as the destination.&lt;/SPAN&gt;
&lt;SPAN class=rem&gt;//   2. Install this copy of the dll as a site filter of that particular site.&lt;/SPAN&gt;
&lt;SPAN class=rem&gt;//&lt;/SPAN&gt;
&lt;SPAN class=rem&gt;// Assumptions:&lt;/SPAN&gt;
&lt;SPAN class=rem&gt;//   1. You already have UrlScan 3.0 installed globally on the machine.&lt;/SPAN&gt;
&lt;SPAN class=rem&gt;//   2. The script has access to write to your site's root directory or &lt;/SPAN&gt;
&lt;SPAN class=rem&gt;//      Dest&lt;/SPAN&gt;
&lt;SPAN class=rem&gt;//&lt;/SPAN&gt;

&lt;SPAN class=kwrd&gt;var&lt;/SPAN&gt; szUsage;
&lt;SPAN class=kwrd&gt;var&lt;/SPAN&gt; szSiteID;
&lt;SPAN class=kwrd&gt;var&lt;/SPAN&gt; szDest;


&lt;SPAN class=kwrd&gt;var&lt;/SPAN&gt; CRLF = &lt;SPAN class=str&gt;"\r\n"&lt;/SPAN&gt;;

szUsage = &lt;SPAN class=str&gt;""&lt;/SPAN&gt; +
    &lt;SPAN class=str&gt;"Install UrlScan 3.0 as a site filter"&lt;/SPAN&gt; + CRLF +
    CRLF +
    WScript.ScriptName + &lt;SPAN class=str&gt;" [[-Parameter:Value]...]"&lt;/SPAN&gt; + CRLF +
    CRLF +
    &lt;SPAN class=str&gt;"Where:"&lt;/SPAN&gt; + CRLF +
    &lt;SPAN class=str&gt;"    Parameter  Value"&lt;/SPAN&gt; + CRLF +
    &lt;SPAN class=str&gt;"    ---------  -------------------------------------------"&lt;/SPAN&gt; + CRLF +
    &lt;SPAN class=str&gt;"    SiteID     Site ID # (Required)"&lt;/SPAN&gt; + CRLF +
    &lt;SPAN class=str&gt;"    Dest       Destination to copy urlscan.dll/.ini to"&lt;/SPAN&gt; + 
    &lt;SPAN class=str&gt;"(Default is Site root)"&lt;/SPAN&gt; + CRLF +
    &lt;SPAN class=str&gt;""&lt;/SPAN&gt;;
    
&lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; ( ParseCommandline() &amp;amp;&amp;amp; ValidateArgs() )
{
    &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; ( !SetandCheckDestination() ) 
    {
        WScript.Quit( 1 );
    }
    &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; ( !CopyDllAndConfig() ) 
    {
        WScript.Quit( 2 );
    }
    &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; ( !AddFilter() )
    {
        WScript.Quit( 3 );
    }
    
}

&lt;SPAN class=kwrd&gt;function&lt;/SPAN&gt; ParseCommandline()
{
    &lt;SPAN class=kwrd&gt;var&lt;/SPAN&gt; exp = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; RegExp( &lt;SPAN class=str&gt;"-([^:]+):(.+)"&lt;/SPAN&gt; );
    &lt;SPAN class=kwrd&gt;var&lt;/SPAN&gt; args;

    &lt;SPAN class=kwrd&gt;for&lt;/SPAN&gt; ( &lt;SPAN class=kwrd&gt;var&lt;/SPAN&gt; i = 0; i &amp;lt; WScript.Arguments.length; i++ )
    {
        args = exp.exec( WScript.Arguments( i ) );
        &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; ( args == &lt;SPAN class=kwrd&gt;null&lt;/SPAN&gt; )
        {
            WScript.Echo( &lt;SPAN class=str&gt;"Invalid parameter "&lt;/SPAN&gt; + WScript.Arguments( i ) )
            &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;false&lt;/SPAN&gt;;
        }
        &lt;SPAN class=kwrd&gt;else&lt;/SPAN&gt;
        {
            &lt;SPAN class=kwrd&gt;switch&lt;/SPAN&gt; ( args[1].toLowerCase() )
            {
                &lt;SPAN class=kwrd&gt;case&lt;/SPAN&gt; &lt;SPAN class=str&gt;"siteid"&lt;/SPAN&gt;:
                    szSiteID = args[2];
                    &lt;SPAN class=kwrd&gt;break&lt;/SPAN&gt;;
                &lt;SPAN class=kwrd&gt;case&lt;/SPAN&gt; &lt;SPAN class=str&gt;"dest"&lt;/SPAN&gt;:
                    szDest = TrimSlashes( args[2] );
                    &lt;SPAN class=kwrd&gt;break&lt;/SPAN&gt;;
                &lt;SPAN class=kwrd&gt;default&lt;/SPAN&gt;:
                    WScript.Echo( &lt;SPAN class=str&gt;"Unknown parameter "&lt;/SPAN&gt; + args[1] );
                    &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;false&lt;/SPAN&gt;;
            }
        }
    }

    &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;true&lt;/SPAN&gt;;
}

&lt;SPAN class=kwrd&gt;function&lt;/SPAN&gt; ValidateArgs()
{
    &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; ( szSiteID == &lt;SPAN class=kwrd&gt;null&lt;/SPAN&gt; )
    {
        WScript.Echo( &lt;SPAN class=str&gt;"Missing Site ID."&lt;/SPAN&gt; + szUsage);
        &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;false&lt;/SPAN&gt;;
    }
    &lt;SPAN class=kwrd&gt;else&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;true&lt;/SPAN&gt;;
}

&lt;SPAN class=kwrd&gt;function&lt;/SPAN&gt; SetandCheckDestination()
{
    &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; ( szDest == &lt;SPAN class=kwrd&gt;null&lt;/SPAN&gt; )
    {
        &lt;SPAN class=rem&gt;// Set destination to site root&lt;/SPAN&gt;
        &lt;SPAN class=kwrd&gt;try&lt;/SPAN&gt;
        {
            &lt;SPAN class=kwrd&gt;var&lt;/SPAN&gt; objSite = GetObject( &lt;SPAN class=str&gt;"IIS://LOCALHOST/W3SVC/"&lt;/SPAN&gt; + 
                szSiteID +&lt;SPAN class=str&gt;"/ROOT"&lt;/SPAN&gt; );
            szDest = objSite.Path;
        }
        &lt;SPAN class=kwrd&gt;catch&lt;/SPAN&gt; ( e )
        {
            WScript.Echo( &lt;SPAN class=str&gt;"Failed to acquire site's ROOT path. "&lt;/SPAN&gt; +  
                FormatErrorString( e ) );
            &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;false&lt;/SPAN&gt;;
        }
    }
    &lt;SPAN class=kwrd&gt;else&lt;/SPAN&gt;
    {
        &lt;SPAN class=rem&gt;// Check if destination path exists. If not try to create it.&lt;/SPAN&gt;
        &lt;SPAN class=kwrd&gt;try&lt;/SPAN&gt;
        {
            &lt;SPAN class=kwrd&gt;var&lt;/SPAN&gt; objFSO = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; ActiveXObject( &lt;SPAN class=str&gt;"Scripting.FileSystemObject"&lt;/SPAN&gt; );
            &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; ( !objFSO.FolderExists( szDest ) )
            {
                objFSO.CreateFolder( szDest );
            }
        }
        &lt;SPAN class=kwrd&gt;catch&lt;/SPAN&gt; ( e )
        {
            WScript.Echo( &lt;SPAN class=str&gt;"Failed to create folder. "&lt;/SPAN&gt; + 
                FormatErrorString( e ) );
            &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;false&lt;/SPAN&gt;;
        }
    }

    &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;true&lt;/SPAN&gt;;
}    

&lt;SPAN class=kwrd&gt;function&lt;/SPAN&gt; CopyDllAndConfig()
{
    &lt;SPAN class=kwrd&gt;try&lt;/SPAN&gt;
    {
        &lt;SPAN class=kwrd&gt;var&lt;/SPAN&gt; objFSO = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; ActiveXObject( &lt;SPAN class=str&gt;"Scripting.FileSystemObject"&lt;/SPAN&gt; );
        &lt;SPAN class=kwrd&gt;var&lt;/SPAN&gt; WshShell = WScript.CreateObject( &lt;SPAN class=str&gt;"WScript.Shell"&lt;/SPAN&gt; );
        &lt;SPAN class=kwrd&gt;var&lt;/SPAN&gt; objEnv = WshShell.Environment( &lt;SPAN class=str&gt;"Process"&lt;/SPAN&gt; );
        &lt;SPAN class=kwrd&gt;var&lt;/SPAN&gt; szUrlScanDir = objEnv( &lt;SPAN class=str&gt;"WINDIR"&lt;/SPAN&gt; ) + 
            &lt;SPAN class=str&gt;"\\system32\\inetsrv\\urlscan"&lt;/SPAN&gt;;
        objFSO.CopyFile( szUrlScanDir+&lt;SPAN class=str&gt;"\\urlscan.dll"&lt;/SPAN&gt;, 
            szDest+&lt;SPAN class=str&gt;"\\urlscan.dll"&lt;/SPAN&gt; );
        objFSO.CopyFile( szUrlScanDir+&lt;SPAN class=str&gt;"\\urlscan.ini"&lt;/SPAN&gt;, 
            szDest+&lt;SPAN class=str&gt;"\\urlscan.ini"&lt;/SPAN&gt; );
    }
    &lt;SPAN class=kwrd&gt;catch&lt;/SPAN&gt; ( e )
    {
        WScript.Echo( &lt;SPAN class=str&gt;"Failed to copy files."&lt;/SPAN&gt; +
            FormatErrorString( e ) );
        &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;false&lt;/SPAN&gt;;
    }
    &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;true&lt;/SPAN&gt;;
}

&lt;SPAN class=kwrd&gt;function&lt;/SPAN&gt; AddFilter()
{
    &lt;SPAN class=kwrd&gt;var&lt;/SPAN&gt; objSiteFilters;
    &lt;SPAN class=kwrd&gt;var&lt;/SPAN&gt; objUrlScanFilter;
    &lt;SPAN class=kwrd&gt;var&lt;/SPAN&gt; szLoadOrder;
    
    &lt;SPAN class=kwrd&gt;try&lt;/SPAN&gt;
    {
        objSiteFilters = GetObject(&lt;SPAN class=str&gt;"IIS://LOCALHOST/W3SVC/"&lt;/SPAN&gt; + 
            szSiteID + &lt;SPAN class=str&gt;"/FILTERS"&lt;/SPAN&gt;);
    }
    &lt;SPAN class=kwrd&gt;catch&lt;/SPAN&gt; ( e )
    {
        &lt;SPAN class=rem&gt;//&lt;/SPAN&gt;
        &lt;SPAN class=rem&gt;// Perhaps we don't have any filters.&lt;/SPAN&gt;
        &lt;SPAN class=rem&gt;// Try to create it.&lt;/SPAN&gt;
        &lt;SPAN class=rem&gt;//&lt;/SPAN&gt;
        &lt;SPAN class=kwrd&gt;try&lt;/SPAN&gt;
        {
            objSiteFilters = GetObject( &lt;SPAN class=str&gt;"IIS://LOCALHOST/W3SVC/"&lt;/SPAN&gt; + 
                                    szSiteID ).Create( &lt;SPAN class=str&gt;"IIsFilters"&lt;/SPAN&gt;,
                                                        &lt;SPAN class=str&gt;"Filters"&lt;/SPAN&gt; );
            objSiteFilters.SetInfo();
        }
        &lt;SPAN class=kwrd&gt;catch&lt;/SPAN&gt; ( e2 )
        {
            &lt;SPAN class=rem&gt;//&lt;/SPAN&gt;
            &lt;SPAN class=rem&gt;// Could not create the filters node. Quit.&lt;/SPAN&gt;
            &lt;SPAN class=rem&gt;//&lt;/SPAN&gt;
            WScript.Echo( &lt;SPAN class=str&gt;"Failed to create filters node."&lt;/SPAN&gt; + 
                FormatErrorString( e ) );
            &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;false&lt;/SPAN&gt;;
        }
    }
    
    &lt;SPAN class=kwrd&gt;try&lt;/SPAN&gt;
    {
        &lt;SPAN class=rem&gt;//&lt;/SPAN&gt;
        &lt;SPAN class=rem&gt;// Create the actual Filters node and configure path.&lt;/SPAN&gt;
        &lt;SPAN class=rem&gt;//&lt;/SPAN&gt;
        objUrlScanFilter = objSiteFilters.Create( &lt;SPAN class=str&gt;"IIsFilter"&lt;/SPAN&gt;, 
            &lt;SPAN class=str&gt;"UrlScan 3.0"&lt;/SPAN&gt; );
        objUrlScanFilter.FilterPath = szDest;
        objUrlScanFilter.SetInfo();
    }
    &lt;SPAN class=kwrd&gt;catch&lt;/SPAN&gt; ( e )
    {
        &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; ( e.number == -2147024713 )
        {
            WScript.Echo( &lt;SPAN class=str&gt;"UrlScan 3.0 Filter already exists."&lt;/SPAN&gt; );
        }
        &lt;SPAN class=kwrd&gt;else&lt;/SPAN&gt;
        {
            WScript.Echo( FormatErrorString( e ) );
        }

        &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;false&lt;/SPAN&gt;;
    }
    
    &lt;SPAN class=kwrd&gt;try&lt;/SPAN&gt;
    {
        &lt;SPAN class=rem&gt;//&lt;/SPAN&gt;
        &lt;SPAN class=rem&gt;// Update FilterLoadOrder and append to beginning of list&lt;/SPAN&gt;
        &lt;SPAN class=rem&gt;//&lt;/SPAN&gt;
        szLoadOrder = objSiteFilters.FilterLoadOrder;
        
        &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; ( szLoadOrder == &lt;SPAN class=kwrd&gt;null&lt;/SPAN&gt; )
        {
            objSiteFilters.FilterLoadOrder = &lt;SPAN class=str&gt;"UrlScan 3.0"&lt;/SPAN&gt;;
        }
        &lt;SPAN class=kwrd&gt;else&lt;/SPAN&gt;
        {
            objSiteFilters.FilterLoadOrder = &lt;SPAN class=str&gt;"UrlScan 3.0,"&lt;/SPAN&gt;+szLoadOrder;
        }
        objSiteFilters.SetInfo();
        
    }
    &lt;SPAN class=kwrd&gt;catch&lt;/SPAN&gt; ( e )
    {
        WScript.Echo( &lt;SPAN class=str&gt;"Failed to update filter load order: "&lt;/SPAN&gt; + 
            FormatErrorString( e ) );
        &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;false&lt;/SPAN&gt;;
    }
    
    &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;true&lt;/SPAN&gt;;
}

&lt;SPAN class=kwrd&gt;function&lt;/SPAN&gt; TrimSlashes( strInput )
{
    &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; strInput.replace( &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; RegExp( &lt;SPAN class=str&gt;"^/+|/+$"&lt;/SPAN&gt;, &lt;SPAN class=str&gt;"g"&lt;/SPAN&gt; ), &lt;SPAN class=str&gt;""&lt;/SPAN&gt; );
}

&lt;SPAN class=kwrd&gt;function&lt;/SPAN&gt; Int32ToHRESULT( num ) 
{
    &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; ( num &amp;lt; 0 )
    {
        &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; &lt;SPAN class=str&gt;"0x"&lt;/SPAN&gt; + &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Number( 0x100000000 + num ).toString( 16 );
    }
    &lt;SPAN class=kwrd&gt;else&lt;/SPAN&gt;
    {
        &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; &lt;SPAN class=str&gt;"0x"&lt;/SPAN&gt; + num.toString( 16 );
    }
}


&lt;SPAN class=kwrd&gt;function&lt;/SPAN&gt; FormatErrorString( objError )
{
    &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; &lt;SPAN class=str&gt;"("&lt;/SPAN&gt; + Int32ToHRESULT( objError.number) + &lt;SPAN class=str&gt;")"&lt;/SPAN&gt; + &lt;SPAN class=str&gt;": "&lt;/SPAN&gt; +
           objError.description;
}&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;STYLE type=text/css&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/STYLE&gt;

&lt;STYLE type=text/css&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/STYLE&gt;

&lt;P&gt;I haven't thoroughly tested it, so if you find any bugs, let me know. You can also easily modify this script to add it to ALL sites on the server if need be.&lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=2680894" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/nazim/archive/tags/UrlScan/default.aspx">UrlScan</category><category domain="http://blogs.iis.net/nazim/archive/tags/IIS6/default.aspx">IIS6</category><category domain="http://blogs.iis.net/nazim/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://blogs.iis.net/nazim/archive/tags/IIS5X/default.aspx">IIS5X</category><category domain="http://blogs.iis.net/nazim/archive/tags/HTTP/default.aspx">HTTP</category></item></channel></rss>