<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2231495077010976685</id><updated>2012-01-26T16:36:53.791-08:00</updated><category term='VBScript'/><category term='Glossary'/><category term='ASP.NET 2.0'/><category term='IIS Administration'/><category term='Visual SourceSafe'/><category term='DNS'/><category term='Outlook'/><category term='VS.NET'/><category term='Troubleshooting'/><category term='Arrays'/><category term='Disgruntlement'/><category term='IE Web Controls'/><category term='Web.config'/><category term='XML'/><category term='Windows Services'/><category term='VB.NET'/><category term='Machine.config'/><category term='Search'/><category term='Fun'/><category term='Registry'/><category term='IIS'/><category term='Google'/><category term='ASP.NET'/><category term='HTTP'/><category term='Blogging'/><category term='C#'/><category term='Code Compare'/><category term='Version'/><category term='Reflection'/><category term='CDONTS'/><category term='WMI'/><category term='ADSI'/><category term='Framework'/><category term='Application Pools'/><category term='Networking'/><category term='ASP.NET 1.1'/><category term='IE'/><category term='SSL'/><category term='Products'/><category term='Operating System'/><category term='CDOSys'/><category term='Lotus Notes'/><category term='Classic ASP'/><category term='News'/><category term='File System Object'/><title type='text'>Diablo</title><subtitle type='html'>Low Tech Solutions to Common IT Problems</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>64</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-6983334795772134734</id><published>2011-10-27T12:01:00.000-07:00</published><updated>2011-10-27T12:01:16.609-07:00</updated><title type='text'>Looking for a good place to eat in Chi-Town? ChiBites!</title><content type='html'>Okay this is not a technical post, but even socially awkward nerds who compensate with weak&amp;nbsp;blog knowledge have to eat. &lt;br /&gt;&lt;br /&gt;I found a blog with really good descriptions and recommendations for the North side of Chicago:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://chibites.wordpress.com/"&gt;http://chibites.wordpress.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Check it out!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-6983334795772134734?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/6983334795772134734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=6983334795772134734' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/6983334795772134734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/6983334795772134734'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2011/10/looking-for-good-place-to-eat-in-chi.html' title='Looking for a good place to eat in Chi-Town? ChiBites!'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-4639668130531523903</id><published>2007-08-09T14:56:00.001-07:00</published><updated>2007-08-09T15:02:55.694-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='News'/><title type='text'>Diablopup.net</title><content type='html'>To those few of you who actually visit this blog, you may have noticed the recent lack of new activity.&lt;br /&gt;&lt;br /&gt;I am in the process of consolidating these nerdy tidbits in a dedicated site, &lt;a href="http://diablopup.net"&gt;Diablopup.net&lt;/a&gt;. I found at the outset that blogspot was bad for displaying code snippets unless you spend a lot of time formatting your template. I'm simply not that smart. To get around this, I often forwarded you to my &lt;a href="http://diabolopup.spaces.live.com/blog/"&gt;live spaces blog&lt;/a&gt;. What a pain, I agree.&lt;br /&gt;&lt;br /&gt;So, it may take awhile, but look for this blog to shrink and the new site to grow. The live spaces blog will go away, and you can bookmark diablopup.net . For now, I have created a feed to the site, down below (near the Google ads ;)).&lt;br /&gt;&lt;br /&gt;Thanks for visiting!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-4639668130531523903?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/4639668130531523903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=4639668130531523903' title='27 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/4639668130531523903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/4639668130531523903'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/08/diablopupnet.html' title='Diablopup.net'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>27</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-3110290479738008614</id><published>2007-07-30T14:09:00.001-07:00</published><updated>2007-09-20T14:26:20.369-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Troubleshooting'/><title type='text'>Quick Troubleshooting Tip: "Run As"</title><content type='html'>This post moved to &lt;a href="http://diablopup.net/post/Quick-Troubleshooting-Tip-Run-As.aspx"&gt;diablopup.net&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-3110290479738008614?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/3110290479738008614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=3110290479738008614' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/3110290479738008614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/3110290479738008614'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/07/quick-troubleshooting-tip-run-as.html' title='Quick Troubleshooting Tip: &quot;Run As&quot;'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-6459131125032459967</id><published>2007-07-27T08:31:00.001-07:00</published><updated>2007-12-21T09:17:45.771-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VBScript'/><category scheme='http://www.blogger.com/atom/ns#' term='IIS Administration'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ADSI'/><title type='text'>Pool Inventory</title><content type='html'>Posting moved to &lt;a href="http://diablopup.net/post/Printing-IIS-60-Application-Pools-Inventory.aspx"&gt;diablopup.net&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-6459131125032459967?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/6459131125032459967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=6459131125032459967' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/6459131125032459967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/6459131125032459967'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/07/pool-inventory.html' title='Pool Inventory'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-2350372876481706334</id><published>2007-07-24T08:38:00.001-07:00</published><updated>2007-12-21T09:25:26.726-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VBScript'/><title type='text'>ADSI - Create an IIS Site Redirect</title><content type='html'>&lt;strong&gt;&lt;/strong&gt;&lt;p&gt;Posting moved to &lt;a href="http://diablopup.net/post/Creating-an-IIS-Site-Redirect.aspx"&gt;diablopup.net&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-2350372876481706334?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/2350372876481706334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=2350372876481706334' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/2350372876481706334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/2350372876481706334'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/07/adsi-create-iis-site-redirect.html' title='ADSI - Create an IIS Site Redirect'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-6927967571363518012</id><published>2007-07-20T08:28:00.001-07:00</published><updated>2007-07-20T08:46:44.887-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>File Attribute in Web.Config</title><content type='html'>A &lt;a href="http://diablopup.blogspot.com/2007/04/webconfig-using-external-file.html"&gt;previous post &lt;/a&gt;provided a simple example for decoupling various configuration sections from your web.config by using the configSource attribute to point to external files. This feature is available in asp.net 2+.&lt;br /&gt;&lt;br /&gt;Another option is the File attribute. An example is provided in the &lt;a href="http://whiteho.blogspot.com/2007/05/user-based-config-files.html"&gt;following blog&lt;/a&gt;. I think this attribute has more going for it than the configSource attribute.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Default + Optional Override&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The file attribute allows you to keep default settings in your web.config. If .NET finds the specified configuration specified by the file attribute, it overrides your defaults. This provides you with the &lt;em&gt;option&lt;/em&gt; to decouple your configuration from web.config:&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_9ZIc5p2Ogko/RqDWtO92i6I/AAAAAAAAAHs/7dndncF0ftI/s1600-h/web.config.file.attribute.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5089303651528641442" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_9ZIc5p2Ogko/RqDWtO92i6I/AAAAAAAAAHs/7dndncF0ftI/s400/web.config.file.attribute.gif" border="0" /&gt;&lt;/a&gt; If asp.net finds a "user.config" in my application directory, it uses those settings.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Available in ASP.NET 1.1&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Given the file attribute's availability in asp.net 1.1, I don't see the added value that the configSource attribute provides in asp.net 2.0. Comments?&lt;/p&gt;&lt;p&gt;&lt;strong&gt;File Must Reside within the Application's Physical Directory Structure&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;To further decouple the application from configuration, I tried specifying the file in a virtual location. This would allow me to stage configuration updates separately from application updates. Like the configSource attribute, it was no dice. Rats.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-6927967571363518012?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/6927967571363518012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=6927967571363518012' title='284 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/6927967571363518012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/6927967571363518012'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/07/file-attribute-in-webconfig.html' title='File Attribute in Web.Config'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_9ZIc5p2Ogko/RqDWtO92i6I/AAAAAAAAAHs/7dndncF0ftI/s72-c/web.config.file.attribute.gif' height='72' width='72'/><thr:total>284</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-1928806099587917171</id><published>2007-07-18T13:23:00.000-07:00</published><updated>2007-07-18T14:19:53.629-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Products'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Compare'/><title type='text'>Product Recommendation: Beyond Compare</title><content type='html'>Your application works in your QA environment, but not in Production. The IIS configurations are identical. You've verified database connectivity and firewall rules. In fact you've ruled out everything but the code. Is it the same in each environment?&lt;br /&gt;&lt;br /&gt;Use &lt;a href="http://www.scootersoftware.com/download.php"&gt;Beyond Compare&lt;/a&gt; to verify. It quickly surfaces file system differences in a nice GUI.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Side By Side Directory Comparison&lt;/strong&gt;&lt;br /&gt;The directory comparision displays a side-by-side listing of the "source" and "compare to" directories. Use the "&lt;&gt;" option to display only the differences:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://bp0.blogger.com/_9ZIc5p2Ogko/Rp6BRu92i3I/AAAAAAAAAHU/jFP3ZeF-tEc/s1600-h/beyondcompare2.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5088646770640456562" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_9ZIc5p2Ogko/Rp6BRu92i3I/AAAAAAAAAHU/jFP3ZeF-tEc/s400/beyondcompare2.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;Line by Line File Comparision&lt;/strong&gt;&lt;br /&gt;Differences will be highlighted via color codes. When you want to drill down into a specific file difference, simply double-click to view a line-by-line file comparison:&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_9ZIc5p2Ogko/Rp6BzO92i4I/AAAAAAAAAHc/30Gd6H61L3Q/s1600-h/beyondcompare_file.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5088647346166074242" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_9ZIc5p2Ogko/Rp6BzO92i4I/AAAAAAAAAHc/30Gd6H61L3Q/s400/beyondcompare_file.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Options&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Use the referee icon &lt;a href="http://bp1.blogger.com/_9ZIc5p2Ogko/Rp6Dy-92i5I/AAAAAAAAAHk/fabl7Tfi70o/s1600-h/beyondcompare_referee.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5088649540894362514" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_9ZIc5p2Ogko/Rp6Dy-92i5I/AAAAAAAAAHk/fabl7Tfi70o/s400/beyondcompare_referee.gif" border="0" /&gt;&lt;/a&gt;to enable/disable compare options. For instance, an extract from Visual Sourcesafe will yield a new date/time stamp, even if you know the file on the compare directory is identical. Unflagging the "Timestamp" folder comparison criteria will remove this comparison "noise" and allow you to spot more meaningful differences.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-1928806099587917171?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/1928806099587917171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=1928806099587917171' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/1928806099587917171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/1928806099587917171'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/07/product-recommendation-beyond-compare.html' title='Product Recommendation: Beyond Compare'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_9ZIc5p2Ogko/Rp6BRu92i3I/AAAAAAAAAHU/jFP3ZeF-tEc/s72-c/beyondcompare2.gif' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-4922625647284239794</id><published>2007-07-16T07:48:00.001-07:00</published><updated>2007-08-14T13:24:52.273-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>2 Ways to View the GAC</title><content type='html'>Moved to &lt;a href="http://diablopup.net/post/3-Ways-to-View-the-GAC.aspx"&gt;http://diablopup.net/post/3-Ways-to-View-the-GAC.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-4922625647284239794?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/4922625647284239794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=4922625647284239794' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/4922625647284239794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/4922625647284239794'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/07/2-ways-to-view-gac.html' title='2 Ways to View the GAC'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-4868155963505692116</id><published>2007-07-10T08:35:00.001-07:00</published><updated>2007-07-10T08:39:14.831-07:00</updated><title type='text'>VBScript - Read From Registry</title><content type='html'>Here is a quick and dirty function for reading a registry value using the WScript.Shell object:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;span style="color:#ff0000;"&gt;function readFromRegistry (strRegistryKey, strDefault )&lt;br /&gt;&lt;/span&gt;&lt;li&gt;&lt;span style="color:#ff0000;"&gt;  Dim WSHShell, value&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="color:#ff0000;"&gt;  On Error Resume Next&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="color:#ff0000;"&gt;  Set WSHShell = CreateObject("WScript.Shell")&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="color:#ff0000;"&gt;  value = WSHShell.RegRead( strRegistryKey )&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="color:#ff0000;"&gt;  if err.number &lt;&gt; 0 then&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="color:#ff0000;"&gt;    readFromRegistry= strDefault&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="color:#ff0000;"&gt;  else&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="color:#ff0000;"&gt;    readFromRegistry=value&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="color:#ff0000;"&gt;  end if&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="color:#ff0000;"&gt;  set WSHShell = nothing&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;end function&lt;br /&gt;&lt;/span&gt;&lt;/ul&gt;&lt;br /&gt;Usage:&lt;br /&gt;&lt;ul&gt;&lt;span style="color:#ff0000;"&gt;str = readfromRegistry("HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\ESD\Install_Dir", "ha")&lt;/span&gt;&lt;/ul&gt;&lt;ul&gt;&lt;span style="color:#ff0000;"&gt;wscript.echo "returned " &amp;amp; str&lt;/span&gt; &lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-4868155963505692116?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/4868155963505692116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=4868155963505692116' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/4868155963505692116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/4868155963505692116'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/07/vbscript-read-from-registry.html' title='VBScript - Read From Registry'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-9107394407429513213</id><published>2007-07-09T14:34:00.000-07:00</published><updated>2007-08-17T07:50:20.128-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Global Assembly Cache</title><content type='html'>Moved to &lt;a href="http://diablopup.net/post/Global-Assembly-Cache.aspx"&gt;diablopup.net&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-9107394407429513213?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/9107394407429513213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=9107394407429513213' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/9107394407429513213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/9107394407429513213'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/07/global-assembly-cache.html' title='Global Assembly Cache'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-6146231896774302576</id><published>2007-07-09T14:28:00.000-07:00</published><updated>2007-07-09T14:33:19.600-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogging'/><title type='text'>BlogSpot Title Entry Bug</title><content type='html'>&lt;div&gt;For the past few days, I noticed it was difficult to create a new posting and give it a title. The Title text box appears to be disabled: &lt;/div&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_9ZIc5p2Ogko/RpKoyAjYRbI/AAAAAAAAAGs/LTVj0a6asTc/s1600-h/blogspot_title_problem.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5085312506350028210" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_9ZIc5p2Ogko/RpKoyAjYRbI/AAAAAAAAAGs/LTVj0a6asTc/s400/blogspot_title_problem.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;To get around this, place your cursor anywhere along the upper edge of this text box.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_9ZIc5p2Ogko/RpKpOAjYRcI/AAAAAAAAAG0/nx5pry9vfHc/s1600-h/blogspot_title_solution.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5085312987386365378" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_9ZIc5p2Ogko/RpKpOAjYRcI/AAAAAAAAAG0/nx5pry9vfHc/s400/blogspot_title_solution.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;...back in business!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_9ZIc5p2Ogko/RpKpdAjYRdI/AAAAAAAAAG8/iYYI2Y66jDk/s1600-h/blogspot_title_after.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5085313245084403154" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_9ZIc5p2Ogko/RpKpdAjYRdI/AAAAAAAAAG8/iYYI2Y66jDk/s400/blogspot_title_after.gif" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-6146231896774302576?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/6146231896774302576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=6146231896774302576' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/6146231896774302576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/6146231896774302576'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/07/blogspot-title-entry-bug.html' title='BlogSpot Title Entry Bug'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_9ZIc5p2Ogko/RpKoyAjYRbI/AAAAAAAAAGs/LTVj0a6asTc/s72-c/blogspot_title_problem.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-2067317216454504275</id><published>2007-06-27T08:17:00.000-07:00</published><updated>2007-06-27T09:59:15.027-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Web.config'/><title type='text'>Beware of Nested Web.Config's!</title><content type='html'>&lt;strong&gt;Problem with Nested Web.Config's&lt;/strong&gt;&lt;br /&gt;If your web servers host a complex IIS tree, beware of nested ASP.NET applications and their respective web.config's. If a "parent" ASP.NET application declares a type (and therefore a dependency on an assembly), the "child" application inherits this declaration. See the &lt;a href="http://msdn2.microsoft.com/en-us/library/ms178685.aspx"&gt;following msdn article&lt;/a&gt; for lengthy discussion.&lt;br /&gt;&lt;br /&gt;What this means, ultimately, is that your child application will be looking for a dll in its /bin folder. When it doesn't find it, the child application throws a yellow screen.&lt;br /&gt;&lt;br /&gt;Here is an example. I've set up &lt;a href="http://localhost/MyApp"&gt;http://localhost/MyApp&lt;/a&gt;, a do-nothing app that happens to implement the &lt;a href="http://diablopup.blogspot.com/2007/06/aspnet-11-url-mapping.html"&gt;ASP.NET 1.1 URL Mapping Module&lt;/a&gt; discussed in a previous blog. I've built another do-nothing app, and for demonstration purposes created a virtual directory hosting this app under the do-nothing parent, &lt;a href="http://localhost/MyApp/MySubApp"&gt;http://localhost/MyApp/MySubApp&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;See what happens when I try to run the child app from a browser...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_9ZIc5p2Ogko/RoKB1AjYRaI/AAAAAAAAAGk/ZiWfl-QvBVk/s1600-h/nestedConfig.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5080766077308781986" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_9ZIc5p2Ogko/RoKB1AjYRaI/AAAAAAAAAGk/ZiWfl-QvBVk/s400/nestedConfig.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;Solutions&lt;/strong&gt;&lt;br /&gt;To resolve the error above, you can take one of the following approaches:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Copy the assembly to the child's /bin folder. This works, but it's sloppy configuration. Why xcopy dll's across your file system, introducing redundancy and superfluousness?&lt;/li&gt;&lt;li&gt;GAC the assembly. That way it's available to the child, and any other application, whether or not it's needed.&lt;/li&gt;&lt;li&gt;Restructure IIS to avoid the problem.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-2067317216454504275?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/2067317216454504275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=2067317216454504275' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/2067317216454504275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/2067317216454504275'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/06/beware-of-nested-webconfigs.html' title='Beware of Nested Web.Config&apos;s!'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_9ZIc5p2Ogko/RoKB1AjYRaI/AAAAAAAAAGk/ZiWfl-QvBVk/s72-c/nestedConfig.gif' height='72' width='72'/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-5820384433854764827</id><published>2007-06-22T10:35:00.000-07:00</published><updated>2007-06-22T11:03:04.552-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Networking'/><title type='text'>SourceForge.NET's Telnet Library Rocks</title><content type='html'>Say you need to test your web server's basic connectivity to its SQL database server, or its Oracle database server, or its SMTP mail relay host, etc. You would want to hop on the web server, open a command line console (DOS prompt), and try to connect using telnet commands like:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;span style="color:#ff0000;"&gt;Telnet mySQLServer 1433&lt;/span&gt;&lt;/ul&gt;&lt;ul&gt;&lt;span style="color:#ff0000;"&gt;Telnet myOracleServer 1521&lt;/span&gt;&lt;/ul&gt;&lt;ul&gt;&lt;span style="color:#ff0000;"&gt;Telnet myMailServer 25&lt;/span&gt;&lt;/ul&gt;&lt;ul&gt;etc.&lt;/ul&gt;What if you don't the necessary access to log on to the web server? That's the problem I have been facing. Our data center was outsourced, servers moved, and stuff stopped working. If your web application doesn't have the basic connectivity we all take for granted, it's not going to tell you your firewall rules are all mucked up; it's just not going to work.&lt;br /&gt;&lt;br /&gt;Enter &lt;a href="http://sourceforge.net/projects/dotnettelnet/"&gt;SourceForge.NET's Telnet .NET library&lt;/a&gt;. Download this library, add it to your application's references, write a &lt;a href="http://diabolopup.spaces.live.com/blog/cns!1994C13E86FA7652!136.entry"&gt;simple web form&lt;/a&gt; that tests remote host and port combinations from user input, and you have a helpful diagnostics tool. It is presently saving my life.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-5820384433854764827?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/5820384433854764827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=5820384433854764827' title='19 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/5820384433854764827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/5820384433854764827'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/06/sourceforgenets-net-telnet-library.html' title='SourceForge.NET&apos;s Telnet Library Rocks'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-3441472599331063241</id><published>2007-06-21T11:18:00.000-07:00</published><updated>2007-06-21T11:36:48.632-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Outlook'/><category scheme='http://www.blogger.com/atom/ns#' term='Lotus Notes'/><title type='text'>Attaching Lotus Notes links to Outlook Mail</title><content type='html'>My company has migrated from Outlook/Exchange to Lotus Notes, then back to Outlook/Exchange. With the latest migration away from Notes, we left some vital Notes databases in place. So now we use Outlook for mail, and Notes for repositories.&lt;br /&gt;&lt;br /&gt;...Yeah, it's that kind of place. If you've been around awhile and know where things are, you are indispensable :).&lt;br /&gt;&lt;br /&gt;Anyway, the great thing about using Notes for email and work was that you could embed all kinds of referral links in your email using "copy as link" at the Notes data and then ctrl+v paste in the email. The ctrl+v doesn't work in Outlook, which is a drag. So here's a work around...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 1 - Copy as Link&lt;/strong&gt;&lt;br /&gt;Go to your Notes document or database (shown below), right click and select "copy as link"&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://bp3.blogger.com/_9ZIc5p2Ogko/RnrC5rZpnUI/AAAAAAAAAGM/4_bPF4--41I/s1600-h/lotusnotes.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5078585825972297026" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_9ZIc5p2Ogko/RnrC5rZpnUI/AAAAAAAAAGM/4_bPF4--41I/s400/lotusnotes.gif" border="0" /&gt;&lt;/a&gt;&lt;strong&gt;Step 2 - Paste Ctrl+V to a Text Editor&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Note the interesting markup&lt;/p&gt;&lt;a href="http://bp3.blogger.com/_9ZIc5p2Ogko/RnrDzrZpnVI/AAAAAAAAAGU/SUsMIssfIGQ/s1600-h/LotusNDL.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5078586822404709714" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_9ZIc5p2Ogko/RnrDzrZpnVI/AAAAAAAAAGU/SUsMIssfIGQ/s400/LotusNDL.gif" border="0" /&gt;&lt;/a&gt; &lt;strong&gt;Step 3 - Save the Text File with an .NDL Extension&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Step 4 - Attach the .NDL file to your Email Message&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;...as shown. When the recipient double-clicks the attachment, they go right to Notes!&lt;/p&gt;&lt;a href="http://bp3.blogger.com/_9ZIc5p2Ogko/RnrEhrZpnWI/AAAAAAAAAGc/-Ds5hH-aSDo/s1600-h/lotusattach.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5078587612678692194" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_9ZIc5p2Ogko/RnrEhrZpnWI/AAAAAAAAAGc/-Ds5hH-aSDo/s400/lotusattach.gif" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-3441472599331063241?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/3441472599331063241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=3441472599331063241' title='38 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/3441472599331063241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/3441472599331063241'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/06/attaching-lotus-notes-links-to-outlook.html' title='Attaching Lotus Notes links to Outlook Mail'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_9ZIc5p2Ogko/RnrC5rZpnUI/AAAAAAAAAGM/4_bPF4--41I/s72-c/lotusnotes.gif' height='72' width='72'/><thr:total>38</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-7364285338170640408</id><published>2007-06-19T13:00:00.000-07:00</published><updated>2007-06-19T13:35:30.572-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET 2.0'/><title type='text'>VS.NET 2005 - Where are the Binaries?</title><content type='html'>&lt;strong&gt;VS.NET 2003 - /bin Directory&lt;/strong&gt;&lt;br /&gt;In VS.NET 2003 when you set up a web application, an IIS virtual directory was automatically created, most commonly pointing to a file system folder in c:\inetpub\wwwroot.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When you compiled your application, a single binary, &lt;em&gt;appname&lt;/em&gt;.dll, was created in c:\inetpub\wwwroot\&lt;em&gt;appname&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;VS.NET 2005 - Where did the Binary go?&lt;/strong&gt;&lt;br /&gt;If you just started developing in VS.NET 2005, you may be oblivious, happily leveraging your new master pages and themes. Just wait until you try to deploy your application to another server. You'll come to find:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;While developing, your application was running under &lt;a href="http://diablopup.blogspot.com/2007/04/webdevwebserverexe-poor-mans-iis.html"&gt;Webdev.webserver.exe&lt;/a&gt;, not IIS.&lt;/li&gt;&lt;li&gt;There is no /bin directory. In fact, there is not c:\inetpub\wwwroot\&lt;em&gt;appname&lt;/em&gt; directory.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;To find your development artifacts, visit &lt;span style="font-size:85%;color:#ff0000;"&gt;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files&lt;/span&gt; . The structure may confuse you -- it's more esoteric then &lt;em&gt;appname/bin&lt;/em&gt; probably consisting of files with a .compiled extension. VS.NET 2005 has a new compilation model, a subject for another day.&lt;/p&gt;&lt;p&gt;To move your application into IIS:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Use the Build/Publish Website interface to create a "release directory".&lt;/li&gt;&lt;li&gt;Create a virtual directory that points to the release directory.&lt;/li&gt;&lt;li&gt;Make sure the virtual directory is configured to run under ASP.NET 2.0&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-7364285338170640408?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/7364285338170640408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=7364285338170640408' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/7364285338170640408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/7364285338170640408'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/06/vsnet-2005-where-are-binaries.html' title='VS.NET 2005 - Where are the Binaries?'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-7996616324159840870</id><published>2007-06-18T10:29:00.001-07:00</published><updated>2007-06-18T10:30:34.131-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET 1.1'/><title type='text'>ASP.NET 1.1 - URL Mapping</title><content type='html'>A previous post described how to set up simple URL Mapping in ASP.NET 2.0. To do the same in ASP.NET 1.1, it's &lt;em&gt;almost&lt;/em&gt; as simple, if you use &lt;a href="http://pietschsoft.com/blog/Post.aspx?PostID=717"&gt;Chris Pietschmann's code and instructions&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Just add the custom HTTPModule's dll to your application's bin folder, then tailor your web.config appropriately, and you have what ASP.NET 2.0 provides!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-7996616324159840870?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/7996616324159840870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=7996616324159840870' title='21 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/7996616324159840870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/7996616324159840870'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/06/aspnet-11-url-mapping.html' title='ASP.NET 1.1 - URL Mapping'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>21</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-8436684637050935327</id><published>2007-06-15T10:29:00.001-07:00</published><updated>2007-06-15T10:44:39.231-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET 2.0'/><title type='text'>ASP.NET 2.0 - URL Mapping</title><content type='html'>ASP.NET 2.0 provides features supporting "vanity url's" or "friendly url's". These are useful when you want to distribute simple url's to customers.&lt;br /&gt;&lt;br /&gt;Say for instance you have an online store, offering a new product to a segment of customers. The path to the catalog item is&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;http://AcmeCorp.com/store/&lt;span style="color:#ff0000;"&gt;catalog.aspx?productid=TY3466a&amp;customerid=143044&amp;amp;branch=south&lt;/span&gt;&lt;/ul&gt;But you'd like to distribute a simpler url:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;http://AcmeCorp.com/store/&lt;span style="color:#ff0000;"&gt;MultiVitamins.aspx&lt;/span&gt;&lt;/ul&gt;URL Mapping makes this possible. The following is a much simpler example. Note that it just happens to use the &lt;a href="http://diablopup.blogspot.com/2007/05/overriding-webconfig-using-tag.html"&gt;location appSettings overrides &lt;/a&gt;described in an earlier blog.&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_9ZIc5p2Ogko/RnLNdLZpnQI/AAAAAAAAAFs/OwXlrpJzioA/s1600-h/urlMapping.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5076345631160245506" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_9ZIc5p2Ogko/RnLNdLZpnQI/AAAAAAAAAFs/OwXlrpJzioA/s400/urlMapping.gif" border="0" /&gt;&lt;/a&gt; The highlighted section specifies the url mapping. The vanity url's (Diablo_Config.aspx and Diablo_Config.aspx?loc=test) are actually just as complicated as the actual paths (testconfig.aspx and test/testconfig.aspx), but it illustrates what's possible. The following screenshots illustrate what the "customer" sees:&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_9ZIc5p2Ogko/RnLObbZpnRI/AAAAAAAAAF0/2Un-BXN9bzk/s1600-h/urlMap1.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5076346700607102226" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_9ZIc5p2Ogko/RnLObbZpnRI/AAAAAAAAAF0/2Un-BXN9bzk/s400/urlMap1.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_9ZIc5p2Ogko/RnLOw7ZpnSI/AAAAAAAAAF8/PijtdSWZDHQ/s1600-h/urlMap2.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5076347069974289698" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_9ZIc5p2Ogko/RnLOw7ZpnSI/AAAAAAAAAF8/PijtdSWZDHQ/s400/urlMap2.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The aspx page that outputs the appSettings is simply copied to the application root and /Test folder for illustrative purposes. If you're interested in aspx (not code-behind) that references app settings, see the following &lt;a href="http://diabolopup.spaces.live.com/blog/cns!1994C13E86FA7652!131.entry"&gt;link&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-8436684637050935327?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/8436684637050935327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=8436684637050935327' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/8436684637050935327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/8436684637050935327'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/06/aspnet-20-url-mapping.html' title='ASP.NET 2.0 - URL Mapping'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_9ZIc5p2Ogko/RnLNdLZpnQI/AAAAAAAAAFs/OwXlrpJzioA/s72-c/urlMapping.gif' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-2082150419467418506</id><published>2007-06-10T17:50:00.000-07:00</published><updated>2007-06-10T17:59:33.657-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IIS'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>ASP.NET Deployment Error</title><content type='html'>Every seen the following error? It is literally littering Microsoft's ASP.NET forum:&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://bp3.blogger.com/_9ZIc5p2Ogko/RmycwLZpnPI/AAAAAAAAAFk/yhfvHXac_ws/s1600-h/aspnet_iiserror.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5074603231647735026" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_9ZIc5p2Ogko/RmycwLZpnPI/AAAAAAAAAFk/yhfvHXac_ws/s400/aspnet_iiserror.gif" border="0" /&gt;&lt;/a&gt; It happens when a developer tries to deploy their first ASP.NET application to an ISP's or employer's shared web server environment. Take a close look at the graphic above, particularly the highlighted section. It's a helpful clue, though in most cases it's not exactly correct.&lt;/p&gt;&lt;p&gt;What's most likely is that the application folder was copied to the site on the production server, without configuring the folder as a virtual directory at all. See earlier IIS posts on automating the creation and configuration of virtual directories with VBScript. You can hand these off to your site administrator.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-2082150419467418506?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/2082150419467418506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=2082150419467418506' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/2082150419467418506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/2082150419467418506'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/06/aspnet-deployment-error.html' title='ASP.NET Deployment Error'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_9ZIc5p2Ogko/RmycwLZpnPI/AAAAAAAAAFk/yhfvHXac_ws/s72-c/aspnet_iiserror.gif' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-5520306896681623549</id><published>2007-06-06T15:17:00.001-07:00</published><updated>2007-06-07T08:59:06.416-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Outlook'/><title type='text'>"Shredding" your Outlook Documents</title><content type='html'>Have you ever used the "Tools/Recover Deleted Items..." option in Outlook? A friend tipped me to it earlier this year. If your company uses Outlook for email, get familiar with this option and use it often to clean up after yourself. You don't need to keep personal (or worse yet, incriminating) emails within easy reach of an Outlook administrator.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Deleting Items&lt;/strong&gt;&lt;br /&gt;You delete email all the time, and are probably familiar with the Outlook "deleted items" folder:&lt;a href="http://bp3.blogger.com/_9ZIc5p2Ogko/RmgrBLZpnOI/AAAAAAAAAFc/V7Mn9qZlC54/s1600-h/outlook_deleted_items.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5073352279473102050" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_9ZIc5p2Ogko/RmgrBLZpnOI/AAAAAAAAAFc/V7Mn9qZlC54/s400/outlook_deleted_items.gif" border="0" /&gt;&lt;/a&gt; (deleted items folder)&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;To clear space for you mailbox (most administrators enforce a size limit) on the mail server, you probably clear this folder routinely. You do this by deleting all items from the "deleted items" folder, kind of like clearing the recycling bin on your file system.&lt;/p&gt;&lt;p&gt;&lt;a href="http://bp1.blogger.com/_9ZIc5p2Ogko/Rmc0T7ZpnMI/AAAAAAAAAFM/ZjWCydeV9CM/s1600-h/outlook_deleted_deleted.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5073081022223588546" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_9ZIc5p2Ogko/Rmc0T7ZpnMI/AAAAAAAAAFM/ZjWCydeV9CM/s400/outlook_deleted_deleted.gif" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;(emptied deleted items)&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Clearing Deleted Items, for Good&lt;/strong&gt;&lt;/p&gt;To remove the items "for good", go to the Tools/Recover Deleted Items menu option and delete all Outlook documents for a third and final time. The "X" icon takes care of it for you. CYA!&lt;a href="http://bp1.blogger.com/_9ZIc5p2Ogko/Rmc1X7ZpnNI/AAAAAAAAAFU/AcmLPhOmNCo/s1600-h/outlook_recover_deleted.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5073082190454693074" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_9ZIc5p2Ogko/Rmc1X7ZpnNI/AAAAAAAAAFU/AcmLPhOmNCo/s400/outlook_recover_deleted.gif" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-5520306896681623549?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/5520306896681623549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=5520306896681623549' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/5520306896681623549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/5520306896681623549'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/06/shredding-your-outlook-documents.html' title='&quot;Shredding&quot; your Outlook Documents'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_9ZIc5p2Ogko/RmgrBLZpnOI/AAAAAAAAAFc/V7Mn9qZlC54/s72-c/outlook_deleted_items.gif' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-7834734991223069978</id><published>2007-06-04T18:59:00.000-07:00</published><updated>2007-06-04T20:06:11.371-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>C# Console App Displaying Remote ASP.NET Configuration</title><content type='html'>The &lt;a href="http://diabolopup.spaces.live.com/blog/cns!1994C13E86FA7652!135.entry"&gt;following code&lt;/a&gt;, when compiled in a C# console application, will print the AppSettings collection for a remote machine. It accepts 4 arguments:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Machine Name - the network machine you wish to query&lt;/li&gt;&lt;li&gt;Site Name - the IIS site node you wish to query&lt;/li&gt;&lt;li&gt;User Name - user id to log into the remote machine&lt;/li&gt;&lt;li&gt;Password - user password to log into the remote machine&lt;/li&gt;&lt;/ol&gt;&lt;strong&gt;Notes&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;The app uses System.DirectoryServices.DirectoryEntry to navigate the IIS Tree and recurse through virtual directories, seeking configuration&lt;/ul&gt;&lt;ul&gt;The app uses the static WebConfigurationManager class to open and read the AppSettings collections&lt;/ul&gt;&lt;ul&gt;The main function is overloaded such that user name and password are optional. When not supplied, the logged in credentials of the executing machine are used.&lt;/ul&gt;&lt;ul&gt;In order to read remote configuration, you must run "&lt;strong&gt;aspnet_regiis config+&lt;/strong&gt;" on the remote server.&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-7834734991223069978?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/7834734991223069978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=7834734991223069978' title='31 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/7834734991223069978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/7834734991223069978'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/06/c-console-app-displaying-remote-aspnet.html' title='C# Console App Displaying Remote ASP.NET Configuration'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>31</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-4227366428168735042</id><published>2007-05-31T13:51:00.000-07:00</published><updated>2007-05-31T14:04:29.699-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VBScript'/><category scheme='http://www.blogger.com/atom/ns#' term='HTTP'/><title type='text'>Site Monitoring - Simple Tool</title><content type='html'>You want to ensure that your site is accessible 24x7, and want to be notified ASAP if there is an outtage. Here is a simple recipe.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Create a "KeepAlive" page; a simple page with a static, predictable response. I have created a &lt;a href="http://diabolopup.spaces.live.com/blog/cns!1994C13E86FA7652!133.entry"&gt;simple page &lt;/a&gt;that displays the Site Name, Web Server Name, and Site IP Address:&lt;a href="http://bp1.blogger.com/_9ZIc5p2Ogko/Rl817hnm-5I/AAAAAAAAAE8/GGMLEYM71PE/s1600-h/keepalive.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5070831002195524498" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_9ZIc5p2Ogko/Rl817hnm-5I/AAAAAAAAAE8/GGMLEYM71PE/s400/keepalive.gif" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Implement a &lt;a href="http://diabolopup.spaces.live.com/blog/cns!1994C13E86FA7652!134.entry"&gt;VBScript&lt;/a&gt; which makes an http request of the Keep Alive page, returning the response string. The script implements the Microsoft.XMLHTTP object. If the request does not resolve or returns an unexpected result, the script sends an email to the stakeholder (you).&lt;/li&gt;&lt;li&gt;Implement an NT Scheduled Task to run the VBScript (#2) every five minutes. Hopefully, you'll never hear from the tool :)&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-4227366428168735042?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/4227366428168735042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=4227366428168735042' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/4227366428168735042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/4227366428168735042'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/05/site-monitoring-simple-tool.html' title='Site Monitoring - Simple Tool'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_9ZIc5p2Ogko/Rl817hnm-5I/AAAAAAAAAE8/GGMLEYM71PE/s72-c/keepalive.gif' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-4447934731713249038</id><published>2007-05-29T15:29:00.000-07:00</published><updated>2007-06-18T08:00:44.585-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IIS Administration'/><title type='text'>ASPBufferingLimit - IIS5 vs. IIS6</title><content type='html'>&lt;div&gt;On upgrading a web server from Win2K/IIS5 to Win2K3/IIS6, an old classic ASP application stopped working. This app pulled a large recordset from a SQL database, dumped the records into a large array, and then looped through the array, rendering a grid. I'm not sure why it needed the intermediate step, but of course the developer was long gone from the company. Such is life. Here's the error encountered:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_9ZIc5p2Ogko/Rnad9bZpnTI/AAAAAAAAAGE/PUc5BclB7jk/s1600-h/aspbufferinglimit.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5077419308559736114" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_9ZIc5p2Ogko/Rnad9bZpnTI/AAAAAAAAAGE/PUc5BclB7jk/s400/aspbufferinglimit.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;First I ruled out the most obvious and usual offenders during a migration - code and data. Configuring the app on my development machine (IIS5), pulling down the production code and pointing to the production db, the app functioned swimmingly.&lt;br /&gt;&lt;br /&gt;Moving on, I researched and came across an IIS ADSI property, "ASPBufferingLimit". Apparently IIS6 sets a lower constraint on the ASP Buffer than IIS5. Good for a healthy web server, but bad for some legacy apps.&lt;br /&gt;&lt;br /&gt;The issue was resolved by upping the buffer limit on the IIS6 server. The server administrator accomplished this by running:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;span style="color:#ff0000;"&gt;c:\inetpub\adminscripts\adsutil.vbs set w3svc/aspbufferinglimit &lt;em&gt;value&lt;/em&gt;&lt;/span&gt;&lt;/ul&gt;Note: The default setting in IIS6 is ~4MB. The default setting in IIS5 is not visible, apparently, but is rumored to be ~128MB. That seems high to me but I have no choice other than to trust google research :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-4447934731713249038?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/4447934731713249038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=4447934731713249038' title='33 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/4447934731713249038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/4447934731713249038'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/05/aspbufferinglimit-iis5-vs-iis6.html' title='ASPBufferingLimit - IIS5 vs. IIS6'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_9ZIc5p2Ogko/Rnad9bZpnTI/AAAAAAAAAGE/PUc5BclB7jk/s72-c/aspbufferinglimit.gif' height='72' width='72'/><thr:total>33</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-7216349549795471138</id><published>2007-05-25T19:06:00.001-07:00</published><updated>2007-05-25T19:15:34.649-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VBScript'/><category scheme='http://www.blogger.com/atom/ns#' term='IIS Administration'/><category scheme='http://www.blogger.com/atom/ns#' term='IIS'/><title type='text'>Enable IIS 6.0 Extensions using VBScript</title><content type='html'>If you've worked with IIS 5 and IIS 6, you know that IIS 6 has some tighter default security settings. For example, an administrator must take explicit steps to enable the server execution of ASP/ASP.NET applications. This is accomplished with a few quick clicks, but I'm always looking for shortcuts, e.g.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;span style="color:#ff0000;"&gt;Set IIsWebServiceObj = GetObject("IIS://localhost/W3SVC")IIsWebServiceObj.EnableWebServiceExtension "ASP.NET v1.1.4322" &lt;/span&gt;&lt;span style="color:#ff0000;"&gt;IIsWebServiceObj.SetInfo&lt;/span&gt;&lt;/ul&gt;Taking it a step further, suppose you have a proprietary extension, for instance a dll or exe which serves as an engine to render dynamic html. In other words, say you have a very OLD application. Here's how you would handle that wrinkle:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;span style="color:#ff0000;"&gt;Option explicit&lt;br /&gt;dim IIsWebServiceObj&lt;br /&gt;&lt;br /&gt;Set IIsWebServiceObj = GetObject("IIS://localhost/W3SVC")&lt;br /&gt;&lt;br /&gt;'Enable Proprietary Extention&lt;br /&gt;IISWebServiceObj.AddExtensionFile "c:\mydll.dll", true, "MyDLL", true, _ "MyProprietaryExtensions"&lt;br /&gt;IIsWebServiceObj.SetInfo&lt;br /&gt;&lt;br /&gt;wscript.echo "success!"&lt;/span&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-7216349549795471138?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/7216349549795471138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=7216349549795471138' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/7216349549795471138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/7216349549795471138'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/05/enable-iis-60-extensions-using-vbscript.html' title='Enable IIS 6.0 Extensions using VBScript'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-6893523167264607317</id><published>2007-05-23T13:55:00.000-07:00</published><updated>2007-05-24T09:13:00.911-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Troubleshooting'/><title type='text'>"Visual studio could not identify the version of ASP.NET on the Web server. Do you want to continue?"</title><content type='html'>I happened upon this warning today when attempting to execute a Project\Copy Project for my web application in VS.NET 2003.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_9ZIc5p2Ogko/RlSsVBnm-zI/AAAAAAAAAEM/3Yz9S7c1wiM/s1600-h/vs.net+copy+project.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5067864957910448946" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_9ZIc5p2Ogko/RlSsVBnm-zI/AAAAAAAAAEM/3Yz9S7c1wiM/s400/vs.net+copy+project.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;(Copy Project Interface; Options I chose to create a lean deployment directory...)&lt;/ul&gt;&lt;a href="http://bp3.blogger.com/_9ZIc5p2Ogko/RlSslxnm-0I/AAAAAAAAAEU/uoxVfBkzqx4/s1600-h/vs.net+error.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5067865245673257794" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_9ZIc5p2Ogko/RlSslxnm-0I/AAAAAAAAAEU/uoxVfBkzqx4/s400/vs.net+error.gif" border="0" /&gt;&lt;/a&gt; &lt;ul&gt;(...And the mysterious warning)&lt;/ul&gt;&lt;p&gt;Browsing Google and various Forums, I was led to believe that my .NET Framework/ASP.NET installs were somehow corrupt, and I would have to reinstall or run the aspnet_regiis.exe utility. This didn't sound right to me. I have functioning 1.1/2.0 apps in my development environment, and was able to execute the Copy Project for other 1.1 projects.&lt;br /&gt;&lt;br /&gt;I beat myself up about this a bit, and then finally selected "Yes". VS.NET went ahead and built the deployment directory as specified, but not before presenting me with the following popup:&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_9ZIc5p2Ogko/RlSu2xnm-2I/AAAAAAAAAEk/SBz2W-EdEis/s1600-h/vs.net+ntlm+prompt.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5067867736754289506" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_9ZIc5p2Ogko/RlSu2xnm-2I/AAAAAAAAAEk/SBz2W-EdEis/s400/vs.net+ntlm+prompt.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This prompt was familiar to me; it's what you see when an application does not have anonymous access enabled in IIS. Enabling anonymous access eliminated the original VS.NET error!&lt;/p&gt;&lt;p&gt;Hopefully this tip will save someone troubleshooting time or scalp hair. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-6893523167264607317?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/6893523167264607317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=6893523167264607317' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/6893523167264607317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/6893523167264607317'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/05/visual-studio-could-not-identify.html' title='&quot;Visual studio could not identify the version of ASP.NET on the Web server. Do you want to continue?&quot;'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_9ZIc5p2Ogko/RlSsVBnm-zI/AAAAAAAAAEM/3Yz9S7c1wiM/s72-c/vs.net+copy+project.gif' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-7413414404815228190</id><published>2007-05-21T13:52:00.001-07:00</published><updated>2007-05-25T19:37:36.915-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Web.config'/><title type='text'>Overriding Web.config Using Location Tag</title><content type='html'>Let's say you have a web application with several static configuration settings stored in the &amp;lt;appsettings&amp;gt; collection. Then let's say you want one module of your application to behave differently, i.e. a different set of Application Settings should apply.&lt;br /&gt;&lt;br /&gt;Use the &amp;lt;location&amp;gt; tag in web.config to describe the settings for folders within the application.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Web.config Snippet&lt;br /&gt;&lt;/strong&gt;I have a web application set up in c:\inetpub\myapp, aka &lt;a href="http://localhost/myapp"&gt;http://localhost/myapp&lt;/a&gt;. A snippet from web.config is illustrated here:&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://bp1.blogger.com/_9ZIc5p2Ogko/RlIHQxnm-wI/AAAAAAAAAD0/jY484cjzJrE/s1600-h/locationtag.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5067120515524000514" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_9ZIc5p2Ogko/RlIHQxnm-wI/AAAAAAAAAD0/jY484cjzJrE/s400/locationtag.gif" border="0" /&gt;&lt;/a&gt; The application reads settings from the &lt;appsettings&gt;collection by default, unless the request is made to the Test folder.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;MyApp Settings&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The following screen shot illustrates the default behavior:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://bp1.blogger.com/_9ZIc5p2Ogko/RlIIVxnm-xI/AAAAAAAAAD8/Uf_3UeVzzHs/s1600-h/locationtag2.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5067121700934974226" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_9ZIc5p2Ogko/RlIIVxnm-xI/AAAAAAAAAD8/Uf_3UeVzzHs/s400/locationtag2.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;Test Settings&lt;/strong&gt;&lt;/p&gt;And here are the overrides, using the same test page under the /Test folder:&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_9ZIc5p2Ogko/RlII8Rnm-yI/AAAAAAAAAEE/B6P4BGoYndw/s1600-h/locationtag3.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5067122362359937826" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_9ZIc5p2Ogko/RlII8Rnm-yI/AAAAAAAAAEE/B6P4BGoYndw/s400/locationtag3.gif" border="0" /&gt;&lt;/a&gt; Piece of cake, huh? For the brief testconfig.aspx source code, visit the following &lt;a href="http://diabolopup.spaces.live.com/blog/cns!1994C13E86FA7652!131.entry"&gt;link&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-7413414404815228190?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/7413414404815228190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=7413414404815228190' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/7413414404815228190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/7413414404815228190'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/05/overriding-webconfig-using-tag.html' title='Overriding Web.config Using Location Tag'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_9ZIc5p2Ogko/RlIHQxnm-wI/AAAAAAAAAD0/jY484cjzJrE/s72-c/locationtag.gif' height='72' width='72'/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-324463188420374215</id><published>2007-05-18T18:17:00.000-07:00</published><updated>2007-05-25T12:54:36.708-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IE'/><category scheme='http://www.blogger.com/atom/ns#' term='Troubleshooting'/><title type='text'>Developers: Friendly HTTP Errors can be Unfriendly</title><content type='html'>&lt;a href="http://bp0.blogger.com/_9ZIc5p2Ogko/Rlc-sRnm-3I/AAAAAAAAAEs/B5kwovuyFD4/s1600-h/http_friendly.gif"&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Be sure to disable friendly http errors when developing web applications.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_9ZIc5p2Ogko/Rk5Qrhnm-tI/AAAAAAAAADc/OdtuqZQ9BuA/s1600-h/http_disable_friendly.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5066075339527486162" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_9ZIc5p2Ogko/Rk5Qrhnm-tI/AAAAAAAAADc/OdtuqZQ9BuA/s400/http_disable_friendly.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;These "friendly" errors can mask a problem when troubleshooting. This is prevalent in ASP applications. The following app is missing a virtual directory, and the client has friendly errors turned on:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_9ZIc5p2Ogko/Rlc-sRnm-3I/AAAAAAAAAEs/B5kwovuyFD4/s1600-h/http_friendly.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5068588835993484146" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_9ZIc5p2Ogko/Rlc-sRnm-3I/AAAAAAAAAEs/B5kwovuyFD4/s400/http_friendly.gif" border="0" /&gt;&lt;/a&gt;That doesn't really tell you much, does it? Now here's what we get with the option turned off:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_9ZIc5p2Ogko/Rk5Rixnm-vI/AAAAAAAAADs/EaoR7xAIq5k/s1600-h/http_unfriendly.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5066076288715258610" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_9ZIc5p2Ogko/Rk5Rixnm-vI/AAAAAAAAADs/EaoR7xAIq5k/s400/http_unfriendly.gif" border="0" /&gt;&lt;/a&gt; That's a little more informative (minus the proprietary details), isn't it? Keep it unfriendly!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-324463188420374215?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/324463188420374215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=324463188420374215' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/324463188420374215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/324463188420374215'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/05/developers-friendly-http-errors-can-be.html' title='Developers: Friendly HTTP Errors can be Unfriendly'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_9ZIc5p2Ogko/Rk5Qrhnm-tI/AAAAAAAAADc/OdtuqZQ9BuA/s72-c/http_disable_friendly.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-3709473453995222499</id><published>2007-05-17T14:31:00.000-07:00</published><updated>2007-08-22T14:34:32.416-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VBScript'/><category scheme='http://www.blogger.com/atom/ns#' term='IIS Administration'/><category scheme='http://www.blogger.com/atom/ns#' term='IIS'/><title type='text'>Create an IIS Site Using VBScript</title><content type='html'>This topic moved to &lt;a href="http://diablopup.net/post/Create-a-Website-using-VBScript.aspx"&gt;diablopup.net&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-3709473453995222499?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/3709473453995222499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=3709473453995222499' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/3709473453995222499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/3709473453995222499'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/05/create-iis-site-using-vbscript.html' title='Create an IIS Site Using VBScript'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-221475571450943723</id><published>2007-05-16T08:46:00.000-07:00</published><updated>2007-05-24T09:07:42.668-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DNS'/><category scheme='http://www.blogger.com/atom/ns#' term='IIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Troubleshooting'/><title type='text'>Get To Know Your Hosts File</title><content type='html'>&lt;strong&gt;What is the Hosts File&lt;/strong&gt;&lt;br /&gt;It is a plain text file located within your system directory. It has no file extension.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Windows 2000 - c:\winnt\system32\drivers\etc\hosts&lt;/li&gt;&lt;li&gt;Windows XP, 2003 - c:\windows\system32\drivers\etc\hosts&lt;/li&gt;&lt;li&gt;You'll find equivalent files in other OS's (e.g. Unix)&lt;/li&gt;&lt;/ol&gt;&lt;strong&gt;What Does it Do?&lt;/strong&gt;&lt;br /&gt;Your Hosts file overrides DNS, forcing HTTP requests to route the way you specify.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Why is it Useful?&lt;/strong&gt;&lt;br /&gt;There are all kinds of uses for Hosts, depending on your problem at hand. Here are some examples:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;You set up numerous IIS sites (e.g. &lt;a href="http://mysite.com"&gt;http://mysite.com&lt;/a&gt;) in a development environment (server OS), and want to test them via a browswer.&lt;/li&gt;&lt;li&gt;You are developing a single site with multiple behaviors based on domain name (e.g. &lt;a href="http://myBlueSite.com"&gt;http://myBlueSite.com&lt;/a&gt; has a blue background; &lt;a href="http://myRedSite.com"&gt;http://myRedSite.com&lt;/a&gt; has a red background). You want to be able to test these behaviors.&lt;/li&gt;&lt;li&gt;Your are troubleshooting your company's load-balanced server farm. Customers are complaining about a site/application, but you are having difficulty recreating. If the problem is isolated to a specific server, you can force http requests to each server in the farm, provided you have the list of IP addresses.&lt;/li&gt;&lt;li&gt;You want to block various ad/banner nuisances.&lt;/li&gt;&lt;/ol&gt;&lt;strong&gt;Brief Example&lt;/strong&gt;&lt;br /&gt;You are developing a fictional site to IIS, running Windows XP. Call this site &lt;a href="http://diablolovessteak.com"&gt;http://diablolovessteak.com&lt;/a&gt;.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Open c:\windows\system32\drivers\etc\hosts in a text editor&lt;/li&gt;&lt;li&gt;Add the following line:&lt;/li&gt;&lt;li&gt;&lt;span style="color:#ff0000;"&gt;127.0.0.1 diablolovessteak.com&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Save the file.&lt;/li&gt;&lt;li&gt;Close any open internet browsers.&lt;/li&gt;&lt;li&gt;Open a browser and go to &lt;a href="http://diablolovessteak.com"&gt;http://diablolovessteak.com&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;The request will open the home page of your default web site. If you've never used Hosts, give it a shot!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-221475571450943723?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/221475571450943723/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=221475571450943723' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/221475571450943723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/221475571450943723'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/05/get-to-know-your-hosts-file.html' title='Get To Know Your Hosts File'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-708794988529120154</id><published>2007-05-14T12:43:00.000-07:00</published><updated>2007-05-14T12:56:14.408-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DNS'/><title type='text'>DNS For Dummies</title><content type='html'>&lt;p&gt;If you are like me, application-heavy and network-light, then DNS is a relative mystery to you. A friend (network guy) gave me the following high level explanation.&lt;br /&gt;&lt;br /&gt;You type and enter an address into your browser, e.g. &lt;a href="http://diablopup.blogspot.com"&gt;http://diablopup.blogspot.com&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://bp3.blogger.com/_9ZIc5p2Ogko/Rki9WCb9DoI/AAAAAAAAADU/GEVLPH7p0_w/s1600-h/DNS.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5064505967287012994" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_9ZIc5p2Ogko/Rki9WCb9DoI/AAAAAAAAADU/GEVLPH7p0_w/s400/DNS.gif" border="0" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;The first thing that happens is your computer asks your ISP's (e.g. AT&amp;T's) DNS server (1) "do you know the IP address for this website?" If it does, it will tell your computer what it is, and you connect directly to the Website Server (3). &lt;/p&gt;&lt;p&gt;If your ISP's DNS server doesn't know, it will ask (in a roundabout way) the website owner’s DNS server for the IP address(2). Then it connects to the website server (3). &lt;/p&gt;&lt;p&gt;Once your ISP's DNS server knows the IP address, it keeps it in cache so it doesn't have to ask again, thereby making the connection quicker on subsequent requests. This is why you sometimes experience a slow page load when visiting a website for the first time, but then witness quicker connection on subsequent visits. &lt;/p&gt;&lt;p&gt;There are more "nuts and bolts" to DNS, but this is an intuitive picture for people who can't work with DNS directly.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-708794988529120154?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/708794988529120154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=708794988529120154' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/708794988529120154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/708794988529120154'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/05/dns-for-dummies.html' title='DNS For Dummies'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_9ZIc5p2Ogko/Rki9WCb9DoI/AAAAAAAAADU/GEVLPH7p0_w/s72-c/DNS.gif' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-77515426344019352</id><published>2007-05-03T12:14:00.000-07:00</published><updated>2007-05-03T13:09:49.316-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='VBScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Services'/><title type='text'>Installing a Windows Service</title><content type='html'>&lt;strong&gt;Background&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;A few weeks ago I wrote a brief entry on &lt;a href="http://diablopup.blogspot.com/2007/04/vbnet-visual-sourcesafe-journal-monitor.html"&gt;Lewis Moten's Visual SourceSafe Journal Monitor&lt;/a&gt;. This tool runs as a windows service, polling the specified journal.txt every few minutes and updating a data source with the latest VSS changes.&lt;br /&gt;&lt;br /&gt;This got me interested in windows services in general and how you set them up using VS.NET. Here is a link to another &lt;a href="http://www.codeproject.com/dotnet/simplewindowsservice.asp"&gt;CodeProject article&lt;/a&gt; focusing on setting up a Windows Service project. It details:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;How to set up and build a simple Windows Service project.&lt;/li&gt;&lt;li&gt;How to create a setup package (.msi) to install the Windows service.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;I work for an organization where the administrators will not accept an .msi package. They want more visibility into what exactly you are trying to do to their production machines, since they are ultimately responsible for keeping them up and running.&lt;/p&gt;&lt;p&gt;Here's how you can &lt;a href="http://diabolopup.spaces.live.com/blog/cns!1994C13E86FA7652!126.entry"&gt;install/uninstall a windows service .exe using VBScript&lt;/a&gt; .&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-77515426344019352?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/77515426344019352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=77515426344019352' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/77515426344019352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/77515426344019352'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/05/installing-windows-service.html' title='Installing a Windows Service'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-4794501918010722281</id><published>2007-05-01T09:11:00.000-07:00</published><updated>2007-09-14T14:50:52.823-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Registry'/><title type='text'>How to Run WebDev Server Outside of VS.NET</title><content type='html'>Moved to &lt;a href="http://diablopup.net/post/How-to-Run-WebDev-Server-Outside-of-VSNET.aspx"&gt;diablopup.net&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-4794501918010722281?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/4794501918010722281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=4794501918010722281' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/4794501918010722281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/4794501918010722281'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/05/how-to-run-webdev-server-outside-of.html' title='How to Run WebDev Server Outside of VS.NET'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-1779600903404719743</id><published>2007-04-30T10:48:00.000-07:00</published><updated>2007-04-30T11:01:16.681-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Disgruntlement'/><title type='text'>Our Vendor Skipped the Gym to Help Us Out</title><content type='html'>My company outsourced its data center. Now the most trivial task is like resolving a bad cable bill.&lt;br /&gt;&lt;br /&gt;As part of the transition to a "cheaper" solution, we moved a bunch of our web servers from our data centers (which were once run by in-house employees with domain knowledge) to the vendors. Lo and behold, stuff stopped working, particularly applications' ability to connect and perform database operations.&lt;br /&gt;&lt;br /&gt;So that's all the back story. Here was the kicker...this dba for the vendor wanted us to know that she skipped the gym to get our products, that our customers rely on, up and running again.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_9ZIc5p2Ogko/RjYuqCb9DnI/AAAAAAAAADM/IB4JN6XSbi8/s1600-h/gym.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5059282531140832882" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_9ZIc5p2Ogko/RjYuqCb9DnI/AAAAAAAAADM/IB4JN6XSbi8/s400/gym.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Never ever tell a customer that you are really put out by their request. Some analogies:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;"I'll have you know I'm missing my high colonic to make you this bagel"&lt;/ul&gt;&lt;ul&gt;"I skipped my nap to perform this hysterectomy"&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-1779600903404719743?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/1779600903404719743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=1779600903404719743' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/1779600903404719743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/1779600903404719743'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/04/our-vendor-skipped-gym-to-help-us-out.html' title='Our Vendor Skipped the Gym to Help Us Out'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_9ZIc5p2Ogko/RjYuqCb9DnI/AAAAAAAAADM/IB4JN6XSbi8/s72-c/gym.gif' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-4471704988974046953</id><published>2007-04-27T15:36:00.000-07:00</published><updated>2007-04-27T16:01:11.594-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VBScript'/><category scheme='http://www.blogger.com/atom/ns#' term='HTTP'/><category scheme='http://www.blogger.com/atom/ns#' term='Classic ASP'/><title type='text'>Implementing a "Click Through" in Classic ASP</title><content type='html'>&lt;div&gt;To simulate a client request for a given url, use Javascript that automatically fires during the test page load event.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To test that this "referral" script works, point the "referrer" to a handy ServerVariables display page.&lt;br /&gt;&lt;br /&gt;Both the "referrer" (click.asp) and the "target" (servervars.asp) are illustrated &lt;a href="http://diabolopup.spaces.live.com/blog/cns!1994C13E86FA7652!120.entry"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Here is a screen shot of the resulting HTTP_REFERER display page (servervars.asp)&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://bp2.blogger.com/_9ZIc5p2Ogko/RjKAkSb9DlI/AAAAAAAAAC8/WMCT0pZRujs/s1600-h/click.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5058246692403220050" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_9ZIc5p2Ogko/RjKAkSb9DlI/AAAAAAAAAC8/WMCT0pZRujs/s400/click.gif" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-4471704988974046953?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/4471704988974046953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=4471704988974046953' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/4471704988974046953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/4471704988974046953'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/04/implementing-click-through-in-classic.html' title='Implementing a &quot;Click Through&quot; in Classic ASP'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_9ZIc5p2Ogko/RjKAkSb9DlI/AAAAAAAAAC8/WMCT0pZRujs/s72-c/click.gif' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-2810230789160473937</id><published>2007-04-27T13:44:00.000-07:00</published><updated>2007-04-27T13:53:07.758-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSL'/><category scheme='http://www.blogger.com/atom/ns#' term='VBScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Classic ASP'/><title type='text'>Here's How you Force SSL in Creaky Old ASP</title><content type='html'>Say you have a Classic ASP site or application where you want to force a secure (SSL) connection.&lt;br /&gt;&lt;br /&gt;Use the ASP &lt;strong&gt;ServerVariables&lt;/strong&gt; collection to check the current connection, then redirect appropriately.&lt;br /&gt;&lt;br /&gt;Copy/Paste the following into a text file and name it &lt;strong&gt;ForceSSL.asp&lt;/strong&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;&amp;lt;%&lt;br /&gt;&lt;br /&gt;If UCase(Request.ServerVariables("HTTPS")) = "OFF" Then&lt;br /&gt;'''get page&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;span style="color:#ff0000;"&gt;sRedirect = "https://" &amp; Request.ServerVariables("SERVER_NAME") &amp;amp;&lt;/span&gt;&lt;/ul&gt;&lt;ul&gt;&lt;span style="color:#ff0000;"&gt;Request.ServerVariables("PATH_INFO") &amp; "?" &amp;amp; Request.Querystring&lt;/span&gt;&lt;/ul&gt;&lt;ul&gt;&lt;span style="color:#ff0000;"&gt;Response.Redirect sRedirect&lt;/span&gt;&lt;/ul&gt;&lt;span style="color:#ff0000;"&gt;End If&lt;br /&gt;&lt;br /&gt;%&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;For each page in the site/application, add a server-side include that looks like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;&amp;lt;!--#include virtual="/ForceSSL.asp"--&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;AG, hope this helps you out. I'm probably weeks too late.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-2810230789160473937?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/2810230789160473937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=2810230789160473937' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/2810230789160473937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/2810230789160473937'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/04/heres-how-you-force-ssl-in-creaky-old.html' title='Here&apos;s How you Force SSL in Creaky Old ASP'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-5846608968501797283</id><published>2007-04-25T11:18:00.000-07:00</published><updated>2007-09-14T14:45:08.439-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS.NET'/><title type='text'>WebDev.WebServer.EXE - Poor Man's IIS</title><content type='html'>Moved to &lt;a href="http://diablopup.net/post/WebDevWebServerEXE---Poor-Mans-IIS.aspx"&gt;diablopup.net&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-5846608968501797283?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/5846608968501797283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=5846608968501797283' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/5846608968501797283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/5846608968501797283'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/04/webdevwebserverexe-poor-mans-iis.html' title='WebDev.WebServer.EXE - Poor Man&apos;s IIS'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-4610427653596854370</id><published>2007-04-24T12:29:00.000-07:00</published><updated>2007-09-27T11:24:55.494-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VBScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Registry'/><title type='text'>Customize Your Folder Shortcut Menu</title><content type='html'>This posting moved to &lt;a href="http://diablopup.net/post/Customize-your-Folder-Shortcut-Menu---Compile-all-Java-Files.aspx"&gt;diablopup.net&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-4610427653596854370?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/4610427653596854370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=4610427653596854370' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/4610427653596854370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/4610427653596854370'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/04/customize-your-folder-shortcut-menu.html' title='Customize Your Folder Shortcut Menu'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-1896433168511940096</id><published>2007-04-17T14:11:00.000-07:00</published><updated>2007-04-17T14:43:31.444-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Web.config'/><title type='text'>Web.config - Using an External File</title><content type='html'>You may find it necessary to separately manage a particular section of your web application's configuration.&lt;br /&gt;&lt;br /&gt;Say, for instance, you want to manage a single code base (one web.config file) but you want the application to behave differently on different servers (development, QA, production).&lt;br /&gt;&lt;br /&gt;ASP.NET 2.0 allows you to modularize a configuration section using the &lt;strong&gt;configSource&lt;/strong&gt; attribute. The following is an illustrative example:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;MyApp &lt;/strong&gt;has a web.config file that specifies an external source for the appSettings section:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_9ZIc5p2Ogko/RiU7BolUI-I/AAAAAAAAACE/BGPiuVTbzjY/s1600-h/externalconfig_webconfig.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5054511056053085154" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_9ZIc5p2Ogko/RiU7BolUI-I/AAAAAAAAACE/BGPiuVTbzjY/s400/externalconfig_webconfig.gif" border="0" /&gt;&lt;/a&gt;You can store the external file, &lt;strong&gt;appSettings.config&lt;/strong&gt;, anywhere within the application, provided the &lt;strong&gt;configSource&lt;/strong&gt; attribute must specifies a virtual path. Sorry, physical paths or paths outside the application are prohibited.&lt;br /&gt;&lt;br /&gt;Getting back to the example, appSettings.config contains a well-formed &amp;lt;appSettings&amp;gt; section:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_9ZIc5p2Ogko/RiU7lYlUI_I/AAAAAAAAACM/LEDFOgjhwKs/s1600-h/externalconfig_appconfig.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5054511670233408498" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_9ZIc5p2Ogko/RiU7lYlUI_I/AAAAAAAAACM/LEDFOgjhwKs/s400/externalconfig_appconfig.gif" border="0" /&gt;&lt;/a&gt; That's all there is to it! To test the retrieval of these settings, here is a simple .aspx form, &lt;strong&gt;testconfig.aspx&lt;/strong&gt;:&lt;br /&gt;&lt;p&gt;&lt;a href="http://bp3.blogger.com/_9ZIc5p2Ogko/RiU9IIlUJAI/AAAAAAAAACU/zsbp1GjOAEs/s1600-h/externalconfig_test.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5054513366745490434" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_9ZIc5p2Ogko/RiU9IIlUJAI/AAAAAAAAACU/zsbp1GjOAEs/s400/externalconfig_test.gif" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;Finally, here's what the output looks like when you visit &lt;a href="http://localhost/myapp/testconfig.aspx"&gt;http://localhost/myapp/testconfig.aspx&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_9ZIc5p2Ogko/RiU9zIlUJBI/AAAAAAAAACc/dexFKsguxG0/s1600-h/externalconfig.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5054514105479865362" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_9ZIc5p2Ogko/RiU9zIlUJBI/AAAAAAAAACc/dexFKsguxG0/s400/externalconfig.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://diabolopup.spaces.live.com/blog/cns!1994C13E86FA7652!118.entry"&gt;Link to Cut-and-paste-friendly code&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-1896433168511940096?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/1896433168511940096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=1896433168511940096' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/1896433168511940096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/1896433168511940096'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/04/webconfig-using-external-file.html' title='Web.config - Using an External File'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_9ZIc5p2Ogko/RiU7BolUI-I/AAAAAAAAACE/BGPiuVTbzjY/s72-c/externalconfig_webconfig.gif' height='72' width='72'/><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-30256026803666464</id><published>2007-04-16T10:52:00.000-07:00</published><updated>2007-04-16T10:53:18.541-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fun'/><title type='text'>Escape!</title><content type='html'>Check out the &lt;a href="http://members.iinet.net.au/~pontipak/redsquare.html"&gt;following &lt;/a&gt;. I was able to last just over 21 seconds. How about you?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-30256026803666464?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/30256026803666464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=30256026803666464' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/30256026803666464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/30256026803666464'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/04/escape.html' title='Escape!'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-3375834751352096269</id><published>2007-04-16T10:47:00.000-07:00</published><updated>2007-04-16T10:50:19.775-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fun'/><title type='text'>Google Driving Directions</title><content type='html'>Aunt Jojo showed me this tidbit:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Go to Google and select "Maps"&lt;/li&gt;&lt;li&gt;Select "Get Directions"&lt;/li&gt;&lt;li&gt;Get directions from "New York, New York" to "London, England" or other major European city.&lt;/li&gt;&lt;li&gt;Read the instructions very carefully.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-3375834751352096269?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/3375834751352096269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=3375834751352096269' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/3375834751352096269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/3375834751352096269'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/04/google-driving-directions.html' title='Google Driving Directions'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-2247845274376106688</id><published>2007-04-13T07:55:00.000-07:00</published><updated>2007-04-13T10:54:55.508-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IIS'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET 1.1'/><title type='text'>Aspnet_regiis -c</title><content type='html'>Have you ever seen the following ASP.NET client-side error?&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://bp2.blogger.com/_9ZIc5p2Ogko/Rh-aOYlUI9I/AAAAAAAAAB8/E9ZWK0_6GyM/s1600-h/aspnet_client_scripts.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5052926878840792018" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_9ZIc5p2Ogko/Rh-aOYlUI9I/AAAAAAAAAB8/E9ZWK0_6GyM/s400/aspnet_client_scripts.gif" border="0" /&gt;&lt;/a&gt; It is most common in production environments that host multiple IIS sites and applications.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ASPNET_CLIENT&lt;/strong&gt;&lt;br /&gt;If your ASP.NET 1.1 application implements dynamic validation controls, it is dependent on the existence of an &lt;span style="color:#ff0000;"&gt;/aspnet_client&lt;/span&gt; directory. This directory must be a child folder of the site's home directory. Here is a sample scenario: &lt;/p&gt;&lt;ol&gt;&lt;li&gt;We have a site on a production server, abc.com.&lt;/li&gt;&lt;li&gt;abc.com serves web pages residing on the server's file system at c:\abc. This is the home directory.&lt;/li&gt;&lt;li&gt;I have an asp.net application hosted at abc.com/newapp&lt;/li&gt;&lt;li&gt;My application serves web forms residing at c:\myapps\newapp&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;My "newapp", which uses validation controls, depends on the existence of c:\abc\aspnet_client. If the ABC site is managed by someone else (some other department in your company), you may not be comfortable with this dependency! E.G, what if someone managing the site content in abc.com ignorantly deletes /aspnet_client, fearing it to be malicious?&lt;/p&gt;&lt;p&gt;Furthermore, while /aspnet_client is handled for you in VS.NET, it is not automatically created for new sites added to IIS. So if you are launching a new site and a new ASP.NET 1.1 application, you will have to include a step to build the /aspnet_client directory. This step is:&lt;/p&gt;&lt;p&gt;&lt;span style="color:#ff0000;"&gt;Aspnet_regiis -c&lt;/span&gt;&lt;/p&gt;&lt;p&gt;This creates the /asnet_client folder under EVERY website node in IIS. So you are safe until the next time some fool deletes it or renames it on the shared server.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Alternative to /aspnet_client&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;You can remove the dependency of your app on the parent root by overriding the location of the ASP.NET client scripts in web.config. First, copy the scripts folder from the parent root (e.g. c:\abc\aspnet_client) to the application root (e.g. c:\myapps\newapp\aspnet_client). For clarity, rename the folder from aspnet_client to &lt;strong&gt;aspnet_override&lt;/strong&gt;. Then, set the override in web.config: &lt;/p&gt;&lt;ul&gt;&lt;span style="color:#ff0000;"&gt;&amp;lt;system.web&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- WEB CONTROLS&lt;br /&gt;This section is settings to enable client-side validation code.&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;webControls clientScriptsLocation="aspnet_override\\"/&amp;gt;&lt;br&gt;...&lt;/span&gt;&lt;/ul&gt;&lt;br /&gt;Now you manage the client scripts yourself!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-2247845274376106688?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/2247845274376106688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=2247845274376106688' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/2247845274376106688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/2247845274376106688'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/04/aspnetregiis-c.html' title='Aspnet_regiis -c'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_9ZIc5p2Ogko/Rh-aOYlUI9I/AAAAAAAAAB8/E9ZWK0_6GyM/s72-c/aspnet_client_scripts.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-348681792245787056</id><published>2007-04-09T13:42:00.000-07:00</published><updated>2007-05-24T09:34:45.162-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IIS'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Aspnet_Regiis - Encrypt/Decrypt Web.config</title><content type='html'>&lt;strong&gt;Encrypting a Configuration Section&lt;/strong&gt;&lt;br /&gt;IIS/ASP.NET will not serve direct requests to Web.config, which protects possibly sensitive information (e.g. connection strings, email addresses) from the public...at least in theory.&lt;br /&gt;&lt;br /&gt;You can further protect web.config information via encryption. Out of the box, the aspnet_regiis.exe utility will encrypt web.config according to your preferences.&lt;br /&gt;&lt;br /&gt;Here is a sample &amp;lt;appsettings&amp;gt; section:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;a href="http://bp1.blogger.com/_9ZIc5p2Ogko/RhqmbYKovtI/AAAAAAAAABs/d1q0j0r__r0/s1600-h/aspnet_encrypt_before.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5051532921323175634" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_9ZIc5p2Ogko/RhqmbYKovtI/AAAAAAAAABs/d1q0j0r__r0/s400/aspnet_encrypt_before.gif" border="0" /&gt;&lt;/a&gt;&lt;/ul&gt;Assume that this application runs under &lt;a href="http://localhost/myApp"&gt;http://localhost/myApp&lt;/a&gt;, we could run the following command to encrypt: &lt;p&gt;&lt;ul&gt;&lt;span style="color:#ff0000;"&gt;aspnet_regiis -pe "appSettings" -app "/myApp"&lt;/span&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;After which, the &amp;lt;appsettings&amp;gt; section would look like this:&lt;br /&gt;&lt;p&gt;&lt;ul&gt;&lt;a href="http://bp2.blogger.com/_9ZIc5p2Ogko/RhqnsoKovuI/AAAAAAAAAB0/B-ZsVmtFkNE/s1600-h/aspnet_encrypt_after.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5051534317187546850" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_9ZIc5p2Ogko/RhqnsoKovuI/AAAAAAAAAB0/B-ZsVmtFkNE/s400/aspnet_encrypt_after.gif" border="0" /&gt;&lt;/a&gt;&lt;/ul&gt;&lt;br /&gt;&lt;strong&gt;Implementing Code to Retrieve Configuration Settings&lt;/strong&gt;&lt;br /&gt;What's great is that the code that accesses the configuration settings need not change, e.g.:&lt;br /&gt;&lt;ul&gt;&lt;span style="color:#ff0000;"&gt;string strGUID = ConfigurationSettings.AppSettings["ROOTGUID"];&lt;br /&gt;&lt;/span&gt;&lt;/ul&gt;&lt;br /&gt;...would work before and after encryption.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Decryption&lt;/strong&gt;&lt;br /&gt;To decrypt the configuration settings, just substitute a "-pd" switch for "-pe":&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;span style="color:#ff0000;"&gt;aspnet_regiis -pd "appSettings" -app "/myApp"&lt;br /&gt;&lt;/span&gt;&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;...Finally, I came across a good article about handling this encryption/decryption programmatically (e.g. via an ASP.NET page or a Console App). Here's the &lt;a href="http://aspnet.4guysfromrolla.com/articles/021506-1.aspx"&gt;4gfr link&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-348681792245787056?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/348681792245787056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=348681792245787056' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/348681792245787056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/348681792245787056'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/04/aspnetregiis-encryptdecrypt-webconfig.html' title='Aspnet_Regiis - Encrypt/Decrypt Web.config'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_9ZIc5p2Ogko/RhqmbYKovtI/AAAAAAAAABs/d1q0j0r__r0/s72-c/aspnet_encrypt_before.gif' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-2204155654263144897</id><published>2007-04-06T15:50:00.000-07:00</published><updated>2007-04-06T16:09:38.645-07:00</updated><title type='text'>Intro to Aspnet_Regiis.exe</title><content type='html'>&lt;b&gt;WHAT IS IT?&lt;/b&gt;&lt;br /&gt;Aspnet_regiis.exe is a command line utility that installs ASP.NET features to Internet Information Server (IIS). You find it in your c:\&lt;i&gt;windows&lt;/i&gt;\microsoft.net\framework\v#.### directory. Installable components include such things as:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;An ISAPI Filter - used by IIS to direct incoming requests to the appropriate asp.net&lt;br /&gt;runtime engine based on the extension (e.g. .asp, .aspx)&lt;/li&gt;&lt;li&gt;Script Maps - configuration settings in each IIS node that specify how various extensions are processed (see Figure 1).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Client Validation Scripts - /aspnet_client Javascripts that provide dynamic behavior to web form validation controls (see Figure 2)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Options for encrypting asp.net configuration (*.config) files.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;etc&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_9ZIc5p2Ogko/RhbQSYKovqI/AAAAAAAAABU/cDt0v54LpkQ/s1600-h/aspnet_regiis_before.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5050453046285876898" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_9ZIc5p2Ogko/RhbQSYKovqI/AAAAAAAAABU/cDt0v54LpkQ/s400/aspnet_regiis_before.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;(figure 1 - aspx script mapping)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_9ZIc5p2Ogko/RhbRBoKovsI/AAAAAAAAABk/cU7oEaryI70/s1600-h/aspnet_client.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5050453858034695874" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_9ZIc5p2Ogko/RhbRBoKovsI/AAAAAAAAABk/cU7oEaryI70/s400/aspnet_client.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;(figure 2 - client validation scripts)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;HOW DO I USE IT?&lt;/b&gt;&lt;br /&gt;Very carefully :). Read the various options by typing "aspnet_regiis.exe -?". Run them on a development server to get familiar with them, backing up the IIS metabase appropriately.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;CAUTION: Using the "-i" Switch&lt;/b&gt;&lt;br /&gt;If you run the utility with "-i", you will install the ASP.NET version specified by the utility's parent directory (e.g. "v1.1.4322"). This includes the ISAPI filter and script maps for all nodes in the IIS tree...&lt;br /&gt;&lt;br /&gt;Think about that, because it could get you in to trouble, say, if you are running the utility from the v2.0.50727 directory of a web server that currently runs a bunch of older 1.1 applications. Those applications will be forced to the 2.0 version of the asp.net processing engine (aspnet_isapi.dll) and could very well stop working. Better to leave well enough alone!&lt;br /&gt;&lt;br /&gt;To leave existing asp.net scripts as-is, use the combination switch "-ir". Per the documentation, this installs the specified version of ASP.NET without updating script maps. Then to set assign applications to the appropriate version, set them manually in IIS or use script explained in this &lt;a href="http://diablopup.blogspot.com/2007/03/setting-aspnet-version-via-script.html"&gt;earlier blog&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-2204155654263144897?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/2204155654263144897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=2204155654263144897' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/2204155654263144897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/2204155654263144897'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/04/intro-to-aspnetregiisexe.html' title='Intro to Aspnet_Regiis.exe'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_9ZIc5p2Ogko/RhbQSYKovqI/AAAAAAAAABU/cDt0v54LpkQ/s72-c/aspnet_regiis_before.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-454141334119821953</id><published>2007-04-04T15:07:00.000-07:00</published><updated>2007-04-09T14:56:59.954-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VBScript'/><category scheme='http://www.blogger.com/atom/ns#' term='File System Object'/><title type='text'>VBScript Fun - Create a File System Directory</title><content type='html'>Okay, I was stretching for something to write today. So I thought I'd include an entry on my good friend, FileSystemObject, which has been my "go-to" on many occasions.&lt;br /&gt;&lt;br /&gt;So, an example...&lt;br /&gt;&lt;br /&gt;Say you want to automate the creation of a file system hierarchy, with folders that don't currently exist, and branch pretty deeply. Using the following function, you can pass a long path and the File System Object will create each layer:&lt;br /&gt;&lt;br /&gt;makeDirectory "c:\diablopup\testing\a"&lt;br /&gt;&lt;ul&gt;&lt;li&gt;'''''''''''''''''''''''''''''''''''''''''''''''''''&lt;/li&gt;&lt;br /&gt;&lt;li&gt;' This method is responsible for creating a directory&lt;/li&gt;&lt;br /&gt;&lt;li&gt;' The directory can be several layers deep, and if the&lt;/li&gt;&lt;br /&gt;&lt;li&gt;' parent directories don't exist, it creates them.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;' If the directory already exists, it is left alone&lt;/li&gt;&lt;br /&gt;&lt;li&gt;''''''''''''''''''''''''''''''''''''''''''''''''&lt;/li&gt;&lt;br /&gt;&lt;li&gt;sub makeDirectory (newPath)&lt;br /&gt;&lt;ul&gt;Dim myArray,length,count,path,outputFileObject&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;ul&gt;Set outputfileObject = CreateObject("Scripting.FileSystemObject")&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;ul&gt;if outputfileObject.FolderExists(newPath) then&lt;br /&gt;&lt;li&gt;wscript.echo "Dir: "&amp;newPath&amp;amp;" already exists &lt;-- makeDirectory() " &lt;/li&gt;&lt;br /&gt;&lt;li&gt;exit sub&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;end if&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;ul&gt;path = ""&lt;/ul&gt;&lt;ul&gt;count = 0&lt;/ul&gt;&lt;ul&gt;myArray = split(newPath, "\")&lt;/ul&gt;&lt;ul&gt;length = ubound(myArray)&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;while count &lt;= length &lt;li&gt;path = path + myArray(count) + "\"&lt;/li&gt;&lt;li&gt;count = count + 1&lt;/li&gt;&lt;li&gt;if not outputfileObject.FolderExists(path) then &lt;/li&gt;&lt;ul&gt;outputfileObject.CreateFolder(path)&lt;/ul&gt;&lt;li&gt;end if&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;wend&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;ul&gt;wscript.echo "Created Dir: "&amp;newPath&amp;amp;" &lt;-- makeDirectory() "&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;end sub&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-454141334119821953?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/454141334119821953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=454141334119821953' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/454141334119821953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/454141334119821953'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/04/vbscript-fun-create-file-system.html' title='VBScript Fun - Create a File System Directory'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-1827162271319811054</id><published>2007-04-03T14:14:00.000-07:00</published><updated>2007-04-04T07:22:25.653-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual SourceSafe'/><title type='text'>VB.NET - Visual SourceSafe Journal Monitor Service</title><content type='html'>During an interview with a prospective employee last week, we got to talking about Visual SourceSafe.&lt;br /&gt;&lt;br /&gt;He remarked that while VSS provides solid version control facilities, the reporting was lacking. How do you get a snapshot of the VSS activity for a time period, or for a person?&lt;br /&gt;&lt;br /&gt;VSS is project-centric, providing history for a project. If you want info on activity for a time period or a person, you are left to eyeball the journal (text file), provided you have one configured.&lt;br /&gt;&lt;br /&gt;This guy brought up a good point, and it was clear from the discussion that he was used to working with the tool. But I got to thinking. The VSS Journal is a list of entries like the following:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;$/MyApp/bin/MyApp.dll&lt;br /&gt;Version: 10&lt;br /&gt;User: diablopup Date: 4/03/07 Time: 4:10p&lt;br /&gt;Checked in&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Couldn't we parse this file into a normalized database, indexed, say, by VSS Path, User, DateTime? Then I thought, I bet someone has done this before. A little Google research, and...&lt;strong&gt;Thank you, &lt;a href="http://www.lewismoten.com"&gt;Lewis Moten&lt;/a&gt;!&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;He created this neat &lt;a href="http://www.codeproject.com/vb/net/LmVMS.asp"&gt;Windows Service&lt;/a&gt;. Not only does it parse the journal data into a database, it keeps the database up to date by polling the journal file on a regular basis.&lt;br /&gt;&lt;br /&gt;You can also configure it to send you notifications as a project is updated, or even to send you an instant message from MSN Messenger (I found this feature distracting, and removed it). Team Foundation Server is supposed to have these features built-in, but you (like me) may not be using it at your company for awhile.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-1827162271319811054?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/1827162271319811054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=1827162271319811054' title='304 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/1827162271319811054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/1827162271319811054'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/04/vbnet-visual-sourcesafe-journal-monitor.html' title='VB.NET - Visual SourceSafe Journal Monitor Service'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>304</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-2608040021397473201</id><published>2007-04-02T07:54:00.000-07:00</published><updated>2007-04-02T09:05:11.603-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reflection'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>C# Reflection Example - Debug or Release?</title><content type='html'>Use .NET reflection to gather information about the current application.&lt;br /&gt;&lt;br /&gt;For example, to verify whether the current application was compiled in release or debug mode:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Inspect the Attributes collection of the Assembly object specified by a dll path. &lt;/li&gt;&lt;li&gt;Find the Attribute of type DebuggableAttribute.&lt;/li&gt;&lt;li&gt;Check that Attribute's IsJITTrackingEnabled property.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Here is a &lt;a href="http://diabolopup.spaces.live.com/blog/cns!1994C13E86FA7652!117.entry"&gt;link to the code&lt;/a&gt;.&lt;/p&gt;I used it to display the compile mode in an About screen:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_9ZIc5p2Ogko/RhEhnTOCIeI/AAAAAAAAAA8/Dig3h5ytJ7o/s1600-h/about.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5048853616316785122" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_9ZIc5p2Ogko/RhEhnTOCIeI/AAAAAAAAAA8/Dig3h5ytJ7o/s400/about.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-2608040021397473201?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/2608040021397473201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=2608040021397473201' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/2608040021397473201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/2608040021397473201'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/04/c-reflection-example-debug-or-release.html' title='C# Reflection Example - Debug or Release?'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_9ZIc5p2Ogko/RhEhnTOCIeI/AAAAAAAAAA8/Dig3h5ytJ7o/s72-c/about.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-89853407698295862</id><published>2007-03-30T09:15:00.000-07:00</published><updated>2007-03-30T09:50:28.380-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Registry'/><title type='text'>C# Class for Routine Registry Lookups</title><content type='html'>Say you need to store a lot of application configuration data in the system registry. Why would you need to do this, when you can use various .NET .config files?&lt;br /&gt;&lt;br /&gt;The idea may seem kind of archaic, but you may work with web servers that have been around a long time, where legacy ASP and ASP.NET applications cohabitate. Different applications that live on these servers were probably written by different groups separate by geography and time. Standards become important in such an environment! Registry use is not an uncommon standard.&lt;br /&gt;&lt;br /&gt;Okay, that's the long scenario explanation... Should you need to make repeated trips to a registry key or its subkeys, here is a &lt;a href="http://diabolopup.spaces.live.com/blog/cns!1994C13E86FA7652!116.entry"&gt;C# class&lt;/a&gt; to facilitate. The functions make use of the static Microsoft.Win32.Registry object.&lt;br /&gt;&lt;br /&gt;Example of usage:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_9ZIc5p2Ogko/Rg0-pjOCIdI/AAAAAAAAAA0/_USrYFD9IKA/s1600-h/appconfigs.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5047759640901853650" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_9ZIc5p2Ogko/Rg0-pjOCIdI/AAAAAAAAAA0/_USrYFD9IKA/s400/appconfigs.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://bp3.blogger.com/_9ZIc5p2Ogko/Rg0-LjOCIcI/AAAAAAAAAAs/CdBervjajcE/s1600-h/appconfigs.gif"&gt;&lt;/a&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Please Note: to read registry settings successfully, the authenticated user of the ASP.NET application must have read access to the specified registry key. &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-89853407698295862?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/89853407698295862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=89853407698295862' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/89853407698295862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/89853407698295862'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/03/c-class-for-routine-registry-lookups.html' title='C# Class for Routine Registry Lookups'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_9ZIc5p2Ogko/Rg0-pjOCIdI/AAAAAAAAAA0/_USrYFD9IKA/s72-c/appconfigs.gif' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-8736377263126785883</id><published>2007-03-29T14:07:00.000-07:00</published><updated>2007-08-28T07:44:06.996-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CDOSys'/><category scheme='http://www.blogger.com/atom/ns#' term='IIS'/><category scheme='http://www.blogger.com/atom/ns#' term='CDONTS'/><title type='text'>CDOSYS/CDOSYS - an Email Function that Works with Either</title><content type='html'>Say you have an extremely OLD classic ASP application, written circa 1999. Your company's CIO has mandated that all applications be migrated to new (Windows 2003/IIS6) servers.&lt;br /&gt;&lt;br /&gt;Stuff that worked in IIS4-5 doesn't always work in IIS6. Emailing using the old CDONTS.NewMail object is trouble.&lt;br /&gt;&lt;br /&gt;To prepare for the migration, you want a single code base that works on the old and the new server. The following &lt;a href="http://diablopup.net/post/Migrating-to-IIS-60---Gotchas---Part-1---CDONTS.aspx"&gt;functions &lt;/a&gt;, based on the "SERVER_SOFTWARE" server variable, will help.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-8736377263126785883?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/8736377263126785883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=8736377263126785883' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/8736377263126785883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/8736377263126785883'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/03/cdosyscdosys-email-function-that-works.html' title='CDOSYS/CDOSYS - an Email Function that Works with Either'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-8471460362264370209</id><published>2007-03-28T08:01:00.000-07:00</published><updated>2007-03-29T14:37:28.685-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IE Web Controls'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><title type='text'>Internet Explorer Web Controls - Simple TreeView Implementation</title><content type='html'>Wiring up a TreeView component can be tricky the first time, particularly if you've never seen it done. The following is a simple example of a Treeview hierarchy with multiple, external XML sources.&lt;br /&gt;&lt;br /&gt;Code moved to &lt;a href="http://diabolopup.spaces.live.com/blog/cns!1994C13E86FA7652!113.entry"&gt;Live Spaces &lt;/a&gt;blog for readability.&lt;br /&gt;Here is the result:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_9ZIc5p2Ogko/RgqERjOCIbI/AAAAAAAAAAk/A5PmpHX3Dao/s1600-h/treeview.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5046991769468805554" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_9ZIc5p2Ogko/RgqERjOCIbI/AAAAAAAAAAk/A5PmpHX3Dao/s400/treeview.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-8471460362264370209?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/8471460362264370209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=8471460362264370209' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/8471460362264370209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/8471460362264370209'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/03/internet-explorer-web-controls-simple.html' title='Internet Explorer Web Controls - Simple TreeView Implementation'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_9ZIc5p2Ogko/RgqERjOCIbI/AAAAAAAAAAk/A5PmpHX3Dao/s72-c/treeview.gif' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-5440281449783368798</id><published>2007-03-27T14:45:00.000-07:00</published><updated>2007-04-25T12:39:44.264-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Glossary'/><title type='text'>IT Jargon - "Time Stamp"</title><content type='html'>Time Stamp - to create some meaningless electronic record, usually an email, to prove that you showed up to work today. The record does not represent any real artifact of work or problem solved; it simply proves to anyone keeping track that you bothered to log in. Example of a meaningless time stamp-type message:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_9ZIc5p2Ogko/RgmYO9_v9NI/AAAAAAAAAAc/ToxginRPlpk/s1600-h/stamper.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5046732240372888786" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_9ZIc5p2Ogko/RgmYO9_v9NI/AAAAAAAAAAc/ToxginRPlpk/s400/stamper.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;Wow, that was a helpful nugget! We sure are lucky to have this guy on our team. He's always on the lookout for new developments.&lt;br /&gt;&lt;br /&gt;"Time Stamping" is a behavior common in matrixed, distributed organizations. E.G., you work for a technical department with say, 100 "resources", 1-2 directors who actually sign off on budgets and merit increases, and many project managers with some accountability and little authority.&lt;br /&gt;&lt;br /&gt;For the "resources" in such an organization, it can be easy to hide and live by "time stamping" while working from home, shopping online and engaging in self-abuse. Look around, you probably know some "Time Stampers". Or maybe you are one. If so, good for you! Hopefully you are saving the money you are stealing, because the free ride won't last forever.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-5440281449783368798?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/5440281449783368798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=5440281449783368798' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/5440281449783368798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/5440281449783368798'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/03/it-jargon-time-stamp.html' title='IT Jargon - &quot;Time Stamp&quot;'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_9ZIc5p2Ogko/RgmYO9_v9NI/AAAAAAAAAAc/ToxginRPlpk/s72-c/stamper.gif' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-2829014876455837111</id><published>2007-03-26T09:08:00.000-07:00</published><updated>2007-03-26T10:10:03.762-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Machine.config'/><title type='text'>C# Console App to Update Machine.config</title><content type='html'>I store proprietary information in our company's web servers' Machine.config's in order to manipulate the behavior of multiple applications. E.G., an appSetting determines whether the current machine is used for shared development, integration, pre-production testing, or production.&lt;br /&gt;&lt;br /&gt;Unfortunately, I am not an administrator on the servers. No, we have outsourced that privilege to a vendor without accountability. Sound like an accident waiting to happen? That's a story for another day...&lt;br /&gt;&lt;br /&gt;Anyway I can send a ticket to their help desk to have someone add the &amp;lt;appsettings&amp;gt; section if it doesn't exist, and then add my "Environment" key. But how do I trust that the person who picks up the ticket knows the first thing about where the appSettings section goes within Machine.config or its case-sensitive nature? I CAN'T.&lt;br /&gt;&lt;br /&gt;The following is code for a console app that will update Machine.config according to your command line arguments:&lt;br /&gt;&lt;br /&gt;Code snippet moved to my &lt;a href="http://diabolopup.spaces.live.com/blog/cns!1994C13E86FA7652!112.entry"&gt;Windows Live Spaces Blog&lt;/a&gt;, for better readability.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-2829014876455837111?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/2829014876455837111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=2829014876455837111' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/2829014876455837111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/2829014876455837111'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/03/c-console-app-to-update-machineconfig.html' title='C# Console App to Update Machine.config'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-8032307197373379829</id><published>2007-03-23T07:16:00.000-07:00</published><updated>2007-03-23T11:50:33.053-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IIS Administration'/><category scheme='http://www.blogger.com/atom/ns#' term='IE Web Controls'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>IE Web Controls - Tree View - Client Scripts</title><content type='html'>The IEWC Tree View component is useful if you are writing an ASP.NET 1.1 application and need to display a relatively large collapsible hierarchy (tree structure).&lt;br /&gt;&lt;br /&gt;During installation (addressed in an earlier blog), a "/webctrl_client" directory is added to your default web site (c:\inetpub\wwwroot\webctrl_client). By default, the treeview component uses this location to reference the client-side scripts for image rendering and click behavior.&lt;br /&gt;&lt;br /&gt;If you have a shared server environment with multiple web sites (Win2k Server or Win2k3 server), you have to copy this webctrl_client folder to the home directories of each site using the controls.&lt;br /&gt;&lt;br /&gt;Alternatively, you can define a custom location in your web.config. This would allow you to set up a virtual directory and maintain the webctrl_client stuff in a SINGLE PLACE.&lt;br /&gt;&lt;br /&gt;Here is close to the syntax to add to your web.config, directly within the section. &lt;br /&gt;&lt;br /&gt;&amp;lt;configSections&amp;gt;&lt;br /&gt;  &amp;lt;section name="MicrosoftWebControls" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.3300.0,Culture=neutral,PublicKeyToken=b77a5c561934e089"/&amp;gt;&lt;br /&gt;  &amp;lt;/configSections&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;MicrosoftWebControls&amp;gt;&lt;br /&gt;  &amp;lt;add key="CommonFiles" value="/iistreeprint.net/webctrl_client/1_0/" /&amp;gt;&lt;br /&gt;  &amp;lt;/MicrosoftWebControls&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-8032307197373379829?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/8032307197373379829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=8032307197373379829' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/8032307197373379829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/8032307197373379829'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/03/ie-web-controls-tree-view-client.html' title='IE Web Controls - Tree View - Client Scripts'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-1603123981678779162</id><published>2007-03-22T10:59:00.000-07:00</published><updated>2007-08-24T12:53:48.242-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VBScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual SourceSafe'/><title type='text'>Visual SourceSafe Automation - Extracting a Project</title><content type='html'>This post moved to &lt;a href="http://diablopup.net/post/Visual-SourceSafe-Automation---Extracting-a-Project.aspx"&gt;diablopup.net&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-1603123981678779162?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/1603123981678779162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=1603123981678779162' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/1603123981678779162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/1603123981678779162'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/03/visual-sourcesafe-automation-extracting.html' title='Visual SourceSafe Automation - Extracting a Project'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-6004976333224073834</id><published>2007-03-21T12:59:00.000-07:00</published><updated>2007-04-30T14:32:56.190-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Search'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><title type='text'>Random Google Tip</title><content type='html'>The following Google Query will search for browsable directories on the internet containing music:&lt;br /&gt;&lt;br /&gt;-inurl (htm|html|php) intitle:"index of" +"last modified" +"parent directory" +description +size +(wmamp3) "Beatles"&lt;br /&gt;&lt;br /&gt;If you have the time or inclination, this could be useful. Thanks to straight-A for pointing this out.&lt;br /&gt;&lt;br /&gt;Enjoy&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-6004976333224073834?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/6004976333224073834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=6004976333224073834' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/6004976333224073834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/6004976333224073834'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/03/random-google-tip.html' title='Random Google Tip'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-6284041222589735807</id><published>2007-03-21T11:36:00.000-07:00</published><updated>2007-03-21T11:41:44.372-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VBScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Arrays'/><title type='text'>Sorting Arrays in VBScript - Part 2</title><content type='html'>Yesterday, I included a function to sort an array of numbers or strings. The following is a minor spin on that function, sorting an array of OBJECTS by their .name attribute. Pretty much all Microsoft-related objects have this name attribute. So you could sort an array of website objects, virtual directory objects, file objects, etc.&lt;br /&gt;&lt;br /&gt;Hope this helps somebody!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    '******************************************************************************************&lt;br /&gt;    ' SortObjectArrayByName - sort an array of objects by their name attributes&lt;br /&gt;    ' arrObj - incoming array of unsorted objects&lt;br /&gt;    '******************************************************************************************&lt;br /&gt;    function SortObjectArrayByName(arrObj)&lt;br /&gt;      dim i, j, temp&lt;br /&gt;      dim name0, name1, obj&lt;br /&gt;&lt;br /&gt;      for i = UBound(arrObj) - 1 To 0 Step -1&lt;br /&gt;          for j= 0 to i&lt;br /&gt;              set obj = arrObj(j)&lt;br /&gt;              name0 = obj.name&lt;br /&gt;              set obj = arrObj(j+1)&lt;br /&gt;              name1 = obj.Name&lt;br /&gt;              if name0 &gt; name1 then&lt;br /&gt;                set temp = arrObj(j+1)&lt;br /&gt;                set arrObj(j+1) = arrObj(j)&lt;br /&gt;                set arrObj(j) = temp&lt;br /&gt;              end if&lt;br /&gt;          next&lt;br /&gt;      next&lt;br /&gt;      SortObjectArrayByName = arrObj&lt;br /&gt;    end function&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-6284041222589735807?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/6284041222589735807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=6284041222589735807' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/6284041222589735807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/6284041222589735807'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/03/sorting-arrays-in-vbscript-part-2.html' title='Sorting Arrays in VBScript - Part 2'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-921167074207704291</id><published>2007-03-20T15:52:00.000-07:00</published><updated>2007-03-21T11:34:24.748-07:00</updated><title type='text'>Sorting Arrays in VBScript</title><content type='html'>Here's a simple function to sort your simple array. Hope it makes your life simpler.&lt;br /&gt;&lt;br /&gt;'****************************************************************************************** ' SortArray - sort a string or numeric array&lt;br /&gt;'****************************************************************************************** function SortArray(arrShort)&lt;br /&gt;dim i, j, temp&lt;br /&gt;for i = UBound(arrShort) - 1 To 0 Step -1&lt;br /&gt;for j= 0 to i&lt;br /&gt;if arrShort(j)&gt;arrShort(j+1) then&lt;br /&gt;temp=arrShort(j+1)&lt;br /&gt;arrShort(j+1)=arrShort(j)&lt;br /&gt;arrShort(j)=temp&lt;br /&gt;end if&lt;br /&gt;next&lt;br /&gt;next&lt;br /&gt;SortArray = arrShort&lt;br /&gt;end function&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-921167074207704291?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/921167074207704291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=921167074207704291' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/921167074207704291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/921167074207704291'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/03/sorting-arrays-in-vbscript.html' title='Sorting Arrays in VBScript'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-7054446960948862840</id><published>2007-03-20T15:33:00.000-07:00</published><updated>2007-03-20T15:41:33.167-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IE Web Controls'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Internet Explorer Web Controls - Installation</title><content type='html'>Here is an obscure, simple install package for the IE Web Controls, useful in ASP.NET 1.1:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=FAC6350C-8AD6-4BCA-8860-8A6AE3F64448&amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=FAC6350C-8AD6-4BCA-8860-8A6AE3F64448&amp;amp;displaylang=en&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It mentions that the controls are specifically for Content Management Server. Don't be fooled. They are the same controls. The CMS team seems to have taken it upon themselves to create a more user friendly install package.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-7054446960948862840?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/7054446960948862840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=7054446960948862840' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/7054446960948862840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/7054446960948862840'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/03/internet-explorer-web-controls.html' title='Internet Explorer Web Controls - Installation'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-2508489553043379044</id><published>2007-03-20T15:06:00.000-07:00</published><updated>2007-03-20T15:15:11.128-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VBScript'/><category scheme='http://www.blogger.com/atom/ns#' term='IIS Administration'/><category scheme='http://www.blogger.com/atom/ns#' term='ADSI'/><title type='text'>Programmatic IIS Administration - Selecting a Virtual Directory</title><content type='html'>This is a followup to an earlier post, &lt;a href="http://diablopup.blogspot.com/2007/03/programmatic-iis-administration.html"&gt;Selecting a Site&lt;/a&gt;. The following function will return a virtual directory object, which you can then manipulate (set Directory Security options, &lt;a href="http://diablopup.blogspot.com/2007/03/setting-aspnet-version-via-script.html"&gt;ASP.NET version&lt;/a&gt;, etc.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;'''''''''''''''''''''''''''''''''''''''''''''''''''''''''&lt;br /&gt;' This sub will pass back a VirtualDirectory from a given Website Name, Virtual Directory Child 'Name&lt;br /&gt;' Paramters: WebSite = Website Name&lt;br /&gt;' VirDirName = Virtual Directory Name&lt;br /&gt;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''&lt;br /&gt;function GetVirtualDirectory(WebSite,VirDirName)&lt;br /&gt;&lt;br /&gt;dim adspath,rootobj,WebSiteObj&lt;br /&gt;&lt;br /&gt;set WebSiteObj=GetWebSiteByName(WebSite)&lt;br /&gt;set rootObj=getObject(WebSiteObj.adsPath&amp;"/root")&lt;br /&gt;&lt;br /&gt;adspath=rootobj.adspath&lt;br /&gt;&lt;br /&gt;set GetVirtualDirectory=getObject(adspath&amp;amp;"/"&amp;amp;VirDirName)&lt;br /&gt;&lt;br /&gt;end function&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-2508489553043379044?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/2508489553043379044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=2508489553043379044' title='35 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/2508489553043379044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/2508489553043379044'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/03/programmatic-iis-administration_20.html' title='Programmatic IIS Administration - Selecting a Virtual Directory'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>35</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-3818909804448283191</id><published>2007-03-19T07:58:00.000-07:00</published><updated>2007-03-19T12:30:37.842-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VBScript'/><category scheme='http://www.blogger.com/atom/ns#' term='IIS Administration'/><category scheme='http://www.blogger.com/atom/ns#' term='Application Pools'/><title type='text'>Assign an Application Pool using VBScript</title><content type='html'>The following script will assign a given IIS object (site or virtual directory) to an existing application pool.&lt;br /&gt;&lt;br /&gt;Note that it relies on a helper function to check if the pool exists.&lt;br /&gt;&lt;br /&gt;It also makes sure that the current machine is Win2003 -- you can't specify pools in prior OS's. This OS check function was detailed in a previous blog&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;'****************************************************************************************** ' Name: SetAppPool&lt;br /&gt;' Description: Assign the IIS Object to an Application Pool (IIS 6 only)&lt;br /&gt;' Inputs: ObjApp (IIS Object), strAppPool (Pool to assign to)&lt;br /&gt;'******************************************************************************************&lt;br /&gt;sub SetAppPool(ObjApp, strAppPool)&lt;br /&gt;if instr(GetOS_Remote("."), "2K3") &lt;&gt; 0 then&lt;br /&gt;if AppPoolExists(strAppPool) then&lt;br /&gt;ObjApp.AppPoolId = strAppPool&lt;br /&gt;ObjApp.SetInfo&lt;br /&gt;logmsg "Set App Pool to " &amp; strAppPool&lt;br /&gt;else&lt;br /&gt;logmsg "Error: App Pool " &amp;amp; strAppPool &amp; " Not Found"&lt;br /&gt;end if&lt;br /&gt;else&lt;br /&gt;logmsg "Skip app pool setting; not a 2003 server"&lt;br /&gt;end if&lt;br /&gt;end sub&lt;br /&gt;&lt;br /&gt;'******************************************************************************************&lt;br /&gt;' Name: AppPoolExists&lt;br /&gt;' Description: See if the application pool exists (IIS 6 only)&lt;br /&gt;' Inputs: strAppPool&lt;br /&gt;'******************************************************************************************&lt;br /&gt;function AppPoolExists(strAppPool)&lt;br /&gt;dim objPool&lt;br /&gt;on error resume next&lt;br /&gt;Set objPool = GetObject("IIS://localhost/w3svc/AppPools/" &amp;amp; strAppPool)&lt;br /&gt;if err.number &lt;&gt; 0 then&lt;br /&gt;AppPoolExists = false&lt;br /&gt;else&lt;br /&gt;AppPoolExists = true&lt;br /&gt;end if&lt;br /&gt;end function&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-3818909804448283191?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/3818909804448283191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=3818909804448283191' title='24 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/3818909804448283191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/3818909804448283191'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/03/assign-application-pool-using-vbscript.html' title='Assign an Application Pool using VBScript'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>24</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-6556954693172487878</id><published>2007-03-16T14:52:00.000-07:00</published><updated>2007-08-09T14:48:08.073-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VBScript'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ADSI'/><title type='text'>Setting ASP.NET Version via Script</title><content type='html'>Say you have a web server running multiple versions of ASP.NET. Various applications, for better or for worse, depend on a specific version of ASP.NET (e.g. it works under 1.1; throws errors under 2.0).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here is a function for setting the version using ADSI automation:&lt;br /&gt;&lt;br /&gt;Code snippet moved to a &lt;a href="http://www.diablopup.net/post/Set-an-IIS-Object's-ASPNET-Version-Using-VBScript.aspx"&gt;dedicated blog&lt;/a&gt; for readability&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-6556954693172487878?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/6556954693172487878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=6556954693172487878' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/6556954693172487878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/6556954693172487878'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/03/setting-aspnet-version-via-script.html' title='Setting ASP.NET Version via Script'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-3314575949647333183</id><published>2007-03-16T10:20:00.000-07:00</published><updated>2007-03-19T12:31:18.871-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CDOSys'/><category scheme='http://www.blogger.com/atom/ns#' term='CDONTS'/><title type='text'>CDONTS, CDOSys, and a Blank Email Address</title><content type='html'>Anyone who has migrated a legacy ASP application to Win2003/IIS6 is familiar with CDONTS and CDOSys. Code that sends email via CDONTS stops working in W2k3/IIS6 because there is no CDONTS.dll! &lt;br /&gt;&lt;br /&gt;Code must be migrated from using CDONTS.NewMail to CDOSys.Message. Required changes are fairly straightforward.&lt;br /&gt;&lt;br /&gt;Here's a subtle difference: your ASP application under CDONTS will not visibly fail if you provide an empty string "" for the email address. Rather, the email message will fall into your ISP's bad mail bin. CDOSys, on the other hand, will throw an error, and the application will quit on the end user if the error is unhandled.&lt;br /&gt;&lt;br /&gt;Here are proof of concept scripts to show you the variance. You can run these from a command prompt:&lt;br /&gt;&lt;br /&gt;&lt;u&gt;CDONTS(Won't fail)&lt;/u&gt;&lt;br /&gt;wscript.echo "creating cdonts object!"&lt;br /&gt;dim mailObj : set mailObj = CreateObject ("CDONTS.NewMail")&lt;br /&gt;wscript.echo "created"&lt;br /&gt;mailObj.From = "&lt;a href="mailto:TestAddress@blogger.com"&gt;&lt;em&gt;TestAddress@blogger.com&lt;/em&gt;&lt;/a&gt;"&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;mailObj.To = ""&lt;/span&gt;&lt;br /&gt;mailObj.Subject = "hallo"&lt;br /&gt;mailObj.Body = "hello there"&lt;br /&gt;mailObj.BodyFormat = 1&lt;br /&gt;mailObj.MailFormat = 0&lt;br /&gt;mailObj.Send()&lt;br /&gt;wscript.echo "mail sent, supposedly"&lt;br /&gt;set mailObj = Nothing&lt;br /&gt;&lt;br /&gt;&lt;u&gt;CDOSys(Will Fail)&lt;/u&gt;&lt;br /&gt;dim objCDOMailer : Set objCDOMailer = CreateObject("CDO.Message")&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;objCDOMailer.To = ""&lt;/span&gt;&lt;br /&gt;objCDOMailer.From = "&lt;a href="mailto:TestAddress@blogger.com"&gt;&lt;em&gt;TestAddress@blogger.com&lt;/em&gt;&lt;/a&gt;"&lt;br /&gt;objCDOMailer.Subject = "hallo"&lt;br /&gt;objCDOMailer.TextBody = "hello there"&lt;br /&gt;objCDOMailer.Send set&lt;br /&gt;objCDOMailer=nothing&lt;br /&gt;wscript.echo "Message sent successfully!"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-3314575949647333183?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/3314575949647333183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=3314575949647333183' title='26 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/3314575949647333183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/3314575949647333183'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/03/cdonts-cdosys-and-blank-email-address.html' title='CDONTS, CDOSys, and a Blank Email Address'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>26</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-6734265806538358994</id><published>2007-03-15T10:53:00.000-07:00</published><updated>2007-03-15T10:56:48.308-07:00</updated><title type='text'>Apologies for Code Snippet Formatting</title><content type='html'>Readability called, and wanted to know why she wasn't invited to this blog.&lt;br /&gt;&lt;br /&gt;I clearly haven't mastered the posting editor. I hope to improve, or find a blog host with a better editor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-6734265806538358994?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/6734265806538358994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=6734265806538358994' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/6734265806538358994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/6734265806538358994'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/03/apologies-for-code-snippet-formatting.html' title='Apologies for Code Snippet Formatting'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-2775900827440546038</id><published>2007-03-15T09:24:00.000-07:00</published><updated>2007-03-16T15:11:17.025-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WMI'/><category scheme='http://www.blogger.com/atom/ns#' term='VBScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Operating System'/><title type='text'>Query a Machine's OS Using WMI</title><content type='html'>Say you need to automatically configure a bunch of servers with varying operating systems. The configuration you specify will vary by OS.&lt;br /&gt;&lt;br /&gt;For example, you can't set up an IIS Application Pool on Windows 2000, which does not run IIS 6, but you still want to install web applications and manage a similar IIS tree.&lt;br /&gt;&lt;br /&gt;Here is a function that returns an OS indicator. You can query a remote machine's OS, provided you have administrative access. To query the local machine, use "." for the machine argument.&lt;br /&gt;&lt;span style="font-size:0;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:0;"&gt;&lt;blockquote&gt;&lt;p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;span style="font-size:100%;color:#ff0000;"&gt;'***************************************************************&lt;br /&gt;' Get System OS from a Remote Machine&lt;br /&gt;'***************************************************************&lt;br /&gt;Function GetOS_Remote(strMachine)&lt;br /&gt;'WMI is required for this script to function&lt;br /&gt;&lt;br /&gt;Dim strComputer, strWMIOS&lt;br /&gt;&lt;br /&gt;Dim objWmiService : Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &amp; strMachine &amp;amp;&lt;br /&gt;"\root\cimv2")&lt;br /&gt;&lt;br /&gt;Dim strOsQuery : strOsQuery = "Select * from&lt;br /&gt;Win32_OperatingSystem"&lt;br /&gt;&lt;br /&gt;Dim colOperatingSystems : Set colOperatingSystems =&lt;br /&gt;objWMIService.ExecQuery(strOsQuery)&lt;br /&gt;&lt;br /&gt;Dim objOs&lt;br /&gt;&lt;br /&gt;Dim strOsVer&lt;br /&gt;For Each objOs in colOperatingSystems&lt;br /&gt;&lt;br /&gt;strWmios = objOs.Caption &amp; " " &amp;amp; objOs.Version&lt;br /&gt;&lt;br /&gt;Next&lt;br /&gt;&lt;br /&gt;Select Case True&lt;br /&gt;&lt;br /&gt;'Add more info to the 98 and 95 to get the specific version. i.e. 98SE 95 a,b,or c&lt;br /&gt;&lt;br /&gt;Case InStr(strWmiOS, "2000 Server") &gt; 1 : GetOS_Remote = "2KSRV"&lt;br /&gt;&lt;br /&gt;Case InStr(strWmiOS, "2003, Standard") &gt; 1 : GetOS_Remote = "2K3SRV"&lt;br /&gt;&lt;br /&gt;Case InStr(strWmiOS, "2003, Enterprise") &gt; 1 : GetOS_Remote = "2K3ENTSRV"&lt;br /&gt;&lt;br /&gt;Case InStr(strWmiOS, "2000 Advanced Server") &gt; 1 : GetOS_Remote = "2KADVSRV"&lt;br /&gt;&lt;br /&gt;Case InStr(strWmiOS, "Windows NT") &gt; 1 : GetOS_Remote = "NT4"&lt;br /&gt;&lt;br /&gt;Case InStr(strWmiOS, "Windows 2000") &gt; 1 : GetOS_Remote = "W2K"&lt;br /&gt;&lt;br /&gt;Case InStr(strWmiOS, "Windows XP") &gt; 1 : GetOS_Remote = "WXP"&lt;br /&gt;&lt;br /&gt;Case Else : GetOS_Remote = "Unknown"&lt;br /&gt;&lt;br /&gt;End Select&lt;br /&gt;&lt;br /&gt;End Function&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="font-size:0;"&gt;&lt;span style="font-size:0;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-2775900827440546038?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/2775900827440546038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=2775900827440546038' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/2775900827440546038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/2775900827440546038'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/03/query-machines-os-using-wmi.html' title='Query a Machine&apos;s OS Using WMI'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-214387608758037814</id><published>2007-03-14T15:21:00.000-07:00</published><updated>2007-03-14T15:49:24.182-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VBScript'/><category scheme='http://www.blogger.com/atom/ns#' term='IIS Administration'/><category scheme='http://www.blogger.com/atom/ns#' term='ADSI'/><title type='text'>Programmatic IIS Administration - Selecting a Site</title><content type='html'>Configuring a web server can be complicated, particularly if it is running multiple web sites, with multiple virtual directories under each site. Such a complex IIS tree requires many, many mouse clicks in order to configure according to specifications.&lt;br /&gt;&lt;br /&gt;And what happens if the server catches on fire? It may be a good idea to script the configuration. VBScript and the IIS ADSI objects offer a multitude of possibilities.&lt;br /&gt;&lt;br /&gt;Here is a simple VBscript function for selecting a site by name (which you can then configure with proper directory security, isolation level, host headers, etc...)&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;Function GetWebSiteByName(WebSiteName) &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;  dim rootObj,count,website &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;  set rootObj=GetObject("IIS://LocalHost/W3SVC")&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;  for each website in rootObj &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;    if LCase(website.class) = LCase("IIsWebServer") then &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;      if LCase(website.ServerComment)=LCase(WebSiteName) then &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;        set GetWebSiteByName=website &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;        exit function &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;      end if &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;    end if &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;  next&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#ff0000;"&gt;end Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Refer back for more Automated IIS Administration examples, using low-tech script :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-214387608758037814?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/214387608758037814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=214387608758037814' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/214387608758037814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/214387608758037814'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/03/programmatic-iis-administration.html' title='Programmatic IIS Administration - Selecting a Site'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2231495077010976685.post-1254412479199675827</id><published>2007-03-14T14:23:00.000-07:00</published><updated>2007-03-14T14:26:04.675-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='Version'/><title type='text'>Running your Web Application under the Wrong ASP.NET Version?</title><content type='html'>&lt;ul&gt;&lt;li&gt;You've built an ASP.NET 2.0 app in your c:\inetpub\wwwroot directory. &lt;/li&gt;&lt;li&gt;The app runs smashingly in VS.NET 2005 and when you run it from &lt;a href="http://localhost/yourapp"&gt;http://localhost/yourapp&lt;/a&gt; . &lt;/li&gt;&lt;li&gt;When you upload it to your host or deploy it to your company's production server, it doesn't work!&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Does this sound like a problem you've encountered? It's a familiar scenario.&lt;/p&gt;&lt;p&gt;Your application, built to ASP.NET 2.0, may be running under ASP.NET 1.1 or earlier. Symptoms include an inability for the ASP.NET engine to properly parse your web.config file. Or more specifically, yellow screens that include statements like:&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Parser Error Message: Unrecognized attribute 'xmlns'.&lt;/li&gt;&lt;li&gt;Parser Error Message: Unrecognized configuration section "xhtmlconformance"&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I would include the yellow screens, but the blog host won't upload my gifs. More later.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2231495077010976685-1254412479199675827?l=diablopup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://diablopup.blogspot.com/feeds/1254412479199675827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2231495077010976685&amp;postID=1254412479199675827' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/1254412479199675827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2231495077010976685/posts/default/1254412479199675827'/><link rel='alternate' type='text/html' href='http://diablopup.blogspot.com/2007/03/running-your-web-application-under.html' title='Running your Web Application under the Wrong ASP.NET Version?'/><author><name>Diablo</name><uri>http://www.blogger.com/profile/14281660960582546753</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
