<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">It's Spann, not spam</title><subtitle type="html">Technical blog to provide content that developers find useful.</subtitle><id>http://blogs.msdn.com/bspann/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/bspann/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/bspann/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2008-07-14T00:19:45Z</updated><entry><title>This Week’s Silverlight Postings</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/bspann/archive/2009/09/26/this-week-s-silverlight-postings.aspx" /><id>http://blogs.msdn.com/bspann/archive/2009/09/26/this-week-s-silverlight-postings.aspx</id><published>2009-09-26T16:34:19Z</published><updated>2009-09-26T16:34:19Z</updated><content type="html">&lt;p&gt;Continuing the Silverlight goodness that is out there.&amp;#160; Here is this week’s finds.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/martharotter/archive/2009/09/18/sketchflow-superpreview-talk-overview-slides.aspx" target="_blank"&gt;SketchFlow and SuperPreview Talk Overview and Slides&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlighttutorials.com/?p=71" target="_blank"&gt;Silverlight: How to read RSS in Silverlight 3&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://openlightgroup.net/Blog/tabid/58/EntryId/33/Secrets-of-the-Silverlight-Toolkit-TreeView-Control-Programmatically-selecting-a-Tree-Node.aspx" target="_blank"&gt;Secrets of the Silverlight Toolkit TreeView Control: Programmatically selecting a Tree Node&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.shazaml.com/archives/hidden-object-episode-1" target="_blank"&gt;Hidden Object: Episode 1 – Create the Project and Picture&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.andybeaulieu.com/Home/tabid/67/EntryID/170/Default.aspx" target="_blank"&gt;Glow Behavior&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://dotnetspeak.com/index.php/2009/09/assembly-caching-in-silverlight-3-0/" target="_blank"&gt;Assembly Caching in Silverlight 3.0&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://silverlighttoys.com/Tutorials.aspx" target="_blank"&gt;Navigation Application&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blog.flexforcefive.com/?p=180" target="_blank"&gt;Graphical Skinning via NineGrid&lt;/a&gt; (Screencast) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://silverlighthack.com/post/2009/09/20/Announcing-Next-Generation-Business-Intelligence-Software-with-Silverlight.aspx" target="_blank"&gt;Announcing Next Generation Business Intelligence Software with Silverlight&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.shazaml.com/archives/hidden-object-episode-2" target="_blank"&gt;Hidden Object: Episode 2 – Create the item list&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://bea.stollnitz.com/blog/?p=366" target="_blank"&gt;How can I port the WPF labeled pie chart to Silverlight?&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.shinedraw.com/animation-effect/silverlight-3-and-flash-xml-image-gallery2/" target="_blank"&gt;Silverlight 3 and Flash: XML Image Gallery2&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.davidpoll.com/2009/09/20/relative-hyperlinks-with-silverlight-navigation/" target="_blank"&gt;Relative hyperlinks with Silverlight navigation&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.nikhilk.net/RIA-Services-Fluent-Metadata-API.aspx" target="_blank"&gt;Fluent API for .NET RIA Services Metadata&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://silverlighttoys.com/Tutorials.aspx?tutorial=2" target="_blank"&gt;Child Windows&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/fredriknormen/archive/2009/09/18/create-an-automatic-scrollable-image-slider-in-silverlight.aspx" target="_blank"&gt;Create an automatic scrollable image slider in Silverlight&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.shazaml.com/archives/hidden-object-episode-3" target="_blank"&gt;Hidden Object: Episode 3 – Marking Items off the List&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://chris.59north.com/post/SilverTweet-Building-a-Silverlight-Twitter-client-part-2.aspx" target="_blank"&gt;SilverTweet – Building a Silverlight Twitter client part 2&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/canux/archive/2009/09/21/mini-tutorial-creating-a-reusable-glossy-button-in-blend.aspx" target="_blank"&gt;Creating a Reusable Glossy Button in Blend&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.veracitysolutions.com/color-image-scale-with-rgb-values/" target="_blank"&gt;Color Image Scale with RGB Values&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://silverlighttoys.com/Tutorials.aspx?tutorial=3" target="_blank"&gt;Pixel Shaders&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.shazaml.com/archives/hidden-object-episode-4" target="_blank"&gt;Hidden Object: Episode 4 – Adding Particles with a Behavior&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9899856" width="1" height="1"&gt;</content><author><name>bspann</name><uri>http://blogs.msdn.com/members/bspann.aspx</uri></author><category term="Silverlight 2" scheme="http://blogs.msdn.com/bspann/archive/tags/Silverlight+2/default.aspx" /><category term="Silverlight" scheme="http://blogs.msdn.com/bspann/archive/tags/Silverlight/default.aspx" /><category term="Silverlight 3" scheme="http://blogs.msdn.com/bspann/archive/tags/Silverlight+3/default.aspx" /></entry><entry><title>Silverlight Postings</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/bspann/archive/2009/09/19/silverlight-postings.aspx" /><id>http://blogs.msdn.com/bspann/archive/2009/09/19/silverlight-postings.aspx</id><published>2009-09-19T17:13:33Z</published><updated>2009-09-19T17:13:33Z</updated><content type="html">&lt;p&gt;This week I realized that there are so many good blog entries going on around me on the subject of Silverlight.&amp;#160; I have decided that I would share with you the ones I have found this week.&amp;#160; So here they are!&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blog.flexforcefive.com/?p=147" target="_blank"&gt;Graphical Skinning Comes to Silverlight&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.shazaml.com/archives/creating-a-hidden-object-game-in-silverlight-3" target="_blank"&gt;Creating a Hidden Object Game in Silverlight 3&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://chris.59north.com/post/SilverTweet-e28093-Building-a-Silverlight-Twitter-client-part-1.aspx" target="_blank"&gt;SilverTweet – Building a Silverlight Twitter client part 1&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.damonpayne.com/2009/09/17/ViewBasedNavigationInSilverlight3.aspx" target="_blank"&gt;View Based Navigation in Silverlight 3&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/phaniraj/archive/2009/09/10/using-the-ado-net-data-services-silverlight-client-library-in-x-domain-and-out-of-browser-scenarios-ii-forms-authentication.aspx" target="_blank"&gt;Using the ADO.NET Data Services Silverlight Client Library in x-domain and out of browser scenarios (Forms Authentication)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://johnpapa.net/silverlight/tell-the-debugger-to-ignore-silverlight-validation-exceptions/" target="_blank"&gt;Tell the Debugger to Ignore Silverlight Validation Exceptions&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://victorgaudioso.wordpress.com/2009/09/16/new-silverlight-video-tutorial-how-to-create-a-storyboard-helper-class/" target="_blank"&gt;New Silverlight Video Tutorial: How to Create a Storyboard Helper Class&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://jvdveen.blogspot.com/2009/09/adventures-while-building-silverlight_16.html" target="_blank"&gt;Adventures while building a Silverlight Enterprise application part No. 22&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://tomasz.janczuk.org/2009/09/scale-out-of-silverlight-http-polling.html" target="_blank"&gt;Scale-out of Silverlight HTTP polling duplex WCF service in a web farm scenario&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/fredriknormen/archive/2009/09/16/use-a-resourcedictionay-and-an-external-resources-located-in-an-assembly.aspx" target="_blank"&gt;Use a ResourceDictionay and an external resources located in an assembly&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/fredriknormen/archive/2009/09/15/silverlight-and-scaling.aspx" target="_blank"&gt;Silverlight and scaling&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.rshelby.com/post/exporting-data-from-silverilght-datagrid-to-excel.aspx" target="_blank"&gt;Exporting Data From Silverlight Datagrid to Excel&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlighttutorials.com/?p=75" target="_blank"&gt;Silverlight: How to obfuscate a font and use it in a Silverlight Application&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://electricbeach.org/?p=350" target="_blank"&gt;Video: Silverlight Button Control Styling by Steve White&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.shinedraw.com/image-manipulation/silverlight-3-and-flash-xml-image-gallery/" target="_blank"&gt;Silverlight 3 and Flash: XML Image Gallery&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://pendsevikram.blogspot.com/2009/09/silverlight-3-datagrid-beyond.html" target="_blank"&gt;Silverlight 3 DataGrid: Beyond Databinding&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://victorgaudioso.wordpress.com/2009/09/14/new-silverlight-video-tutorial-importing-photoshop-files-into-expression-blend-3/" target="_blank"&gt;New Silverlight Video Tutorial: Importing Photoshop files into Expression Blend 3&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blog.flexforcefive.com/?p=98" target="_blank"&gt;Various Visual Studio BuildAction values for Silverlight files explained&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://stulic.blogspot.com/2009/09/silverlight-savefiledialog-doesnt-work.html" target="_blank"&gt;Silverlight SaveFileDialog doesn’t work in Opera&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.rshelby.com/post/creating-excel-worksheet-from-silverlight.aspx" target="_blank"&gt;Creating Excel Worksheet from Silverlight&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/jstegman/archive/2009/09/13/silverlight-ico-icon-decoder-parser.aspx" target="_blank"&gt;Silverlight ICO/ICON Decoder (Parser)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlighttutorials.com/?p=77" target="_blank"&gt;Silverlight Build Actions&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.silverlighttutorials.com/?p=68" target="_blank"&gt;Silverlight: Detect Network Changes&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://mark.mymonster.nl/2009/09/11/openid-user-control-in-silverlight-part-2-openid-integration/" target="_blank"&gt;OpenID User Control in Silverlight – Part 2 OpenID Integration&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.kirupa.com/blend_silverlight/custom_vsm_pg1.htm" target="_blank"&gt;Using Custom Visual States - Page 1&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://wildermuth.com/2009/09/10/Using_Large_Message_Requests_in_Silverlight_with_WCF" target="_blank"&gt;Using Large Message Requests in Silverlight with WCF&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.nikhilk.net/ViewModel-Dialogs-Task-Pattern.aspx" target="_blank"&gt;Dialogs and ViewModel - Using Tasks as a Pattern&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/ee294456.aspx" target="_blank"&gt;Data Performance and Fault Strategies in Silverlight 3&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/expression/archive/2009/09/09/silverlight-control-styling-tips-articles.aspx" target="_blank"&gt;Silverlight Control Styling Tips Articles&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.shinedraw.com/animation-effect/silverlight-3-vs-flash-digital-clock-demonstration/" target="_blank"&gt;Silverlight 3 vs Flash: Digital Clock Demonstration&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://expression.microsoft.com/en-us/library/cc375008(Expression.30).aspx" target="_blank"&gt;Slices overview&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.veracitysolutions.com/how-to-animate-a-changing-property-in-a-custom-control-in-silverlight/" target="_blank"&gt;How To Animate a Changing Property in a Custom Control in Silverlight&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.cynergysystems.com/blogs/page/rickbarraza?entry=rendering_vector_fields_in_silverlight" target="_blank"&gt;Rendering Vector Fields in Silverlight&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;And a good one to bookmark –&amp;gt; &lt;a href="http://www.microsoft.com/silverlight/resources/resource-kit.aspx" target="_blank"&gt;Silverlight Resource Kit&lt;/a&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:b8e5dddc-30ea-4e6a-a476-84ad1dc5415b" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Silverlight" rel="tag"&gt;Silverlight&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9897124" width="1" height="1"&gt;</content><author><name>bspann</name><uri>http://blogs.msdn.com/members/bspann.aspx</uri></author><category term="Silverlight 2" scheme="http://blogs.msdn.com/bspann/archive/tags/Silverlight+2/default.aspx" /><category term="Silverlight" scheme="http://blogs.msdn.com/bspann/archive/tags/Silverlight/default.aspx" /><category term="Silverlight 3" scheme="http://blogs.msdn.com/bspann/archive/tags/Silverlight+3/default.aspx" /></entry><entry><title>Zune HD Preorder!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/bspann/archive/2009/08/13/zune-hd-preorder.aspx" /><id>http://blogs.msdn.com/bspann/archive/2009/08/13/zune-hd-preorder.aspx</id><published>2009-08-13T22:00:51Z</published><updated>2009-08-13T22:00:51Z</updated><content type="html">&lt;p&gt;Zune HD will launch on September 15 and is now available for preorder. The 16-gigabyte (GB) version will cost $220, and the 32-GB version will be $290.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://arstechnica.com/microsoft/news/2009/08/zune-hd-16gb-is-220-32gb-is-290-coming-on-september-15.ars" href="http://arstechnica.com/microsoft/news/2009/08/zune-hd-16gb-is-220-32gb-is-290-coming-on-september-15.ars"&gt;http://arstechnica.com/microsoft/news/2009/08/zune-hd-16gb-is-220-32gb-is-290-coming-on-september-15.ars&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.zune.net/en-us/mp3players/zunehd/default.htm" href="http://www.zune.net/en-us/mp3players/zunehd/default.htm"&gt;http://www.zune.net/en-us/mp3players/zunehd/default.htm&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9868665" width="1" height="1"&gt;</content><author><name>bspann</name><uri>http://blogs.msdn.com/members/bspann.aspx</uri></author><category term="Zune" scheme="http://blogs.msdn.com/bspann/archive/tags/Zune/default.aspx" /><category term="Zune HD" scheme="http://blogs.msdn.com/bspann/archive/tags/Zune+HD/default.aspx" /></entry><entry><title>Windows 7</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/bspann/archive/2009/08/13/windows-7.aspx" /><id>http://blogs.msdn.com/bspann/archive/2009/08/13/windows-7.aspx</id><published>2009-08-13T06:37:40Z</published><updated>2009-08-13T06:37:40Z</updated><content type="html">&lt;p&gt;I have upgraded my machine from Windows 7 RC to Windows 7 RTM.&amp;#160; I have found two new tips that I thought I would share with the world.&amp;#160; Although I think these tips were in the previous builds but I just came across them.&amp;#160; So if these are a repeat, sorry!&lt;/p&gt;  &lt;p&gt;&lt;font size="5"&gt;Live Clutter-Free&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Windows 7 gets rid of all the extra windows behind your active window.&amp;#160; Just hit Win+Home to minimize all inactive windows.&amp;#160; To restore the windows when you would like them, just press Win+Home again.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="5"&gt;Help the Help Desk Help You&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Solving problems unique to a machine can be an arduous task for both the end-user and the help desk. That’s why Windows 7 introduces the Problem Steps Recorder, a screen-capture tool that allows the end-user to record the problems they’re having step-by-step. It’s as simple as hitting “record” then adding in comments as needed. A HTML-based file is converted to a .ZIP folder, which is easily passed on to the help desk. The program is accessible from the Control Panel under “Record steps to reproduce a problem” or run &lt;b&gt;psr.exe&lt;/b&gt; from Explorer.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:54d068f9-62af-4164-8508-bc3d89721df3" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Windows+7" rel="tag"&gt;Windows 7&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9867575" width="1" height="1"&gt;</content><author><name>bspann</name><uri>http://blogs.msdn.com/members/bspann.aspx</uri></author><category term="Windows 7" scheme="http://blogs.msdn.com/bspann/archive/tags/Windows+7/default.aspx" /><category term="Windows 7 Tips" scheme="http://blogs.msdn.com/bspann/archive/tags/Windows+7+Tips/default.aspx" /></entry><entry><title>Exporting Binary Files Inside SharePoint WebPart</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/bspann/archive/2009/06/29/exporting-binary-files-inside-sharepoint-webpart.aspx" /><id>http://blogs.msdn.com/bspann/archive/2009/06/29/exporting-binary-files-inside-sharepoint-webpart.aspx</id><published>2009-06-29T22:14:25Z</published><updated>2009-06-29T22:14:25Z</updated><content type="html">&lt;p&gt;So today I ran into an issue that has sure to have plagued the SharePoint developer community in the past.&amp;nbsp; My requirement was to export data rendered in a grid to Excel.&amp;nbsp; Seems simple enough.&amp;nbsp; &lt;/p&gt; &lt;p&gt;So I have a DevExpress ASPxGridView control and a DevExpress ASPxGridViewExporter control inside my WebPart.&amp;nbsp; Everything was working as expected.&amp;nbsp; Here is the initial code:&lt;/p&gt; &lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; btnXlsExport_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    DoDataBinding();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    GridViewExporter.WriteXlsToResponse();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Deployed my WebPart and the trouble begins…&lt;/p&gt;
&lt;p&gt;After spending half a day trying to figure out why my WebPart or for that matter, my Page would stop responding after I exported to Excel, I found a &lt;a href="http://msmvps.com/blogs/laflour/archive/2008/06/06/page-events-stop-working-after-using-output-stream-for-binary-download.aspx" target="_blank"&gt;post&lt;/a&gt; that explained it so well.&amp;nbsp; Basically the problem is with the javascript that SharePoint embeds into every page for you.&amp;nbsp; SharePoint wants to make your life easier by protecting you from unnecessary double-posts.&amp;nbsp; Well unfortunately that is the cause of the stream output rendering your page useless.&lt;/p&gt;
&lt;p&gt;The fix:&lt;/p&gt;
&lt;p&gt;First you need to add the following to your button’s ClientClick event.&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre style="width: 125.83%; height: 49px" class="alt"&gt;&lt;p&gt;&lt;font size="1"&gt;&amp;lt;asp:Button ID=&lt;span class="str"&gt;"ExcelExport"&lt;/span&gt; runat=&lt;span class="str"&gt;"server"&lt;/span&gt; Text=&lt;span class="str"&gt;"Export to Excel"&lt;/span&gt; OnClick=&lt;span class="str"&gt;"btnXlsExport_Click"&lt;/span&gt; &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size="1"&gt;CausesValidation=&lt;span class="str"&gt;"false"&lt;/span&gt; OnClientClick=&lt;span class="str"&gt;"exportRequested=true;"&lt;/span&gt; /&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Second, you need to add the following code to the OnLoad event of the Page/Control.&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;font size="1"&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; startupScriptKey = &lt;span class="str"&gt;"alterFormSubmitEvent"&lt;/span&gt;;

&lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; OnLoad(EventArgs e)
{
    &lt;span class="kwrd"&gt;base&lt;/span&gt;.OnLoad(e);
    
    &lt;span class="kwrd"&gt;if&lt;/span&gt;(!&lt;span class="kwrd"&gt;this&lt;/span&gt;.Page.IsStartupScriptRegistered(startupScriptKey))
    {
        StringBuilder beforeSubmitJS = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringBuilder();
        beforeSubmitJS.Append(&lt;span class="str"&gt;"var beforeFormSubmitFunction = theForm.onsubmit; \n"&lt;/span&gt;);
        beforeSubmitJS.Append(&lt;span class="str"&gt;"theForm.onsubmit = function(){ \n"&lt;/span&gt;);
        beforeSubmitJS.Append(&lt;span class="str"&gt;"var returnVal = beforeFormSubmitFunction(); \n"&lt;/span&gt;);
        beforeSubmitJS.Append(&lt;span class="str"&gt;"if(exportRequested &amp;amp;&amp;amp; returnVal)"&lt;/span&gt;);
        beforeSubmitJS.Append(&lt;span class="str"&gt;"{_spFormOnSubmitCalled=false; exportRequested=false;} \n"&lt;/span&gt;);
        beforeSubmitJS.Append(&lt;span class="str"&gt;"return returnVal; \n"&lt;/span&gt;);
        beforeSubmitJS.Append(&lt;span class="str"&gt;"}; \n"&lt;/span&gt;);

        &lt;span class="kwrd"&gt;this&lt;/span&gt;.Page.ClientScript.RegisterStartupScript(
            &lt;span class="kwrd"&gt;this&lt;/span&gt;.GetType(), 
            startupScriptKey, 
            beforeSubmitJS.ToString(), 
            &lt;span class="kwrd"&gt;true&lt;/span&gt;);
     }
 }&lt;/font&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;div class="csharpcode"&gt;&lt;pre&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Finally, deploy your WebPart to the SharePoint site.&amp;nbsp; You now have a responsive page and exporting the binary files that your users wanted!&lt;/p&gt;
&lt;p&gt;Many thanks go out to &lt;a href="http://msmvps.com/blogs/laflour/archive/2008/06/06/page-events-stop-working-after-using-output-stream-for-binary-download.aspx" target="_blank"&gt;Michael Nemtsev&lt;/a&gt; and &lt;a href="https://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.sharepoint.development_and_programming&amp;amp;tid=cc356848-b0d8-4a60-8176-6df1bd44eb55&amp;amp;cat=&amp;amp;lang=&amp;amp;cr=&amp;amp;sloc=&amp;amp;p=1" target="_blank"&gt;Andy Spears&lt;/a&gt; for the great work.&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:1d2471fb-beee-48f1-8365-6899b1038563" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MOSS+2007" rel="tag"&gt;MOSS 2007&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WSS+3.0" rel="tag"&gt;WSS 3.0&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WebPart" rel="tag"&gt;WebPart&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9808852" width="1" height="1"&gt;</content><author><name>bspann</name><uri>http://blogs.msdn.com/members/bspann.aspx</uri></author><category term="WSS v3 SP1" scheme="http://blogs.msdn.com/bspann/archive/tags/WSS+v3+SP1/default.aspx" /><category term="MOSS 2007 SP1" scheme="http://blogs.msdn.com/bspann/archive/tags/MOSS+2007+SP1/default.aspx" /><category term="Microsoft Office SharePoint Server 2007 SP1" scheme="http://blogs.msdn.com/bspann/archive/tags/Microsoft+Office+SharePoint+Server+2007+SP1/default.aspx" /><category term="SharePoint Server 2007 SP1" scheme="http://blogs.msdn.com/bspann/archive/tags/SharePoint+Server+2007+SP1/default.aspx" /><category term="WebPart" scheme="http://blogs.msdn.com/bspann/archive/tags/WebPart/default.aspx" /></entry><entry><title>IIS SEO Toolkit Beta</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/bspann/archive/2009/06/03/iis-seo-toolkit-beta.aspx" /><id>http://blogs.msdn.com/bspann/archive/2009/06/03/iis-seo-toolkit-beta.aspx</id><published>2009-06-03T20:01:31Z</published><updated>2009-06-03T20:01:31Z</updated><content type="html">&lt;p&gt;The IIS team today announced the IIS Search Engine Optimization (SEO) Toolkit beta – a free toolkit that helps Web developers, hosting providers, and server administrators improve their site’s relevance in search results by recommending how to make them more search engine friendly.&amp;#160; The SEO Toolkit Beta is available for installation via the &lt;a href="http://www.microsoft.com/web/downloads/platform.aspx" target="_blank"&gt;Microsoft Web Platform Installer 2.0 Beta&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The IIS SEO Toolkit can:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Improve the volume and quality of traffic to Web site from search engines.&lt;/li&gt;    &lt;li&gt;Control how search engines access and display Web content.&lt;/li&gt;    &lt;li&gt;Inform search engines about locations that are available for indexing.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The IIS SEO Toolkit includes three modules that integrate with IIS Manager.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Site Analysis&lt;/strong&gt;, which suggests changes that can help improve the volume and quality of traffic to your Web site from search engines.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Robots Exclusion&lt;/strong&gt;, which makes it easier to control and restrict the content that search engines index and display.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Sitemaps and Site Indexes&lt;/strong&gt;, which can help inform search engines about locations that are available for indexing.&lt;/li&gt; &lt;/ul&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:9222fe23-693a-43c4-bcdc-c55eccaf9d2f" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/IIS+SEO+Toolkit" rel="tag"&gt;IIS SEO Toolkit&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9691860" width="1" height="1"&gt;</content><author><name>bspann</name><uri>http://blogs.msdn.com/members/bspann.aspx</uri></author><category term="IIS SEO Toolkit" scheme="http://blogs.msdn.com/bspann/archive/tags/IIS+SEO+Toolkit/default.aspx" /></entry><entry><title>VS2010 Beta 1 Extensibility</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/bspann/archive/2009/05/22/vs2010-beta-1-extensibility.aspx" /><id>http://blogs.msdn.com/bspann/archive/2009/05/22/vs2010-beta-1-extensibility.aspx</id><published>2009-05-22T02:12:55Z</published><updated>2009-05-22T02:12:55Z</updated><content type="html">&lt;p&gt;While reading my email, I came across a message that looked very interesting.&amp;#160; It was an email in regards to the extensibility of the Visual Studio 2010 Beta 1.&amp;#160; Back in fall at the PDC conference, the Visual Studio team showed off how easy it was to extend Visual Studio.&amp;#160; So you might be asking yourself, well so!&amp;#160; &lt;/p&gt;  &lt;p&gt;Examples of cool things you can do:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Overlay rich metadata on top of the editor to bring new information to your fingertips.&lt;/li&gt;    &lt;li&gt;Develop new project templates to accelerate your work.&lt;/li&gt;    &lt;li&gt;Create innovative user interface elements using the WPF shell.&lt;/li&gt;    &lt;li&gt;Upload your extension to the &lt;a href="http://visualstudiogallery.com" target="_blank"&gt;Visual Studio Gallery&lt;/a&gt; to find it in the Extension Manager.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Just from looking at the stuff available from the gallery, I think the RegEx Editor Sample is very promising.&amp;#160; I can’t tell you how many times I have gone out to the internet to find Regex engine to help parse strings.&lt;/p&gt;  &lt;p&gt;Have a look for yourself.&amp;#160; Maybe you will find a tool that will help take a burden from your daily coding.&amp;#160; If you feel lucky, maybe you will be the next developer to write the next best extension!&lt;/p&gt;  &lt;p&gt;Happy coding!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9634466" width="1" height="1"&gt;</content><author><name>bspann</name><uri>http://blogs.msdn.com/members/bspann.aspx</uri></author><category term="Visual Studio 2010" scheme="http://blogs.msdn.com/bspann/archive/tags/Visual+Studio+2010/default.aspx" /></entry><entry><title>Visual Studio 2010 Beta 1</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/bspann/archive/2009/05/18/visual-studio-2010-beta-1.aspx" /><id>http://blogs.msdn.com/bspann/archive/2009/05/18/visual-studio-2010-beta-1.aspx</id><published>2009-05-19T00:43:00Z</published><updated>2009-05-19T00:43:00Z</updated><content type="html">&lt;p&gt;Monday, May 18th, Visual Studio 2010 Beta 1 (Professional, Team Suite, Team Foundation Server) will be available to MSDN Subscribers through MSDN Subscriber Downloads and to the general public on Wednesday, May 20th through &lt;a href="http://www.microsoft.com/visualstudio/products/2010/default.mspx" target="_blank"&gt;Microsoft Downloads&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Today, Microsoft made available for download the Visual Studio 2010 and the .NET Framework 4 Beta 1.&amp;#160; Microsoft encourages customers and partners to download and evaluate the Beta, which ultimately results in changes and improvements to the final product.&lt;/p&gt;  &lt;p&gt;Visual Studio 2010 and the .NET Framework 4 Beta 1 represents a substantial amount of the functionality that will be in the final shipping version of the products.&amp;#160; Later this year, Microsoft will share more details about the coming version of Visual Studio and the .NET Framework.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9634674" width="1" height="1"&gt;</content><author><name>bspann</name><uri>http://blogs.msdn.com/members/bspann.aspx</uri></author><category term="Visual Studio 2010" scheme="http://blogs.msdn.com/bspann/archive/tags/Visual+Studio+2010/default.aspx" /></entry><entry><title>Top Selling Books At Tech Ed</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/bspann/archive/2009/05/15/top-selling-books-at-tech-ed.aspx" /><id>http://blogs.msdn.com/bspann/archive/2009/05/15/top-selling-books-at-tech-ed.aspx</id><published>2009-05-15T05:59:27Z</published><updated>2009-05-15T05:59:27Z</updated><content type="html">&lt;p&gt;As of Day 4, the list of the top 10 selling books at Tech Ed 2009 are:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://www.amazon.com/Windows-Server-2008-Hyper-V-Microsofts/dp/0470440961/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1242356018&amp;amp;sr=8-1" target="_blank"&gt;Windows Server 2008 Hyper-V&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Professional-ASP-NET-MVC-1-0-Conery/dp/0470384611/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1242356069&amp;amp;sr=1-1" target="_blank"&gt;Professional ASP.NET MVC 1&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Mastering-System-Center-Configuration-Manager/dp/047017367X/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1242356093&amp;amp;sr=1-1" target="_blank"&gt;Mastering System Center Configuration Manager&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Windows-Server-2008-Hyper-V-Unleashed/dp/0672330288/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1242356168&amp;amp;sr=1-1" target="_blank"&gt;Windows Server 2008 Hyper-V Unleashed&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Professional-Silverlight-ASP-NET-Developers-Programmer/dp/0470277750/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1242356190&amp;amp;sr=1-1" target="_blank"&gt;Professional Silverlight 2 with ASP.NET&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Windows-PowerShell-Unleashed-Tyson-Kopczynski/dp/0672329883/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1242356217&amp;amp;sr=1-1" target="_blank"&gt;Windows PowerShell Unleashed&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Silverlight-2-Action-Chad-Campbell/dp/1933988428/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1242356240&amp;amp;sr=1-1" target="_blank"&gt;Silverlight 2 in Action&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Inside-Microsoft%C2%AE-SQL-Server%C2%AE-2008/dp/0735626030/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1242356260&amp;amp;sr=1-1" target="_blank"&gt;Inside MS SQL Server 2008 T-SQL Querying&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Programming-Entity-Framework-Julia-Lerman/dp/059652028X/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1242356279&amp;amp;sr=1-1" target="_blank"&gt;Programming Entity Framework&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Microsoft-Visual-Studio-Tips-Sara/dp/0735626405/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1242356302&amp;amp;sr=1-1" target="_blank"&gt;Microsoft Visual Studio Tips&lt;/a&gt;&lt;/li&gt; &lt;/ol&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9617618" width="1" height="1"&gt;</content><author><name>bspann</name><uri>http://blogs.msdn.com/members/bspann.aspx</uri></author><category term="Books" scheme="http://blogs.msdn.com/bspann/archive/tags/Books/default.aspx" /></entry><entry><title>Book List</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/bspann/archive/2009/05/13/book-list.aspx" /><id>http://blogs.msdn.com/bspann/archive/2009/05/13/book-list.aspx</id><published>2009-05-13T05:36:15Z</published><updated>2009-05-13T05:36:15Z</updated><content type="html">&lt;p&gt;I keep a running book list of technical books that I have interests as a task item in my Outlook mailbox.&amp;#160; I am going to share with you that list.&amp;#160; Now, these books are books that I have not purchased yet but plan on purchasing in the near future.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://www.amazon.com/Pattern-Languages-Program-Software-Patterns/dp/0321321944/ref=sr_1_3?ie=UTF8&amp;amp;s=books&amp;amp;qid=1242181778&amp;amp;sr=1-3"&gt;Pattern Languages of Program Design&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/More-Effective-Specific-Software-Development/dp/0321485890/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1242181828&amp;amp;sr=1-1"&gt;More Effective C#: 50 Specific Ways to Improve Your C#&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/LINQ-Object-Relational-Mapping-2008/dp/1590599659/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1242181855&amp;amp;sr=1-1"&gt;Pro LINQ Object Relational Mapping in C# 2008&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/jQuery-Action-Bear-Bibeault/dp/1933988355/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1242181885&amp;amp;sr=1-1"&gt;JQuery in Action&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Professional-ASP-NET-MVC-1-0-Conery/dp/0470384611/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1242181912&amp;amp;sr=1-1"&gt;Professional ASP.NET MVC 1.0&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Applications-Code-Markup-Presentation-Foundation/dp/0735619573/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1242181938&amp;amp;sr=1-1"&gt;Applications = Code + Markup: A Guide to the Microsoft Windows Presentation Foundation&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Data-Driven-Services-Silverlight-John-Papa/dp/0596523092/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1242181960&amp;amp;sr=1-1"&gt;Data Driven Services with Silverlight 2&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/Professional-SharePoint-Development-Silverlight-Programmer/dp/0470434007/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1242181983&amp;amp;sr=1-1"&gt;Professional Microsoft SharePoint 2007 Development Using Microsoft Silverlight 2&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9608731" width="1" height="1"&gt;</content><author><name>bspann</name><uri>http://blogs.msdn.com/members/bspann.aspx</uri></author><category term="Books" scheme="http://blogs.msdn.com/bspann/archive/tags/Books/default.aspx" /></entry><entry><title>Dual Boot Windows 7 and Windows Server 2008 R2</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/bspann/archive/2009/05/09/dual-boot-windows-7-and-windows-server-2008-r2.aspx" /><id>http://blogs.msdn.com/bspann/archive/2009/05/09/dual-boot-windows-7-and-windows-server-2008-r2.aspx</id><published>2009-05-09T08:25:06Z</published><updated>2009-05-09T08:25:06Z</updated><content type="html">&lt;p&gt;Today I installed Windows 7 RC on my Lenovo T61p laptop.&amp;#160; Things went very well.&amp;#160; It runs very fast (teammate clocked it at 41 seconds to boot).&amp;#160; &lt;/p&gt;  &lt;p&gt;I was then approached by a team member that we will be using Hyper-V images.&amp;#160; Now, these Hyper-V images contain Enterprise MOSS and developer tools.&amp;#160; I don’t like messing with my everyday laptop.&amp;#160; But after much consideration, I have decided to dual boot the machine.&amp;#160; So here are the steps that I performed.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Install Windows 7 RC Enterprise x64 (currently available through MSDN subscriptions). &lt;/li&gt;    &lt;li&gt;Install Windows Server 2008 R2 Standard RC x64 (currently available through MSDN subscriptions). &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Windows is smart enough to add records into the boot manager for you.&amp;#160; This saves a ton of time and &lt;em&gt;&lt;strong&gt;bcdedit&lt;/strong&gt;&lt;/em&gt; commands that do not have to be typed out.&amp;#160; Now I have x64 environment both client and server.&lt;/p&gt;  &lt;p&gt;UPDATE:&amp;#160; If you would like Windows 7 to be the default boot loader, then run this command from a elevated command prompt:&amp;#160; &lt;strong&gt;&lt;em&gt;bcdedit /set {bootmgr} default {current}&amp;#160; &lt;/em&gt;&lt;/strong&gt;If you would like to cut the timeout, use this command &lt;strong&gt;&lt;em&gt;bcdedit /set {bootmgr} timeout 15 &lt;/em&gt;&lt;/strong&gt;(The 15 is the value that you would like to set).&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9598647" width="1" height="1"&gt;</content><author><name>bspann</name><uri>http://blogs.msdn.com/members/bspann.aspx</uri></author></entry><entry><title>WPF and Directory Services</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/bspann/archive/2008/08/06/wpf-and-directory-services.aspx" /><id>http://blogs.msdn.com/bspann/archive/2008/08/06/wpf-and-directory-services.aspx</id><published>2008-08-06T15:35:17Z</published><updated>2008-08-06T15:35:17Z</updated><content type="html">&lt;p&gt;A few weeks ago, a friend of mine asked a question about using WPF to display Organizational Units in a TreeView control.&amp;#160; My friend had a good grasp about getting OU’s from Active Directory.&amp;#160; He just needed to be shown the way to bind his results to the TreeView control.&amp;#160; So I took the challenge.&amp;#160; The first thing I had to do was setup an environment that had multiple OU’s defined.&amp;#160; Luckily I had a set of virtual machines with three Domain Controllers with many levels of OU’s.&amp;#160; So I fired them up and created a machine to act as a client in the domain.&amp;#160; So the client machine consisted of Windows XP with SP3, Visual Studio 2008, SQL Server 2005, Office 2007, etc.&amp;#160; Very typical developer machine configuration.&amp;#160; So, here is the proof of concept&amp;#160; WPF to bind the results of the LDAP query.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;WPF&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;??\red0\green0\blue255;\red255\green255\blue255;\red163\green21\blue21;\red255\green0\blue0;}??\fs20 \cf1 &amp;lt;\cf3 Window\par ??\cf4  xmlns\cf1 ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"\par ??\cf4  xmlns\cf1 :\cf4 x\cf1 ="http://schemas.microsoft.com/winfx/2006/xaml"\par ??\cf4  x\cf1 :\cf4 Class\cf1 ="ActiveDirectory.Window1"\par ??\cf4  x\cf1 :\cf4 Name\cf1 ="Window"\par ??\cf4  Title\cf1 ="Window1"\par ??\cf4  Width\cf1 ="640"\cf4  Height\cf1 ="480"&amp;gt;\par ??\cf3     \cf1 &amp;lt;\cf3 Grid\cf4  x\cf1 :\cf4 Name\cf1 ="LayoutRoot"&amp;gt;\par ??\cf3         \cf1 &amp;lt;\cf3 TreeView\cf4  HorizontalAlignment\cf1 ="Left"\cf4  Margin\cf1 ="5"\cf4  x\cf1 :\cf4 Name\cf1 ="OrganizationUnits"&amp;gt;\par ??\cf3             \cf1 &amp;lt;\cf3 TreeView.ItemTemplate\cf1 &amp;gt;\par ??\cf3                 \cf1 &amp;lt;\cf3 HierarchicalDataTemplate\cf1 &amp;gt;\par ??\cf3                     \cf1 &amp;lt;\cf3 TextBlock\cf4  Padding\cf1 ="2" /&amp;gt;\par ??\cf3                 \cf1 &amp;lt;/\cf3 HierarchicalDataTemplate\cf1 &amp;gt;\par ??\cf3             \cf1 &amp;lt;/\cf3 TreeView.ItemTemplate\cf1 &amp;gt;\par ??\cf3         \cf1 &amp;lt;/\cf3 TreeView\cf1 &amp;gt;\par ??\cf3     \cf1 &amp;lt;/\cf3 Grid\cf1 &amp;gt;\par ??&amp;lt;/\cf3 Window\cf1 &amp;gt;}
--&gt;&lt;/p&gt;  &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Window&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: red"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: red"&gt; xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Class&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;ActiveDirectory.Window1&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Window&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: red"&gt; Title&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Window1&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: red"&gt; Width&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;640&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Height&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;480&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;LayoutRoot&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeView&lt;/span&gt;&lt;span style="color: red"&gt; HorizontalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Left&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; Margin&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;5&amp;quot;&lt;/span&gt;&lt;span style="color: red"&gt; x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;OrganizationUnits&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeView.ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;HierarchicalDataTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBlock&lt;/span&gt;&lt;span style="color: red"&gt; Padding&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;2&amp;quot; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;HierarchicalDataTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeView.ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;TreeView&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #a31515"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Window&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;C# Code Behind&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;!--
{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;??\red0\green0\blue255;\red255\green255\blue255;\red0\green0\blue0;\red43\green145\blue175;\red163\green21\blue21;\red128\green128\blue128;\red0\green128\blue0;}??\fs20 \cf1 using\cf0  System;\par ??\cf1 using\cf0  System.DirectoryServices;\par ??\cf1 using\cf0  System.Text;\par ??\cf1 using\cf0  System.Windows.Controls;\par ??\par ??\cf1 namespace\cf0  ActiveDirectory\par ??\{\par ??    \cf1 public\cf0  \cf1 partial\cf0  \cf1 class\cf0  \cf4 Window1\par ??\cf0     \{\par ??\cf1         #region\cf0  Fields\par ??        \cf1 private\cf0  \cf1 static\cf0  \cf1 string\cf0  preferredServer = \cf1 null\cf0 ;\par ??        \cf1 private\cf0  \cf1 static\cf0  \cf1 string\cf0  appAccountId = \cf1 null\cf0 ;\par ??        \cf1 private\cf0  \cf1 static\cf0  \cf1 string\cf0  appAccountPwd = \cf1 null\cf0 ;\par ??\cf1         #endregion\par ??\par ??        #region\cf0  Constructors\par ??        \cf1 public\cf0  Window1()\par ??        \{\par ??            \cf1 this\cf0 .InitializeComponent();\par ??\par ??            \cf1 using\cf0  (SearchResultCollection src = GetTopOUs())\par ??            \{\par ??                \cf1 foreach\cf0  (SearchResult result \cf1 in\cf0  src)\par ??                \{\par ??                    \cf4 TreeViewItem\cf0  item = \cf1 new\cf0  \cf4 TreeViewItem\cf0 ();\par ??\par ??                    \cf1 if\cf0  (result.Properties.Contains(\cf5 "Name"\cf0 ))\par ??                    \{\par ??                        \cf1 foreach\cf0  (\cf1 string\cf0  name \cf1 in\cf0  result.Properties[\cf5 "Name"\cf0 ])\par ??                        \{\par ??                            item.Tag = name;\par ??                            item.Header = name;\par ??                        \}\par ??                    \}\par ??\par ??                    OrganizationUnits.Items.Add(item);\par ??\par ??                    \cf1 this\cf0 .OrganizationalHiearchy(result.GetDirectoryEntry(), item);\par ??                \}\par ??            \}\par ??        \}\par ??\cf1         #endregion\par ??\par ??        #region\cf0  Methods\par ??        \cf6 ///\cf7  \cf6 &amp;lt;summary&amp;gt;\par ??\cf0         \cf6 ///\cf7  This method retrieves the first level of Organizational Units in the Active Directory.\par ??\cf0         \cf6 ///\cf7  \cf6 &amp;lt;/summary&amp;gt;\par ??\cf0         \cf6 ///\cf7  \cf6 &amp;lt;returns&amp;gt;\cf7 A SearchResultCollection of the first level oranizational units in the directory.\cf6 &amp;lt;/returns&amp;gt;\par ??\cf0         \cf1 public\cf0  \cf1 static\cf0  SearchResultCollection GetTopOUs()\par ??        \{\par ??            \cf1 string\cf0  searchFilter = \cf5 "(objectcategory=organizationalunit)"\cf0 ;\par ??\par ??            SearchResultCollection results = FindObjects(searchFilter, \cf1 null\cf0 , SearchScope.OneLevel);\par ??\par ??            \cf1 return\cf0  results;\par ??        \}\par ??\par ??        \cf6 ///\cf7  \cf6 &amp;lt;summary&amp;gt;\par ??\cf0         \cf6 ///\cf7  This method retrieves the first level down from the passed in Directory Entry.\par ??\cf0         \cf6 ///\cf7  \cf6 &amp;lt;/summary&amp;gt;\par ??\cf0         \cf6 ///\cf7  \cf6 &amp;lt;param name="searchRoot"&amp;gt;\cf7 The parent DirectoryEntry object\cf6 &amp;lt;/param&amp;gt;\par ??\cf0         \cf6 ///\cf7  \cf6 &amp;lt;returns&amp;gt;\cf7 A SearchResultCollection of the single level organizational units in the directory.\cf6 &amp;lt;/returns&amp;gt;\par ??\cf0         \cf1 public\cf0  \cf1 static\cf0  SearchResultCollection GetSingleLevelSubOU(DirectoryEntry searchRoot)\par ??        \{\par ??            \cf1 string\cf0  searchFilter = \cf5 "(objectcategory=organizationalunit)"\cf0 ;\par ??\par ??            SearchResultCollection results = FindObjects(searchFilter, searchRoot, SearchScope.OneLevel);\par ??\par ??            \cf1 return\cf0  results;\par ??        \}\par ??\par ??        \cf6 ///\cf7  \cf6 &amp;lt;summary&amp;gt;\par ??\cf0         \cf6 ///\cf7  This method retrieves the all Organizational Units below the seach root in the Active Directory.\par ??\cf0         \cf6 ///\cf7  \cf6 &amp;lt;/summary&amp;gt;\par ??\cf0         \cf6 ///\cf7  \cf6 &amp;lt;param name="searchRoot"&amp;gt;\cf7 The DirectoryEntry the corresponds to the root of the search.\cf6 &amp;lt;/param&amp;gt;\par ??\cf0         \cf6 ///\cf7  \cf6 &amp;lt;returns&amp;gt;\cf7 A SearchResultCollection of oranizational units in the directory.\cf6 &amp;lt;/returns&amp;gt;\par ??\cf0         \cf1 public\cf0  \cf1 static\cf0  SearchResultCollection GetSubOUs(DirectoryEntry searchRoot)\par ??        \{\par ??            \cf1 string\cf0  searchFilter = \cf5 "(objectcategory=organizationalunit)"\cf0 ;\par ??\par ??            SearchResultCollection results = FindObjects(searchFilter, searchRoot, SearchScope.Subtree);\par ??\par ??            \cf1 return\cf0  results;\par ??        \}\par ??        \cf6 ///\cf7  \cf6 &amp;lt;summary&amp;gt;\par ??\cf0         \cf6 ///\cf7  This method returns the SearchResultCollection of objects for the given LDAP query filter, initial\par ??\cf0         \cf6 ///\cf7  search root and scope for the search.  It will return an empty collection if no match is found.\par ??\cf0         \cf6 ///\cf7  \cf6 &amp;lt;/summary&amp;gt;\par ??\cf0         \cf6 ///\cf7  \cf6 &amp;lt;param name="filter"&amp;gt;\cf7 The LDAP query filter.\cf6 &amp;lt;/param&amp;gt;\par ??\cf0         \cf6 ///\cf7  \cf6 &amp;lt;param name="searchRoot"&amp;gt;\cf7 The DirectoryEntry that represent s the root of the search.\cf6 &amp;lt;/param&amp;gt;\par ??\cf0         \cf6 ///\cf7  \cf6 &amp;lt;param name="scope"&amp;gt;\cf7 The scope for the search (i.e. Base, OneLevel, Subtree)\cf6 &amp;lt;/param&amp;gt;\par ??\cf0         \cf6 ///\cf7  \cf6 &amp;lt;returns&amp;gt;\cf7 The collection of SearchReults that matched the query.\cf6 &amp;lt;/returns&amp;gt;\par ??\cf0         \cf1 public\cf0  \cf1 static\cf0  SearchResultCollection FindObjects(\cf1 string\cf0  filter, DirectoryEntry searchRoot, SearchScope scope)\par ??        \{\par ??            DirectoryEntry entry = \cf1 null\cf0 ;\par ??            DirectorySearcher searcher = \cf1 null\cf0 ;\par ??\par ??            \cf1 if\cf0  (filter == \cf1 null\cf0 )\par ??            \{\par ??                \cf1 throw\cf0  \cf1 new\cf0  \cf4 ArgumentNullException\cf0 (\cf5 "filter"\cf0 , \cf5 "The search filter cannot be null."\cf0 );\par ??            \}\par ??\par ??            \cf1 if\cf0  (searchRoot == \cf1 null\cf0 )\par ??            \{\par ??                entry = GetDirectoryEntry();\par ??                searcher = \cf1 new\cf0  DirectorySearcher(entry);\par ??            \}\par ??            \cf1 else\par ??\cf0             \{\par ??                searcher = \cf1 new\cf0  DirectorySearcher(searchRoot);\par ??            \}\par ??\par ??            searcher.Filter = filter;\par ??            searcher.SearchScope = scope;\par ??\par ??            SearchResultCollection results = searcher.FindAll();\par ??\par ??            \cf1 return\cf0  results;\par ??        \}\par ??        \cf6 ///\cf7  \cf6 &amp;lt;summary&amp;gt;\par ??\cf0         \cf6 ///\cf7  This method retreives a new directory entry object.\par ??\cf0         \cf6 ///\cf7  \cf6 &amp;lt;/summary&amp;gt;\par ??\cf0         \cf6 ///\cf7  \cf6 &amp;lt;returns&amp;gt;\cf7 A DirectoryEntry object.\cf6 &amp;lt;/returns&amp;gt;\par ??\cf0         \cf1 public\cf0  \cf1 static\cf0  DirectoryEntry GetDirectoryEntry()\par ??        \{\par ??            DirectoryEntry entry;\par ??\par ??            \cf1 if\cf0  (preferredServer != \cf1 null\cf0 )\par ??            \{\par ??                entry = \cf1 new\cf0  DirectoryEntry(\cf5 "LDAP://"\cf0  + preferredServer, appAccountId, appAccountPwd, AuthenticationTypes.ServerBind | AuthenticationTypes.Secure);\par ??            \}\par ??            \cf1 else\par ??\cf0             \{\par ??                entry = \cf1 new\cf0  DirectoryEntry(\cf5 "LDAP://"\cf0  + GetDomainName(), \cf1 null\cf0 , \cf1 null\cf0 , AuthenticationTypes.Secure);\par ??            \}\par ??            \cf1 return\cf0  entry;\par ??        \}\par ??        \cf6 ///\cf7  \cf6 &amp;lt;summary&amp;gt;\par ??\cf0         \cf6 ///\cf7  This method returns the simple Domain Name of the AD Domain\par ??\cf0         \cf6 ///\cf7  \cf6 &amp;lt;/summary&amp;gt;\par ??\cf0         \cf6 ///\cf7  \cf6 &amp;lt;returns&amp;gt;\cf7 The first value of the DC=* domain name from the default naming context.\cf6 &amp;lt;/returns&amp;gt;\par ??\cf0         \cf1 public\cf0  \cf1 static\cf0  \cf1 string\cf0  GetDomainName()\par ??        \{\par ??            DirectoryEntry rootDse = \cf1 new\cf0  DirectoryEntry(\cf5 "LDAP://rootDSE"\cf0 );\par ??\par ??            \cf7 //Get the defaultNamingContext and parse in into a properly formatted string\par ??\cf0             \cf7 //to use for binding with the global catalog\par ??\cf0             \cf1 string\cf0  ldapDomain = rootDse.Properties[\cf5 "defaultNamingContext"\cf0 ][0].ToString();\par ??\par ??            rootDse.Close();\par ??            rootDse.Dispose();\par ??\par ??            \cf1 return\cf0  ConvertDNToUPNSuffix(ldapDomain);\par ??        \}\par ??\cf1         #endregion\par ??\par ??        #region\cf0  Helper Methods\par ??        \cf6 ///\cf7  \cf6 &amp;lt;summary&amp;gt;\par ??\cf0         \cf6 ///\cf7  Takes a DN-formatted domain name and returns a domai name in UPN-suffix format\par ??\cf0         \cf6 ///\cf7  For example: DC=ads,DC=uscg,DC=mil --&amp;gt; ads.uscg.mil\par ??\cf0         \cf6 ///\cf7  \cf6 &amp;lt;/summary&amp;gt;\par ??\cf0         \cf6 ///\cf7  \cf6 &amp;lt;param name="domainDN"&amp;gt;\cf7 The raw distinguished name for a domain.\cf6 &amp;lt;/param&amp;gt;\par ??\cf0         \cf6 ///\cf7  \cf6 &amp;lt;returns&amp;gt;\cf7 UPN suffix.\cf6 &amp;lt;/returns&amp;gt;\par ??\cf0         \cf1 private\cf0  \cf1 static\cf0  \cf1 string\cf0  ConvertDNToUPNSuffix(\cf1 string\cf0  domainDN)\par ??        \{\par ??            \cf1 string\cf0  delimStr = \cf5 "=,"\cf0 ;\par ??            \cf1 char\cf0 [] delimiter = delimStr.ToCharArray();\par ??            \cf1 string\cf0 [] split = \cf1 null\cf0 ;\par ??\par ??            split = domainDN.Split(delimiter);\par ??            \cf4 StringBuilder\cf0  buf = \cf1 new\cf0  \cf4 StringBuilder\cf0 ();\par ??            \cf1 foreach\cf0  (\cf1 string\cf0  str \cf1 in\cf0  split)\par ??            \{\par ??                \cf1 if\cf0  (str.Equals(\cf5 "DC"\cf0 ))\par ??                \{\par ??                    \cf1 continue\cf0 ;\par ??                \}\par ??                \cf1 else\par ??\cf0                 \{\par ??                    buf.Append(str);\par ??                    buf.Append(\cf5 "."\cf0 );\par ??                \}\par ??            \}\par ??\par ??            buf.Remove(buf.Length - 1, 1);\par ??            \cf1 return\cf0  buf.ToString();\par ??        \}\par ??\par ??        \cf1 private\cf0  \cf1 void\cf0  OrganizationalHiearchy(DirectoryEntry de, \cf4 TreeViewItem\cf0  item)\par ??        \{\par ??            \cf1 using\cf0  (SearchResultCollection children = GetSingleLevelSubOU(de))\par ??            \{\par ??                \cf1 foreach\cf0  (SearchResult child \cf1 in\cf0  children)\par ??                \{\par ??                    \cf1 if\cf0  (child.Properties.Contains(\cf5 "Name"\cf0 ))\par ??                    \{\par ??                        \cf1 foreach\cf0  (\cf1 string\cf0  name \cf1 in\cf0  child.Properties[\cf5 "Name"\cf0 ])\par ??                        \{\par ??                            \cf4 TreeViewItem\cf0  tvChild = \cf1 new\cf0  \cf4 TreeViewItem\cf0 ();\par ??\par ??                            tvChild.Tag = name;\par ??                            tvChild.Header = name;\par ??\par ??                            item.Items.Add(tvChild);\par ??\par ??                            OrganizationalHiearchy(child.GetDirectoryEntry(), tvChild);\par ??                        \}\par ??                    \}\par ??                \}\par ??            \}\par ??\par ??        \}\par ??\cf1         #endregion\par ??\cf0     \}\par ??\}\par ??}
--&gt;&lt;/p&gt;  &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.DirectoryServices;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Text;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Windows.Controls;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;namespace&lt;/span&gt; ActiveDirectory&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;partial&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Window1&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #region&lt;/span&gt; Fields&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; preferredServer = &lt;span style="color: blue"&gt;null&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; appAccountId = &lt;span style="color: blue"&gt;null&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; appAccountPwd = &lt;span style="color: blue"&gt;null&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #endregion&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #region&lt;/span&gt; Constructors&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; Window1()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.InitializeComponent();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;using&lt;/span&gt; (SearchResultCollection src = GetTopOUs())&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (SearchResult result &lt;span style="color: blue"&gt;in&lt;/span&gt; src)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt; item = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt;();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (result.Properties.Contains(&lt;span style="color: #a31515"&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue"&gt;string&lt;/span&gt; name &lt;span style="color: blue"&gt;in&lt;/span&gt; result.Properties[&lt;span style="color: #a31515"&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;])&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; item.Tag = name;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; item.Header = name;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; OrganizationUnits.Items.Add(item);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.OrganizationalHiearchy(result.GetDirectoryEntry(), item);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #endregion&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #region&lt;/span&gt; Methods&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; This method retrieves the first level of Organizational Units in the Active Directory.&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;A SearchResultCollection of the first level oranizational units in the directory.&lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; SearchResultCollection GetTopOUs()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; searchFilter = &lt;span style="color: #a31515"&gt;&amp;quot;(objectcategory=organizationalunit)&amp;quot;&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SearchResultCollection results = FindObjects(searchFilter, &lt;span style="color: blue"&gt;null&lt;/span&gt;, SearchScope.OneLevel);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; results;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; This method retrieves the first level down from the passed in Directory Entry.&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;param name=&amp;quot;searchRoot&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;The parent DirectoryEntry object&lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;A SearchResultCollection of the single level organizational units in the directory.&lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; SearchResultCollection GetSingleLevelSubOU(DirectoryEntry searchRoot)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; searchFilter = &lt;span style="color: #a31515"&gt;&amp;quot;(objectcategory=organizationalunit)&amp;quot;&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SearchResultCollection results = FindObjects(searchFilter, searchRoot, SearchScope.OneLevel);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; results;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; This method retrieves the all Organizational Units below the seach root in the Active Directory.&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;param name=&amp;quot;searchRoot&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;The DirectoryEntry the corresponds to the root of the search.&lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;A SearchResultCollection of oranizational units in the directory.&lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; SearchResultCollection GetSubOUs(DirectoryEntry searchRoot)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; searchFilter = &lt;span style="color: #a31515"&gt;&amp;quot;(objectcategory=organizationalunit)&amp;quot;&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SearchResultCollection results = FindObjects(searchFilter, searchRoot, SearchScope.Subtree);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; results;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; This method returns the SearchResultCollection of objects for the given LDAP query filter, initial&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; search root and scope for the search.&amp;#160; It will return an empty collection if no match is found.&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;param name=&amp;quot;filter&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;The LDAP query filter.&lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;param name=&amp;quot;searchRoot&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;The DirectoryEntry that represent s the root of the search.&lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;param name=&amp;quot;scope&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;The scope for the search (i.e. Base, OneLevel, Subtree)&lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;The collection of SearchReults that matched the query.&lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; SearchResultCollection FindObjects(&lt;span style="color: blue"&gt;string&lt;/span&gt; filter, DirectoryEntry searchRoot, SearchScope scope)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DirectoryEntry entry = &lt;span style="color: blue"&gt;null&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DirectorySearcher searcher = &lt;span style="color: blue"&gt;null&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (filter == &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;throw&lt;/span&gt; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ArgumentNullException&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;filter&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;The search filter cannot be null.&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (searchRoot == &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; entry = GetDirectoryEntry();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; searcher = &lt;span style="color: blue"&gt;new&lt;/span&gt; DirectorySearcher(entry);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;else&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; searcher = &lt;span style="color: blue"&gt;new&lt;/span&gt; DirectorySearcher(searchRoot);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; searcher.Filter = filter;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; searcher.SearchScope = scope;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SearchResultCollection results = searcher.FindAll();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; results;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; This method retreives a new directory entry object.&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;A DirectoryEntry object.&lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; DirectoryEntry GetDirectoryEntry()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DirectoryEntry entry;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (preferredServer != &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; entry = &lt;span style="color: blue"&gt;new&lt;/span&gt; DirectoryEntry(&lt;span style="color: #a31515"&gt;&amp;quot;LDAP://&amp;quot;&lt;/span&gt; + preferredServer, appAccountId, appAccountPwd, AuthenticationTypes.ServerBind | AuthenticationTypes.Secure);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;else&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; entry = &lt;span style="color: blue"&gt;new&lt;/span&gt; DirectoryEntry(&lt;span style="color: #a31515"&gt;&amp;quot;LDAP://&amp;quot;&lt;/span&gt; + GetDomainName(), &lt;span style="color: blue"&gt;null&lt;/span&gt;, &lt;span style="color: blue"&gt;null&lt;/span&gt;, AuthenticationTypes.Secure);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; entry;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; This method returns the simple Domain Name of the AD Domain&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;The first value of the DC=* domain name from the default naming context.&lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; GetDomainName()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; DirectoryEntry rootDse = &lt;span style="color: blue"&gt;new&lt;/span&gt; DirectoryEntry(&lt;span style="color: #a31515"&gt;&amp;quot;LDAP://rootDSE&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//Get the defaultNamingContext and parse in into a properly formatted string&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//to use for binding with the global catalog&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; ldapDomain = rootDse.Properties[&lt;span style="color: #a31515"&gt;&amp;quot;defaultNamingContext&amp;quot;&lt;/span&gt;][0].ToString();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; rootDse.Close();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; rootDse.Dispose();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; ConvertDNToUPNSuffix(ldapDomain);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #endregion&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #region&lt;/span&gt; Helper Methods&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; Takes a DN-formatted domain name and returns a domai name in UPN-suffix format&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; For example: DC=ads,DC=uscg,DC=mil --&amp;gt; ads.uscg.mil&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;param name=&amp;quot;domainDN&amp;quot;&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;The raw distinguished name for a domain.&lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;returns&amp;gt;&lt;/span&gt;&lt;span style="color: green"&gt;UPN suffix.&lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; ConvertDNToUPNSuffix(&lt;span style="color: blue"&gt;string&lt;/span&gt; domainDN)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; delimStr = &lt;span style="color: #a31515"&gt;&amp;quot;=,&amp;quot;&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;char&lt;/span&gt;[] delimiter = delimStr.ToCharArray();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt;[] split = &lt;span style="color: blue"&gt;null&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; split = domainDN.Split(delimiter);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;StringBuilder&lt;/span&gt; buf = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;StringBuilder&lt;/span&gt;();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue"&gt;string&lt;/span&gt; str &lt;span style="color: blue"&gt;in&lt;/span&gt; split)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (str.Equals(&lt;span style="color: #a31515"&gt;&amp;quot;DC&amp;quot;&lt;/span&gt;))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;continue&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;else&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; buf.Append(str);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; buf.Append(&lt;span style="color: #a31515"&gt;&amp;quot;.&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; buf.Remove(buf.Length - 1, 1);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; buf.ToString();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; OrganizationalHiearchy(DirectoryEntry de, &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt; item)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;using&lt;/span&gt; (SearchResultCollection children = GetSingleLevelSubOU(de))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (SearchResult child &lt;span style="color: blue"&gt;in&lt;/span&gt; children)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (child.Properties.Contains(&lt;span style="color: #a31515"&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue"&gt;string&lt;/span&gt; name &lt;span style="color: blue"&gt;in&lt;/span&gt; child.Properties[&lt;span style="color: #a31515"&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;])&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt; tvChild = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;TreeViewItem&lt;/span&gt;();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; tvChild.Tag = name;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; tvChild.Header = name;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; item.Items.Add(tvChild);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; OrganizationalHiearchy(child.GetDirectoryEntry(), tvChild);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; #endregion&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;I know the code above is hard to read.&amp;#160; Just copy and paste it into Visual Studio.&amp;#160; It uses a recursive method to put the elements in the right order.&amp;#160; So how it works is as follows.&amp;#160; The constructor puts the first level OU from the RootDSE in the treeview.&amp;#160; Then for each of the OU's returned, it goes into a recursive method that drills down until there are no children OU's left.&amp;#160; Then it comes up and continues to the next.&amp;#160; Here is what the final product will look like.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/bspann/WindowsLiveWriter/WPFandDirectoryServices_78B6/image_2.png"&gt;&lt;img title="image" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="406" alt="image" src="http://blogs.msdn.com/blogfiles/bspann/WindowsLiveWriter/WPFandDirectoryServices_78B6/image_thumb.png" width="536" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Happy Coding!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8837187" width="1" height="1"&gt;</content><author><name>bspann</name><uri>http://blogs.msdn.com/members/bspann.aspx</uri></author><category term="WPF" scheme="http://blogs.msdn.com/bspann/archive/tags/WPF/default.aspx" /><category term="Active Directory" scheme="http://blogs.msdn.com/bspann/archive/tags/Active+Directory/default.aspx" /><category term="Windows Presentation Foundation" scheme="http://blogs.msdn.com/bspann/archive/tags/Windows+Presentation+Foundation/default.aspx" /></entry><entry><title>Free CSS Web Templates</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/bspann/archive/2008/07/14/free-css-web-templates.aspx" /><id>http://blogs.msdn.com/bspann/archive/2008/07/14/free-css-web-templates.aspx</id><published>2008-07-14T02:21:37Z</published><updated>2008-07-14T02:21:37Z</updated><content type="html">&lt;p&gt;&lt;/p&gt;  &lt;p&gt;If you are graphically challenged like I am, check out this &lt;a href="http://www.opensourcetemplates.org/"&gt;site&lt;/a&gt;.&amp;#160; You can browse for a look and feel that suites your need.&amp;#160; Then download the template and apply to your website.&amp;#160; The templates are pure html and css and they are free.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8729962" width="1" height="1"&gt;</content><author><name>bspann</name><uri>http://blogs.msdn.com/members/bspann.aspx</uri></author><category term="CSS" scheme="http://blogs.msdn.com/bspann/archive/tags/CSS/default.aspx" /><category term="Website Layouts" scheme="http://blogs.msdn.com/bspann/archive/tags/Website+Layouts/default.aspx" /><category term="HTML" scheme="http://blogs.msdn.com/bspann/archive/tags/HTML/default.aspx" /></entry><entry><title>SSIS Performance</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/bspann/archive/2008/07/14/ssis-performance.aspx" /><id>http://blogs.msdn.com/bspann/archive/2008/07/14/ssis-performance.aspx</id><published>2008-07-14T02:20:50Z</published><updated>2008-07-14T02:20:50Z</updated><content type="html">&lt;p&gt;I am a .NET developer who likes to write code in C#.&amp;#160; When given the task to transform customers data from an Oracle 8i database to SQL Server 2005 Database, I immediately though of SSIS.&amp;#160;&amp;#160; Well what I didn't know was the learning curve needed to write efficient packages.&lt;/p&gt;  &lt;p&gt;Originally, I designed a package that relied heavily on scripts.&amp;#160; In SSIS, scripts can be used to do complex tasks.&amp;#160; For example: splitting out First Name, Middle Name, and Last Name from a single column.&amp;#160; Scripts in SSIS are not necessarily good to use when you are looping a dataset, especially one that is over 34K records.&amp;#160; The time for one control flow to execute on that dataset was over four hours.&amp;#160; Now if that was the only thing I had to worry about, I would have just moved on.&amp;#160; But because I am testing the package with just a subset of the data, that was not going to work.&amp;#160; The entire dataset from production is over 2.2 million records.&amp;#160; Now you can do the math as to how long that would take so, back to the drawing board.&lt;/p&gt;  &lt;p&gt;I noticed that the data flow tasks were very efficient, compared to the control flow that contained the scripts.&amp;#160; So I set out to use just a data flow to do the same job.&amp;#160; I was able to convert all my scripts into multiple data flows.&amp;#160; It took some creative techniques in SQL to get a query that could be used to transform the data.&amp;#160; Because SQL is so powerful, I was able to break the data down into sets that could be used.&amp;#160; &lt;/p&gt;  &lt;p&gt;For example:&amp;#160; I had a column that was positional as well as informative.&amp;#160; What I mean by this is you have a char(5) column that based on which position contained a number greater than 0 would be your lookup.&amp;#160; So you could have a value of 00100 which would tell me one review for X type was performed.&lt;/p&gt;  &lt;p&gt;Select *&lt;/p&gt;  &lt;p&gt;From ( &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Select c.ID, Substring(review, 3, 1) as MyValue &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; From Person AS p Inner Join Case as c ON p.ID = c.pID Inner Join stageTable m ON p.SSN&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ) AS RefTable&lt;/p&gt;  &lt;p&gt;Where MyValue &amp;gt; 0&lt;/p&gt;  &lt;p&gt;I have five of these queries and five Data Flows that insert my data into the correct format.&lt;/p&gt;  &lt;p&gt;Now when I run the packages the execution time over the same dataset is much better.&amp;#160; I went from over four hours to ~8 seconds!&amp;#160; Now that is a performance gain to brag about.&lt;/p&gt;  &lt;p&gt;I also recommend the following books in regards to help performance tune your packages.&lt;/p&gt;  &lt;p&gt;&amp;quot;&lt;a href="http://www.amazon.com/Microsoft-Server-2005-Integration-Services/dp/0672327813/ref=sr_11_1/105-1375203-8987619?ie=UTF8&amp;amp;qid=1186502536&amp;amp;sr=11-1"&gt;Microsoft SQL Server 2005: Integration Services&lt;/a&gt;&amp;quot; by Kirk Haselden (Development Manager on the Integration Services team)&lt;/p&gt;  &lt;p&gt;&amp;quot;&lt;a href="http://www.amazon.com/Expert-Server-Integration-Services-Programmer/dp/0470134119/ref=sr_11_1/105-1375203-8987619?ie=UTF8&amp;amp;qid=1186502469&amp;amp;sr=11-1"&gt;Expert SQL Server 2005 Integration Services&lt;/a&gt;&amp;quot; by Brian Knight and Erik Veerman (both SQL Server MVP's)&lt;/p&gt;  &lt;p&gt;There is also a great article on the web that also points you in the right direction with regards to performance tuning.&lt;/p&gt;  &lt;p&gt;&amp;quot;&lt;a href="http://www.microsoft.com/technet/prodtechnol/sql/2005/ssisperf.mspx"&gt;Microsoft SQL Server 2005 Integration Services: Performance Tuning Techniques&lt;/a&gt;&amp;quot; by Elizabeth Vitt&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8729959" width="1" height="1"&gt;</content><author><name>bspann</name><uri>http://blogs.msdn.com/members/bspann.aspx</uri></author><category term="SQL Server 2005" scheme="http://blogs.msdn.com/bspann/archive/tags/SQL+Server+2005/default.aspx" /><category term="SQL Server Integration Services" scheme="http://blogs.msdn.com/bspann/archive/tags/SQL+Server+Integration+Services/default.aspx" /><category term="SSIS" scheme="http://blogs.msdn.com/bspann/archive/tags/SSIS/default.aspx" /></entry><entry><title>Transaction Around Non-Transaction Pieces</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/bspann/archive/2008/07/14/transaction-around-non-transaction-pieces.aspx" /><id>http://blogs.msdn.com/bspann/archive/2008/07/14/transaction-around-non-transaction-pieces.aspx</id><published>2008-07-14T02:19:45Z</published><updated>2008-07-14T02:19:45Z</updated><content type="html">&lt;p&gt;&lt;/p&gt;  &lt;p&gt;Modern databases deal with transactions seamlessly.&amp;#160; But what do you do when you want an entry added/removed to/from a database table after you perform some task on a non-transactional portion of your system, say Active Directory or even the file system?&amp;#160; Well the answer depends on the order in which you have to do things.&amp;#160; So if you can Insert a record into a database table then create/delete a user from Active Directory then you can use TransactionScope in the .NET Framework 2.0.&amp;#160; On the other hand if you cannot get around the order in which things have to occur, then you have to do your own management of transactions. &lt;/p&gt;  &lt;h4&gt;Background of TransactionScope Class&lt;/h4&gt;  &lt;p&gt;&lt;a&gt;&lt;/a&gt;    &lt;p&gt;The &lt;/p&gt;   &lt;a href="http://msdn2.microsoft.com/system.transactions.aspx"&gt;System.Transactions&lt;/a&gt; infrastructure provides both an explicit programming model based on the &lt;a href="http://msdn2.microsoft.com/system.transactions.transaction.aspx"&gt;Transaction&lt;/a&gt; class, as well as an implicit programming model using the &lt;b&gt;TransactionScope&lt;/b&gt; class, in which transactions are automatically managed by the infrastructure. &lt;/p&gt;  &lt;p&gt;&lt;img alt="Note" src="http://msdn2.microsoft.com/h5w5se33.note(en-us,VS.85).gif" /&gt;Important: &lt;/p&gt;  &lt;p&gt;It is recommended that you create implicit transactions using the &lt;b&gt;TransactionScope&lt;/b&gt; class, so that the ambient transaction context is automatically managed for you. You should also use the &lt;b&gt;TransactionScope&lt;/b&gt; and &lt;a href="http://msdn2.microsoft.com/system.transactions.dependenttransaction.aspx"&gt;DependentTransaction&lt;/a&gt; class for applications that require the use of the same transaction across multiple function calls or multiple thread calls. For more information on this model, see the &lt;a href="http://msdn2.microsoft.com/ms172152.aspx"&gt;Implement Implicit Transactions using Transaction Scope&lt;/a&gt; topic. For more information on writing a transactional application, see &lt;a href="http://msdn2.microsoft.com/ms229973.aspx"&gt;Writing A Transactional Application&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Upon instantiating a &lt;b&gt;TransactionScope&lt;/b&gt; by the &lt;b&gt;new&lt;/b&gt; statement, the transaction manager determines which transaction to participate in. Once determined, the scope always participates in that transaction. The decision is based on two factors: whether an ambient transaction is present and the value of the &lt;b&gt;TransactionScopeOption&lt;/b&gt; parameter in the constructor. The ambient transaction is the transaction your code executes in. You can obtain a reference to the ambient transaction by calling the static &lt;a href="http://msdn2.microsoft.com/system.transactions.transaction.current.aspx"&gt;Current&lt;/a&gt; property of the &lt;b&gt;Transaction&lt;/b&gt; class. For more information on how this parameter is used, please see the &amp;quot;Transaction Flow Management&amp;quot; section of the &lt;a href="http://msdn2.microsoft.com/ms172152.aspx"&gt;Implement Implicit Transactions using Transaction Scope&lt;/a&gt; topic. &lt;/p&gt;  &lt;p&gt;If no exception occurs within the transaction scope (that is, between the initialization of the &lt;b&gt;TransactionScope&lt;/b&gt; object and the calling of its &lt;a href="http://msdn2.microsoft.com/system.transactions.transactionscope.dispose.aspx"&gt;Dispose&lt;/a&gt; method), then the transaction in which the scope participates is allowed to proceed. If an exception does occur within the transaction scope, the transaction in which it participates will be rolled back. &lt;/p&gt;  &lt;p&gt;When your application completes all work it wants to perform in a transaction, you should call the &lt;a href="http://msdn2.microsoft.com/system.transactions.transactionscope.complete.aspx"&gt;Complete&lt;/a&gt; method only once to inform that transaction manager that it is acceptable to commit the transaction. Failing to call this method aborts the transaction. &lt;/p&gt;  &lt;p&gt;A call to the &lt;b&gt;Dispose&lt;/b&gt; method marks the end of the transaction scope. Exceptions that occur after calling this method may not affect the transaction. &lt;/p&gt;  &lt;p&gt;If you modify the value of &lt;b&gt;Current&lt;/b&gt; inside a scope, an exception is thrown when &lt;b&gt;Dispose&lt;/b&gt; is called. However, at the end of the scope, the previous value is restored. In addition, if you call &lt;b&gt;Dispose&lt;/b&gt; on &lt;b&gt;Current&lt;/b&gt; inside a transaction scope that created the transaction, the transaction aborts at the end of the scope. &lt;/p&gt;  &lt;h4&gt;Code Example&lt;/h4&gt;  &lt;p&gt;using (TransactionScope ts = new TransactionScope())   &lt;br /&gt;{    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ApplicationRoleDao.RevokeUserAccess(applicationRoleId, userId); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Remove the user from the AD group   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.DirectoryServices.DirectoryEntry deGroups = Account.GetDirectoryEntry(pathGroups);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.DirectoryServices.DirectoryEntry deUsers = Account.GetDirectoryEntry(pathUsers);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string groupName = ApplicationRoleDao.GetActiveDirectoryGroup(applicationRoleId);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (!string.IsNullOrEmpty(groupName))    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Account.RemoveUserFromGroup(deGroups, Account.GetUserFromDirectory(deUsers, userId), groupName);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ts.Complete();   &lt;br /&gt;} &lt;/p&gt;  &lt;p&gt;So the code above will first remove the user from the database.&amp;#160; Then it will attempt to remove the user from Active Directory.&amp;#160; If either action throws an exception, the transaction in the database will roll back and the user will still be in the system.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8729957" width="1" height="1"&gt;</content><author><name>bspann</name><uri>http://blogs.msdn.com/members/bspann.aspx</uri></author><category term=".NET 3.5" scheme="http://blogs.msdn.com/bspann/archive/tags/.NET+3.5/default.aspx" /><category term=".NET 2.0" scheme="http://blogs.msdn.com/bspann/archive/tags/.NET+2.0/default.aspx" /><category term="TransactionScope" scheme="http://blogs.msdn.com/bspann/archive/tags/TransactionScope/default.aspx" /><category term="C#" scheme="http://blogs.msdn.com/bspann/archive/tags/C_2300_/default.aspx" /></entry></feed>