<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://robgarrett.com/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Rob Garrett - Blogs</title><link>http://robgarrett.com/cs/blogs/default.aspx</link><description>He's not Neil Diamond</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61019.2)</generator><image><title>Rob Garrett - Blogs</title><url>http://robgarrett.com/cs/rglogo.gif</url><link>http://robgarrett.com/cs/blogs/default.aspx</link><width>143</width><height>30</height><description>He's not Neil Diamond</description></image><item><title>Abobe 32-bit IFilter on MOSS 64-bit Platform</title><link>http://robgarrett.com/cs/blogs/software/archive/2008/07/15/abobe-32-bit-ifilter-on-moss-64-bit-platform.aspx</link><pubDate>Tue, 15 Jul 2008 13:51:59 GMT</pubDate><guid isPermaLink="false">0fcc0c54-c0c4-4166-a666-de6d73a84a29:3056</guid><dc:creator>Rob Garrett</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;See the following support page from Adobe:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://labs.adobe.com/wiki/index.php/PDF_iFilter_8_-_64-bit_Support" href="http://labs.adobe.com/wiki/index.php/PDF_iFilter_8_-_64-bit_Support"&gt;http://labs.adobe.com/wiki/index.php/PDF_iFilter_8_-_64-bit_Support&lt;/a&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a title="Email Abobe+32-bit+IFilter+on+MOSS+64-bit+Platform" href = "mailto:?body=Thought you might like this: http://robgarrett.com/cs/blogs/software/archive/2008/07/15/abobe-32-bit-ifilter-on-moss-64-bit-platform.aspx&amp;subject=Abobe+32-bit+IFilter+on+MOSS+64-bit+Platform"&gt;Email it!&lt;/a&gt; | &lt;a href = "http://del.icio.us/post?url=http://robgarrett.com/cs/blogs/software/archive/2008/07/15/abobe-32-bit-ifilter-on-moss-64-bit-platform.aspx&amp;title=Abobe+32-bit+IFilter+on+MOSS+64-bit+Platform" title="Submit Abobe+32-bit+IFilter+on+MOSS+64-bit+Platform to del.icio.us" &gt;bookmark it!&lt;/a&gt; | &lt;a href = "http://www.digg.com/submit?url=http://robgarrett.com/cs/blogs/software/archive/2008/07/15/abobe-32-bit-ifilter-on-moss-64-bit-platform.aspx&amp;phase=2" title="Submit Abobe+32-bit+IFilter+on+MOSS+64-bit+Platform to digg.com"&gt;digg it!&lt;/a&gt; | &lt;a href = "http://reddit.com/submit?url=http://robgarrett.com/cs/blogs/software/archive/2008/07/15/abobe-32-bit-ifilter-on-moss-64-bit-platform.aspx&amp;title=Abobe+32-bit+IFilter+on+MOSS+64-bit+Platform" title="Submit Abobe+32-bit+IFilter+on+MOSS+64-bit+Platform to reddit.com"&gt;reddit!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://robgarrett.com/cs/aggbug.aspx?PostID=3056" width="1" height="1"&gt;&lt;p align="right"&gt;&lt;img src="http://robgarrett.com/cs/rglogosmall.gif" alt="Logo" border="0"/&gt;&lt;br/&gt;Copyright &amp;copy; 2008 Rob Garrett&lt;/p&gt;</description><category domain="http://robgarrett.com/cs/blogs/software/archive/tags/Microsoft+SharePoint/default.aspx">Microsoft SharePoint</category></item><item><title>Helper Class for Avoiding Memory Leaks with SPSite and SPWeb Objects</title><link>http://robgarrett.com/cs/blogs/software/archive/2008/07/11/helper-class-for-avoiding-memory-leaks-with-spsite-and-spweb-objects.aspx</link><pubDate>Fri, 11 Jul 2008 19:35:19 GMT</pubDate><guid isPermaLink="false">0fcc0c54-c0c4-4166-a666-de6d73a84a29:3048</guid><dc:creator>Rob Garrett</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Microsoft provides a sophisticated API/Object Model for programmatic access to the SharePoint from .NET custom code.&amp;#160; &lt;/p&gt;  &lt;p&gt;Invariably, most calls to the object model begin with a call to the &lt;font face="Courier New"&gt;&lt;strong&gt;SPSite&lt;/strong&gt;&lt;/font&gt; and &lt;font face="Courier New"&gt;&lt;strong&gt;SPWeb&lt;/strong&gt;&lt;/font&gt; objects, which represent the site collection and web accessed accordingly.&amp;#160; Developers must dispose the memory of any instance of &lt;font face="Courier New"&gt;&lt;strong&gt;SPSite&lt;/strong&gt;&lt;/font&gt; and &lt;font face="Courier New"&gt;&lt;strong&gt;SPWeb&lt;/strong&gt;&lt;/font&gt;.&amp;#160; This includes calls to &lt;font face="Courier New" size="2"&gt;&lt;strong&gt;site.AllWebs[]&lt;/strong&gt;&lt;/font&gt;, &lt;font face="Courier New"&gt;&lt;strong&gt;web.ParentWeb&lt;/strong&gt;&lt;/font&gt; etc.&amp;#160; The only exception is when using site and web instances from the &lt;strong&gt;&lt;font face="Courier New"&gt;SPContext&lt;/font&gt;&lt;/strong&gt; singleton, provided by the object model.&lt;/p&gt;  &lt;p&gt;For example, the following is code that I have sometimes observed:&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;SPSite site = &lt;span class="kwrd"&gt;new&lt;/span&gt; SPSite(&lt;span class="str"&gt;&amp;quot;http://myMOSSsite/&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;SPWeb web = site.OpenWeb();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;SPList list = web.Lists[&lt;span class="str"&gt;&amp;quot;MyList&amp;quot;&lt;/span&gt;];&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;The above code leaks memory and resources, since the developer is allocating a site and web instance and never disposing of the objects.&amp;#160; A better approach is the following 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;using&lt;/span&gt; (SPSite site = &lt;span class="kwrd"&gt;new&lt;/span&gt; SPSite(&lt;span class="str"&gt;&amp;quot;http://myMOSSsite/&amp;quot;&lt;/span&gt;))&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;    &lt;span class="kwrd"&gt;using&lt;/span&gt; (SPWeb web = site.OpenWeb())&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        SPList list = web.Lists[&lt;span class="str"&gt;&amp;quot;MyList&amp;quot;&lt;/span&gt;];&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;

&lt;p&gt;The second code example guarantees the clean up of &lt;font face="Courier New"&gt;&lt;strong&gt;SPSite&lt;/strong&gt;&lt;/font&gt; and &lt;font face="Courier New"&gt;&lt;strong&gt;SPWeb&lt;/strong&gt;&lt;/font&gt; objects when the execution leaves scope, the problem occurs with the use of the &lt;strong&gt;&lt;font face="Courier New"&gt;SPList&lt;/font&gt;&lt;/strong&gt; object instance.&amp;#160; Occasionally I have seen the above code wrapped into a method, which then returns the &lt;strong&gt;&lt;font face="Courier New"&gt;SPList&lt;/font&gt;&lt;/strong&gt; object.&amp;#160; Surprisingly, SharePoint allows you to use the list object instance, even though the parent web and site objects were disposed at the end of the method.&amp;#160; This situation should be avoided and SharePoint will leave plenty of error messages in the logs to warn you of this fact.&lt;/p&gt;

&lt;p&gt;A best practice is to never return &lt;font face="Courier New"&gt;&lt;strong&gt;SPSite&lt;/strong&gt;&lt;/font&gt; and &lt;font face="Courier New"&gt;&lt;strong&gt;SPWeb&lt;/strong&gt;&lt;/font&gt; objects from methods, since it is not immediately clear whether the caller of your method is responsible for disposing web ands site objects (the method may be using &lt;strong&gt;&lt;font face="Courier New"&gt;SPContext&lt;/font&gt;&lt;/strong&gt; or maybe allocating a new instance).&amp;#160; Developers should also avoid returning &lt;font face="Courier New"&gt;&lt;strong&gt;SPSite&lt;/strong&gt;&lt;/font&gt; and &lt;font face="Courier New"&gt;&lt;strong&gt;SPWeb&lt;/strong&gt;&lt;/font&gt; dependent objects unless the &lt;font face="Courier New"&gt;&lt;strong&gt;SPWeb&lt;/strong&gt;&lt;/font&gt; instance is passed to the method or the method is categorically using &lt;strong&gt;&lt;font face="Courier New"&gt;SPContext&lt;/font&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Since we're avoiding passing around references to these potentially leaky objects, how should developers write code?&lt;/p&gt;

&lt;p&gt;The answer is to use delegates.&amp;#160; The following code is a handy helper class that encapsulates the use of &lt;font face="Courier New"&gt;&lt;strong&gt;SPSite&lt;/strong&gt;&lt;/font&gt; and &lt;font face="Courier New"&gt;&lt;strong&gt;SPWeb&lt;/strong&gt;&lt;/font&gt; objects, and executes custom code via delegates:&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="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="rem"&gt;/// Helper class to prevent memory leakage in SharePoint Object Model calls.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; SPHelper&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="preproc"&gt;#region&lt;/span&gt; Methods&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        &lt;span class="rem"&gt;/// Get a SPSite reference for a given &amp;lt;paramref name=&amp;quot;url&amp;quot;&amp;gt;site URL&amp;lt;/paramref&amp;gt; and execute&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        &lt;span class="rem"&gt;/// a given &amp;lt;paramref name=&amp;quot;action&amp;quot;&amp;gt;Action&amp;lt;/paramref&amp;gt;.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;url&amp;quot;&amp;gt;Site Url.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;action&amp;quot;&amp;gt;Action delegate.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GetSite(&lt;span class="kwrd"&gt;string&lt;/span&gt; url, Action&amp;lt;SPSite&amp;gt; action)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (String.IsNullOrEmpty(url))&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; ArgumentNullException(&lt;span class="str"&gt;&amp;quot;url&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;null&lt;/span&gt; == action)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; ArgumentNullException(&lt;span class="str"&gt;&amp;quot;action&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;            &lt;span class="kwrd"&gt;using&lt;/span&gt; (var site = &lt;span class="kwrd"&gt;new&lt;/span&gt; SPSite(url))&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;                action(site);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;        &lt;span class="rem"&gt;/// Get an SPSite and SPWeb reference for a given &amp;lt;paramref name=&amp;quot;url&amp;quot;&amp;gt;site URL&amp;lt;/paramref&amp;gt; and execute&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;        &lt;span class="rem"&gt;/// a given &amp;lt;paramref name=&amp;quot;action&amp;quot;&amp;gt;Action&amp;lt;/paramref&amp;gt;.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;url&amp;quot;&amp;gt;Web Url.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;action&amp;quot;&amp;gt;Action delegate.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GetWeb(&lt;span class="kwrd"&gt;string&lt;/span&gt; url, Action&amp;lt;SPSite, SPWeb&amp;gt; action)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (String.IsNullOrEmpty(url))&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; ArgumentNullException(&lt;span class="str"&gt;&amp;quot;url&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;null&lt;/span&gt; == action)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; ArgumentNullException(&lt;span class="str"&gt;&amp;quot;action&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;            &lt;span class="kwrd"&gt;using&lt;/span&gt; (var site = &lt;span class="kwrd"&gt;new&lt;/span&gt; SPSite(url))&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;            {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;                &lt;span class="kwrd"&gt;using&lt;/span&gt; (var web = site.OpenWeb())&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;                {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;null&lt;/span&gt; == web)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;                        &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; SPException(&lt;span class="str"&gt;&amp;quot;Failed to open web&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;                    action(site, web);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;                }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;            }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;        &lt;span class="rem"&gt;/// Get an SPSite and SPWeb (root) reference for a given &amp;lt;paramref name=&amp;quot;url&amp;quot;&amp;gt;site URL&amp;lt;/paramref&amp;gt; and execute&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;        &lt;span class="rem"&gt;/// a given &amp;lt;paramref name=&amp;quot;action&amp;quot;&amp;gt;Action&amp;lt;/paramref&amp;gt;.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;url&amp;quot;&amp;gt;Site Url.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;action&amp;quot;&amp;gt;Action delegate.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GetRootWeb(&lt;span class="kwrd"&gt;string&lt;/span&gt; url, Action&amp;lt;SPSite, SPWeb&amp;gt; action)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (String.IsNullOrEmpty(url))&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  56:  &lt;/span&gt;                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; ArgumentNullException(&lt;span class="str"&gt;&amp;quot;url&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  57:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;null&lt;/span&gt; == action)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt;                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; ArgumentNullException(&lt;span class="str"&gt;&amp;quot;action&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  59:  &lt;/span&gt;            &lt;span class="kwrd"&gt;using&lt;/span&gt; (var site = &lt;span class="kwrd"&gt;new&lt;/span&gt; SPSite(url))&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  60:  &lt;/span&gt;            {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  61:  &lt;/span&gt;                &lt;span class="kwrd"&gt;using&lt;/span&gt; (var web = site.RootWeb)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  62:  &lt;/span&gt;                {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  63:  &lt;/span&gt;                    action(site, web);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  64:  &lt;/span&gt;                }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  65:  &lt;/span&gt;            }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  66:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  67:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  68:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  69:  &lt;/span&gt;        &lt;span class="rem"&gt;/// Get an SPSite and SPWeb reference for a given &amp;lt;paramref name=&amp;quot;url&amp;quot;&amp;gt;site URL&amp;lt;/paramref&amp;gt; and&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  70:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;paramref name=&amp;quot;username&amp;quot;/&amp;gt; and execute&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  71:  &lt;/span&gt;        &lt;span class="rem"&gt;/// a given &amp;lt;paramref name=&amp;quot;action&amp;quot;&amp;gt;Action&amp;lt;/paramref&amp;gt;.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  72:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  73:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;remarks&amp;gt;Username must be a user in the site.&amp;lt;/remarks&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  74:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;url&amp;quot;&amp;gt;Site Url.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  75:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;username&amp;quot;&amp;gt;Username with access to the web.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  76:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;action&amp;quot;&amp;gt;Action delegate.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  77:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GetSecureWeb(&lt;span class="kwrd"&gt;string&lt;/span&gt; url, &lt;span class="kwrd"&gt;string&lt;/span&gt; username, Action&amp;lt;SPSite, SPWeb, SPUser&amp;gt; action)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  78:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  79:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (String.IsNullOrEmpty(url))&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  80:  &lt;/span&gt;                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; ArgumentNullException(&lt;span class="str"&gt;&amp;quot;url&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  81:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (String.IsNullOrEmpty(username))&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  82:  &lt;/span&gt;                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; ArgumentNullException(&lt;span class="str"&gt;&amp;quot;username&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  83:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;null&lt;/span&gt; == action)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  84:  &lt;/span&gt;                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; ArgumentNullException(&lt;span class="str"&gt;&amp;quot;action&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  85:  &lt;/span&gt;            &lt;span class="rem"&gt;// Open the regular web first.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  86:  &lt;/span&gt;            &lt;span class="kwrd"&gt;using&lt;/span&gt; (var site = &lt;span class="kwrd"&gt;new&lt;/span&gt; SPSite(url))&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  87:  &lt;/span&gt;            {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  88:  &lt;/span&gt;                &lt;span class="kwrd"&gt;using&lt;/span&gt; (var web = site.RootWeb)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  89:  &lt;/span&gt;                {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  90:  &lt;/span&gt;                    &lt;span class="rem"&gt;// See if user is registered with the root web.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  91:  &lt;/span&gt;                    var user = web.AllUsers[username];&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  92:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;null&lt;/span&gt; == user)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  93:  &lt;/span&gt;                        &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; SPException(&lt;span class="str"&gt;&amp;quot;No user found&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  94:  &lt;/span&gt;                    &lt;span class="rem"&gt;// Open the secure site.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  95:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;using&lt;/span&gt; (var secureSite = &lt;span class="kwrd"&gt;new&lt;/span&gt; SPSite(url, user.UserToken))&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  96:  &lt;/span&gt;                    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  97:  &lt;/span&gt;                        &lt;span class="kwrd"&gt;using&lt;/span&gt; (var secureWeb = secureSite.OpenWeb())&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  98:  &lt;/span&gt;                        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  99:  &lt;/span&gt;                            &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;null&lt;/span&gt; == secureWeb)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 100:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; SPException(&lt;span class="str"&gt;&amp;quot;Failed to open secure web&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 101:  &lt;/span&gt;                            action(secureSite, secureWeb, user);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 102:  &lt;/span&gt;                        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 103:  &lt;/span&gt;                    }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 104:  &lt;/span&gt;                }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 105:  &lt;/span&gt;            }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 106:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 107:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 108:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 109:  &lt;/span&gt;        &lt;span class="rem"&gt;/// Get an SPSite and SPWeb (root) reference for a given &lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 110:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;paramref name=&amp;quot;url&amp;quot;&amp;gt;site Url&amp;lt;/paramref&amp;gt; and&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 111:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;paramref name=&amp;quot;title&amp;quot;&amp;gt;web title&amp;lt;/paramref&amp;gt; and execute&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 112:  &lt;/span&gt;        &lt;span class="rem"&gt;/// a given &amp;lt;paramref name=&amp;quot;action&amp;quot;&amp;gt;Action&amp;lt;/paramref&amp;gt;.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 113:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 114:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;url&amp;quot;&amp;gt;Site Url.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 115:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;title&amp;quot;&amp;gt;Web Title.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 116:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;action&amp;quot;&amp;gt;Action delegate.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 117:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GetWebByTitle(&lt;span class="kwrd"&gt;string&lt;/span&gt; url, &lt;span class="kwrd"&gt;string&lt;/span&gt; title, Action&amp;lt;SPSite, SPWeb&amp;gt; action)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 118:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 119:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (String.IsNullOrEmpty(url))&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 120:  &lt;/span&gt;                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; ArgumentNullException(&lt;span class="str"&gt;&amp;quot;url&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 121:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (String.IsNullOrEmpty(title))&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 122:  &lt;/span&gt;                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; ArgumentNullException(&lt;span class="str"&gt;&amp;quot;title&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 123:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;null&lt;/span&gt; == action)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 124:  &lt;/span&gt;                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; ArgumentNullException(&lt;span class="str"&gt;&amp;quot;action&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 125:  &lt;/span&gt;            &lt;span class="kwrd"&gt;using&lt;/span&gt; (var site = &lt;span class="kwrd"&gt;new&lt;/span&gt; SPSite(url))&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 126:  &lt;/span&gt;            {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 127:  &lt;/span&gt;                &lt;span class="kwrd"&gt;using&lt;/span&gt; (var web = site.AllWebs[title])&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 128:  &lt;/span&gt;                {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 129:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;null&lt;/span&gt; == web)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 130:  &lt;/span&gt;                        &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; SPException(&lt;span class="str"&gt;&amp;quot;Web not found&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 131:  &lt;/span&gt;                    action(site, web);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 132:  &lt;/span&gt;                }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 133:  &lt;/span&gt;            }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 134:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 135:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 136:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 137:  &lt;/span&gt;        &lt;span class="rem"&gt;/// Get an SPSite and SPWeb (parent) reference for a given &lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 138:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;paramref name=&amp;quot;url&amp;quot;&amp;gt;site Url&amp;lt;/paramref&amp;gt; and&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 139:  &lt;/span&gt;        &lt;span class="rem"&gt;/// a given &amp;lt;paramref name=&amp;quot;action&amp;quot;&amp;gt;Action&amp;lt;/paramref&amp;gt;.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 140:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 141:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;url&amp;quot;&amp;gt;Site Url.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 142:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;action&amp;quot;&amp;gt;Action delegate.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 143:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GetParentWeb(&lt;span class="kwrd"&gt;string&lt;/span&gt; url, Action&amp;lt;SPSite, SPWeb&amp;gt; action)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 144:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 145:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (String.IsNullOrEmpty(url))&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 146:  &lt;/span&gt;                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; ArgumentNullException(&lt;span class="str"&gt;&amp;quot;url&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 147:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;null&lt;/span&gt; == action)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 148:  &lt;/span&gt;                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; ArgumentNullException(&lt;span class="str"&gt;&amp;quot;action&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 149:  &lt;/span&gt;            &lt;span class="kwrd"&gt;using&lt;/span&gt; (var site = &lt;span class="kwrd"&gt;new&lt;/span&gt; SPSite(url))&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 150:  &lt;/span&gt;            {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 151:  &lt;/span&gt;                &lt;span class="kwrd"&gt;using&lt;/span&gt; (var web = site.OpenWeb())&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 152:  &lt;/span&gt;                {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 153:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;null&lt;/span&gt; == web)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 154:  &lt;/span&gt;                        &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; SPException(&lt;span class="str"&gt;&amp;quot;Cannot open web&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 155:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (web.IsRootWeb)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 156:  &lt;/span&gt;                        &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; SPException(&lt;span class="str"&gt;&amp;quot;Url has no parent web.&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 157:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;using&lt;/span&gt; (var parentWeb = web.ParentWeb)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 158:  &lt;/span&gt;                        action(site, parentWeb);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 159:  &lt;/span&gt;                }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 160:  &lt;/span&gt;            }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 161:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 162:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 163:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 164:  &lt;/span&gt;        &lt;span class="rem"&gt;/// Get a SPSite reference for a given &amp;lt;paramref name=&amp;quot;url&amp;quot;&amp;gt;site URL&amp;lt;/paramref&amp;gt; and execute&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 165:  &lt;/span&gt;        &lt;span class="rem"&gt;/// a given &amp;lt;paramref name=&amp;quot;action&amp;quot;&amp;gt;Action&amp;lt;/paramref&amp;gt;. Elevate to SharePoint service account&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 166:  &lt;/span&gt;        &lt;span class="rem"&gt;/// before opening.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 167:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 168:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;url&amp;quot;&amp;gt;Site Url.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 169:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;action&amp;quot;&amp;gt;Action delegate.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 170:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GetSiteElevated(&lt;span class="kwrd"&gt;string&lt;/span&gt; url, Action&amp;lt;SPSite&amp;gt; action)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 171:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 172:  &lt;/span&gt;            SPSecurity.RunWithElevatedPrivileges(() =&amp;gt; GetSite(url, action));&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 173:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 174:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 175:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 176:  &lt;/span&gt;        &lt;span class="rem"&gt;/// Get an SPSite and SPWeb reference for a given &amp;lt;paramref name=&amp;quot;url&amp;quot;&amp;gt;site URL&amp;lt;/paramref&amp;gt; and execute&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 177:  &lt;/span&gt;        &lt;span class="rem"&gt;/// a given &amp;lt;paramref name=&amp;quot;action&amp;quot;&amp;gt;Action&amp;lt;/paramref&amp;gt;. Elevate to SharePoint service account&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 178:  &lt;/span&gt;        &lt;span class="rem"&gt;/// before opening.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 179:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 180:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;url&amp;quot;&amp;gt;Web Url.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 181:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;action&amp;quot;&amp;gt;Action delegate.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 182:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GetWebElevated(&lt;span class="kwrd"&gt;string&lt;/span&gt; url, Action&amp;lt;SPSite, SPWeb&amp;gt; action)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 183:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 184:  &lt;/span&gt;            SPSecurity.RunWithElevatedPrivileges(() =&amp;gt; GetWeb(url, action));&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 185:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 186:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 187:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 188:  &lt;/span&gt;        &lt;span class="rem"&gt;/// Get an SPSite and SPWeb (root) reference for a given &amp;lt;paramref name=&amp;quot;url&amp;quot;&amp;gt;site URL&amp;lt;/paramref&amp;gt; and execute&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 189:  &lt;/span&gt;        &lt;span class="rem"&gt;/// a given &amp;lt;paramref name=&amp;quot;action&amp;quot;&amp;gt;Action&amp;lt;/paramref&amp;gt;. Elevate to SharePoint service account&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 190:  &lt;/span&gt;        &lt;span class="rem"&gt;/// before opening.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 191:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 192:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;url&amp;quot;&amp;gt;Site Url.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 193:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;action&amp;quot;&amp;gt;Action delegate.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 194:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GetRootWebElevated(&lt;span class="kwrd"&gt;string&lt;/span&gt; url, Action&amp;lt;SPSite, SPWeb&amp;gt; action)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 195:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 196:  &lt;/span&gt;            SPSecurity.RunWithElevatedPrivileges(() =&amp;gt; GetRootWeb(url, action));&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 197:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 198:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 199:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 200:  &lt;/span&gt;        &lt;span class="rem"&gt;/// Get an SPSite and SPWeb (root) reference for a given &lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 201:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;paramref name=&amp;quot;url&amp;quot;&amp;gt;site Url&amp;lt;/paramref&amp;gt; and&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 202:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;paramref name=&amp;quot;title&amp;quot;&amp;gt;web title&amp;lt;/paramref&amp;gt; and execute&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 203:  &lt;/span&gt;        &lt;span class="rem"&gt;/// a given &amp;lt;paramref name=&amp;quot;action&amp;quot;&amp;gt;Action&amp;lt;/paramref&amp;gt;. &lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 204:  &lt;/span&gt;        &lt;span class="rem"&gt;/// Elevate to SharePoint service account before opening.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 205:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 206:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;url&amp;quot;&amp;gt;Site Url.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 207:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;title&amp;quot;&amp;gt;Web Title.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 208:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;action&amp;quot;&amp;gt;Action delegate.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 209:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GetWebByTitleElevated(&lt;span class="kwrd"&gt;string&lt;/span&gt; url, &lt;span class="kwrd"&gt;string&lt;/span&gt; title, Action&amp;lt;SPSite, SPWeb&amp;gt; action)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 210:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 211:  &lt;/span&gt;            SPSecurity.RunWithElevatedPrivileges(() =&amp;gt; GetWebByTitle(url, title, action));&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 212:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 213:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 214:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 215:  &lt;/span&gt;        &lt;span class="rem"&gt;/// Get an SPSite and SPWeb (parent) reference for a given &lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 216:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;paramref name=&amp;quot;url&amp;quot;&amp;gt;site Url&amp;lt;/paramref&amp;gt; and&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 217:  &lt;/span&gt;        &lt;span class="rem"&gt;/// a given &amp;lt;paramref name=&amp;quot;action&amp;quot;&amp;gt;Action&amp;lt;/paramref&amp;gt;.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 218:  &lt;/span&gt;        &lt;span class="rem"&gt;/// Elevate to SharePoint service account before opening.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 219:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 220:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;url&amp;quot;&amp;gt;Site Url.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 221:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;action&amp;quot;&amp;gt;Action delegate.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 222:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GetParentWebElevated(&lt;span class="kwrd"&gt;string&lt;/span&gt; url, Action&amp;lt;SPSite, SPWeb&amp;gt; action)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 223:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 224:  &lt;/span&gt;            SPSecurity.RunWithElevatedPrivileges(() =&amp;gt; GetParentWeb(url, action));&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 225:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 226:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 227:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 228:  &lt;/span&gt;        &lt;span class="rem"&gt;/// Get an SPSite and SPWeb reference for a given &amp;lt;paramref name=&amp;quot;url&amp;quot;&amp;gt;site URL&amp;lt;/paramref&amp;gt; and&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 229:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;paramref name=&amp;quot;username&amp;quot;/&amp;gt; and execute&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 230:  &lt;/span&gt;        &lt;span class="rem"&gt;/// a given &amp;lt;paramref name=&amp;quot;action&amp;quot;&amp;gt;Action&amp;lt;/paramref&amp;gt;.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 231:  &lt;/span&gt;        &lt;span class="rem"&gt;/// Elevate to SharePoint service account before opening.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 232:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 233:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;remarks&amp;gt;Username must be a user in the site.&amp;lt;/remarks&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 234:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;url&amp;quot;&amp;gt;Site Url.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 235:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;username&amp;quot;&amp;gt;Username with access to the web.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 236:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;action&amp;quot;&amp;gt;Action delegate.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 237:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; GetSecureWebElevated(&lt;span class="kwrd"&gt;string&lt;/span&gt; url, &lt;span class="kwrd"&gt;string&lt;/span&gt; username, Action&amp;lt;SPSite, SPWeb, SPUser&amp;gt; action)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 238:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 239:  &lt;/span&gt;            SPSecurity.RunWithElevatedPrivileges(() =&amp;gt; GetSecureWeb(url, username, action));&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 240:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 241:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt; 242:  &lt;/span&gt;        &lt;span class="preproc"&gt;#endregion&lt;/span&gt; Methods&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 243:  &lt;/span&gt;    }&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Using the above helper class, developers need never allocate web or site objects.&amp;#160; Furthermore, since each method call above cleans up memory after execution, developers never need to worry about too many web or site instances lying around waiting for garbage collection (also greeted with a nice error message in the log).&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a title="Email Helper+Class+for+Avoiding+Memory+Leaks+with+SPSite+and+SPWeb+Objects" href = "mailto:?body=Thought you might like this: http://robgarrett.com/cs/blogs/software/archive/2008/07/11/helper-class-for-avoiding-memory-leaks-with-spsite-and-spweb-objects.aspx&amp;subject=Helper+Class+for+Avoiding+Memory+Leaks+with+SPSite+and+SPWeb+Objects"&gt;Email it!&lt;/a&gt; | &lt;a href = "http://del.icio.us/post?url=http://robgarrett.com/cs/blogs/software/archive/2008/07/11/helper-class-for-avoiding-memory-leaks-with-spsite-and-spweb-objects.aspx&amp;title=Helper+Class+for+Avoiding+Memory+Leaks+with+SPSite+and+SPWeb+Objects" title="Submit Helper+Class+for+Avoiding+Memory+Leaks+with+SPSite+and+SPWeb+Objects to del.icio.us" &gt;bookmark it!&lt;/a&gt; | &lt;a href = "http://www.digg.com/submit?url=http://robgarrett.com/cs/blogs/software/archive/2008/07/11/helper-class-for-avoiding-memory-leaks-with-spsite-and-spweb-objects.aspx&amp;phase=2" title="Submit Helper+Class+for+Avoiding+Memory+Leaks+with+SPSite+and+SPWeb+Objects to digg.com"&gt;digg it!&lt;/a&gt; | &lt;a href = "http://reddit.com/submit?url=http://robgarrett.com/cs/blogs/software/archive/2008/07/11/helper-class-for-avoiding-memory-leaks-with-spsite-and-spweb-objects.aspx&amp;title=Helper+Class+for+Avoiding+Memory+Leaks+with+SPSite+and+SPWeb+Objects" title="Submit Helper+Class+for+Avoiding+Memory+Leaks+with+SPSite+and+SPWeb+Objects to reddit.com"&gt;reddit!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://robgarrett.com/cs/aggbug.aspx?PostID=3048" width="1" height="1"&gt;&lt;p align="right"&gt;&lt;img src="http://robgarrett.com/cs/rglogosmall.gif" alt="Logo" border="0"/&gt;&lt;br/&gt;Copyright &amp;copy; 2008 Rob Garrett&lt;/p&gt;</description><category domain="http://robgarrett.com/cs/blogs/software/archive/tags/Microsoft+SharePoint/default.aspx">Microsoft SharePoint</category></item><item><title>Users with Full Control Cannot Create Pages (MOSS 2007)</title><link>http://robgarrett.com/cs/blogs/software/archive/2008/07/09/users-with-full-control-cannot-create-pages-moss-2007.aspx</link><pubDate>Wed, 09 Jul 2008 21:07:04 GMT</pubDate><guid isPermaLink="false">0fcc0c54-c0c4-4166-a666-de6d73a84a29:3045</guid><dc:creator>Rob Garrett</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I had a client call me up with a MOSS 2007 permission problem.&amp;#160; The complaint was that users in a site owners group, with &amp;quot;full control&amp;quot; permission level, were unable to create a page anywhere in the WCM site collection.&lt;/p&gt;  &lt;p&gt;Turns out that somewhere along the line the approvers group was deleted by mistake, which inadvertently removed read access to the Master Page Gallery.&amp;#160; Adding the approvers group back to the MPG with read access fixed the issue.&lt;/p&gt;  &lt;p&gt;I cannot take credit because I found the answer &lt;a href="http://wss.asaris.de/sites/walsh/Lists/WSSv3%20FAQ/DispForm.aspx?ID=1148" target="_blank"&gt;here&lt;/a&gt;. &lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a title="Email Users+with+Full+Control+Cannot+Create+Pages+(MOSS+2007)" href = "mailto:?body=Thought you might like this: http://robgarrett.com/cs/blogs/software/archive/2008/07/09/users-with-full-control-cannot-create-pages-moss-2007.aspx&amp;subject=Users+with+Full+Control+Cannot+Create+Pages+(MOSS+2007)"&gt;Email it!&lt;/a&gt; | &lt;a href = "http://del.icio.us/post?url=http://robgarrett.com/cs/blogs/software/archive/2008/07/09/users-with-full-control-cannot-create-pages-moss-2007.aspx&amp;title=Users+with+Full+Control+Cannot+Create+Pages+(MOSS+2007)" title="Submit Users+with+Full+Control+Cannot+Create+Pages+(MOSS+2007) to del.icio.us" &gt;bookmark it!&lt;/a&gt; | &lt;a href = "http://www.digg.com/submit?url=http://robgarrett.com/cs/blogs/software/archive/2008/07/09/users-with-full-control-cannot-create-pages-moss-2007.aspx&amp;phase=2" title="Submit Users+with+Full+Control+Cannot+Create+Pages+(MOSS+2007) to digg.com"&gt;digg it!&lt;/a&gt; | &lt;a href = "http://reddit.com/submit?url=http://robgarrett.com/cs/blogs/software/archive/2008/07/09/users-with-full-control-cannot-create-pages-moss-2007.aspx&amp;title=Users+with+Full+Control+Cannot+Create+Pages+(MOSS+2007)" title="Submit Users+with+Full+Control+Cannot+Create+Pages+(MOSS+2007) to reddit.com"&gt;reddit!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://robgarrett.com/cs/aggbug.aspx?PostID=3045" width="1" height="1"&gt;&lt;p align="right"&gt;&lt;img src="http://robgarrett.com/cs/rglogosmall.gif" alt="Logo" border="0"/&gt;&lt;br/&gt;Copyright &amp;copy; 2008 Rob Garrett&lt;/p&gt;</description></item><item><title>SharePoint InfoPath Submission as Anonymous User</title><link>http://robgarrett.com/cs/blogs/software/archive/2008/07/01/sharepoint-infopath-submission-as-anonymous-user.aspx</link><pubDate>Tue, 01 Jul 2008 19:31:00 GMT</pubDate><guid isPermaLink="false">0fcc0c54-c0c4-4166-a666-de6d73a84a29:3029</guid><dc:creator>Rob Garrett</dc:creator><slash:comments>2</slash:comments><description>
&lt;p&gt;Creation of user submitted forms within web sites typically involves some HTML and JavaScript magic; to post data to a back end business storage or processing system.&amp;nbsp; ASP.NET relies on form HTTP POST exclusively to implement the page post back mechanism, familiar to all ASP.NET developers.&amp;nbsp; Developers manipulate form posted data using server-side code, invoked after form data is submitted to the web server.&amp;nbsp; In ASP.NET this code usually exists as code behind or code inline VB.NET or C#, using the Framework to access posted data via a dedicated request object.&amp;nbsp; So what about SharePoint?&lt;/p&gt;
  
&lt;p&gt;Microsoft&amp;#39;s answer to form submission in SharePoint is InfoPath Services.&amp;nbsp; Microsoft Office InfoPath 2007 supports web browser enabled forms within Microsoft Office SharePoint 2007 (&amp;quot;MOSS&amp;quot;) Enterprise using a dedicated InfoPath engine running in MOSS - InfoPath Server.&amp;nbsp; Unfortunately, if you&amp;#39;re using Windows SharePoint Services, or any version of MOSS below Enterprise then InfoPath Services is unavailable to you, and your left with the alternative of hosting ASP.NET forms using custom developed web parts or user controls.&lt;/p&gt;
  
&lt;p&gt;InfoPath Services work well - non-developers can create forms within InfoPath 2007 on their desktop and then publish these forms to a &amp;quot;forms library&amp;quot; in MOSS.&amp;nbsp; The problem comes about when hosting InfoPath forms in Publishing Web site collections with anonymous user access turned on.&amp;nbsp; Typically, site owners like to access form submitted data in a SharePoint list, for future processing, which is a problem when a user submitting form data is not authenticated.&amp;nbsp; Any good publishing site in MOSS utilizes the lock-down feature so anonymous users cannot access back-end lists, which includes write access.&amp;nbsp; With lock-down enabled, InfoPath Server is unable to submit anonymous user form data, and usually throws up an error.&amp;nbsp;&amp;nbsp; Fortunately there exists a clean solution, using web service submission, detailed below in this blog post...&lt;/p&gt;
  
&lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;Getting Started&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
  
&lt;p&gt;Before we get into the specifics of implementation be sure that your version of MOSS 2007 is Enterprise and that InfoPath Services is turned on.&amp;nbsp; Within &lt;strong&gt;SharePoint Central Administration&lt;/strong&gt;, under the &lt;strong&gt;Applications Management&lt;/strong&gt; tab, click &lt;strong&gt;Configure InfoPath Forms Services&lt;/strong&gt; under the &lt;strong&gt;InfoPath Forms Services&lt;/strong&gt; section.&lt;/p&gt;
  
&lt;p&gt;&lt;a href="http://robgarrett.com/photos/static/new/robgarrett_com/software/SharePointInfoPathSubmissionasAnonymousU_B838/image.png"&gt;&lt;img alt="image" border="0" height="527" src="http://robgarrett.com/photos/static/new/robgarrett_com/software/SharePointInfoPathSubmissionasAnonymousU_B838/image_thumb.png" style="border-width:0px;" width="804" /&gt;&lt;/a&gt; &lt;/p&gt;
  
&lt;p&gt;Make sure that the top two check boxes are checked to allow hosting of forms. &lt;/p&gt;
  
&lt;p&gt;Within the &lt;strong&gt;Site Settings&lt;/strong&gt; of the top level site collection of the SharePoint site hosting InfoPath Services, click &lt;strong&gt;Site Collection Features&lt;/strong&gt;. Make sure that &amp;quot;&lt;strong&gt;Office SharePoint Server Enterprise Site Collection features&lt;/strong&gt;&amp;quot; is enabled.&lt;/p&gt;
  
&lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;The Forms Library&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
  
&lt;p&gt;Next, create a &amp;quot;Form Library&amp;quot; within the host site collection - I suggest hosting at the top level site collection to make life easier.&amp;nbsp; For the purpose of this blog post I created a form library called &amp;quot;Test Forms.&amp;quot;&amp;nbsp; You can use the default forms library installed by SharePoint, although it&amp;#39;s best to create your own library to prevent overwriting existing published templates in the default library.&lt;/p&gt;
  
&lt;p&gt;&lt;a href="http://robgarrett.com/photos/static/new/robgarrett_com/software/SharePointInfoPathSubmissionasAnonymousU_B838/image_3.png"&gt;&lt;img alt="image" border="0" height="328" src="http://robgarrett.com/photos/static/new/robgarrett_com/software/SharePointInfoPathSubmissionasAnonymousU_B838/image_thumb_3.png" style="border-width:0px;" width="644" /&gt;&lt;/a&gt; &lt;/p&gt;
  
&lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;The Web Service&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
  
&lt;p&gt;This is the tricky part of this operation.&amp;nbsp; Rather than submitting directly to SharePoint from InfoPath we&amp;#39;re going to submit via a custom WCF Web Service, hosted in SharePoint.&amp;nbsp; Be sure to install .NET 3.0 (ideally .NET 3.5 also) on the SharePoint server.&amp;nbsp; &lt;/p&gt;
  
&lt;p&gt;Check that the WCF extensions are installed into IIS - the SVC file extension should map as follows:&lt;/p&gt;
  
&lt;p&gt;&lt;a href="http://robgarrett.com/photos/static/new/robgarrett_com/software/SharePointInfoPathSubmissionasAnonymousU_B838/image_4.png"&gt;&lt;img alt="image" border="0" height="772" src="http://robgarrett.com/photos/static/new/robgarrett_com/software/SharePointInfoPathSubmissionasAnonymousU_B838/image_thumb_4.png" style="border:0px none;" width="483" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
  
&lt;p&gt;Create a standard class library, create the following interface definition:&lt;/p&gt;
  &lt;div class="csharpcode"&gt;   
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;   [ServiceContract(Namespace = &lt;span class="str"&gt;&amp;quot;http://contoso.net/Schemas/WCF/InfoPathService/&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;interface&lt;/span&gt; IInfoPathService&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    {&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        &lt;span class="rem"&gt;/// Upload InfoPath form data to a library in SharePoint.&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;formData&amp;quot;&amp;gt;Form Data.&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        [OperationContract]&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        &lt;span class="kwrd"&gt;void&lt;/span&gt; PostInfoPathForm(&lt;span class="kwrd"&gt;string&lt;/span&gt; formData);&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    }&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Create a class that implements the above interface and includes the following methods:&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;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; PostInfoPathForm(&lt;span class="kwrd"&gt;string&lt;/span&gt; formData)&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;            &lt;span class="rem"&gt;// Use elevated privileges so anonymous users can upload through&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            &lt;span class="rem"&gt;// this service.&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;            SPSecurity.RunWithElevatedPrivileges(&lt;span class="kwrd"&gt;delegate&lt;/span&gt; { UploadToDocLibrary(formData); });&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        }&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; UploadToDocLibrary(&lt;span class="kwrd"&gt;string&lt;/span&gt; formData)&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        {&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;            &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;            {&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;                &lt;span class="rem"&gt;// With the form data submitted to this web service, we now&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;                &lt;span class="rem"&gt;// need to find the location for submitting list data.&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;                XmlDocument xmlDoc = &lt;span class="kwrd"&gt;new&lt;/span&gt; XmlDocument();&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;                xmlDoc.LoadXml(formData);&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;                &lt;span class="rem"&gt;// Get the XSN location&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;                XmlProcessingInstruction pi = &lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;                    (XmlProcessingInstruction)xmlDoc.SelectSingleNode(&lt;span class="str"&gt;&amp;quot;/processing-instruction(\&amp;quot;mso-infoPathSolution\&amp;quot;)&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;null&lt;/span&gt; != pi &amp;amp;&amp;amp; !String.IsNullOrEmpty(pi.Value))&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;                {&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;                    Match m = Regex.Match(pi.Value, &lt;span class="str"&gt;&amp;quot;href=\&amp;quot;(.+?)\&amp;quot;&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (m.Success &amp;amp;&amp;amp; m.Groups.Count &amp;gt; 1)&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;                    {&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;                        &lt;span class="kwrd"&gt;string&lt;/span&gt; xsnLoc = m.Groups[1].Value;&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;                        &lt;span class="kwrd"&gt;if&lt;/span&gt; (!xsnLoc.StartsWith(&lt;span class="str"&gt;&amp;quot;http&amp;quot;&lt;/span&gt;, StringComparison.OrdinalIgnoreCase) || !xsnLoc.ToLower().Contains(&lt;span class="str"&gt;&amp;quot;/forms/&amp;quot;&lt;/span&gt;))&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;                            &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Exception(&lt;span class="str"&gt;&amp;quot;XSN location is not a published InfoPath document library.&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;                        &lt;span class="rem"&gt;// Open the site and web, try to get the list.&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;                        &lt;span class="kwrd"&gt;using&lt;/span&gt; (SPSite site = &lt;span class="kwrd"&gt;new&lt;/span&gt; SPSite(xsnLoc))&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;                        {&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;                            &lt;span class="kwrd"&gt;using&lt;/span&gt; (SPWeb web = site.OpenWeb())&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;                            {&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;                                web.AllowUnsafeUpdates = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;string&lt;/span&gt; libLoc = xsnLoc.Substring(0, xsnLoc.LastIndexOf(&lt;span class="str"&gt;&amp;quot;/Forms/&amp;quot;&lt;/span&gt;));&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;                                &lt;span class="rem"&gt;// Upload form data to the library.&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;                                SPFolder folder = web.GetFolder(libLoc);&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;null&lt;/span&gt; == folder)&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;                                    &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Exception(&lt;span class="str"&gt;&amp;quot;Cannot find the InfoPath document library root folder.&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;                                UTF32Encoding encoder = &lt;span class="kwrd"&gt;new&lt;/span&gt; UTF32Encoding();&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;                                &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] data = encoder.GetBytes(formData);&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;                                folder.Files.Add(String.Format(&lt;span class="str"&gt;&amp;quot;{0}/{1}.xml&amp;quot;&lt;/span&gt;, libLoc, Guid.NewGuid()), data);&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;                                web.AllowUnsafeUpdates = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;                            }&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;                        }&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;                    }&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;                }&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;            }&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;            &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception ex)&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;            {&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Exception(&lt;span class="str"&gt;&amp;quot;Failed to upload form data&amp;quot;&lt;/span&gt;, ex);&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;            }&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;The above code runs as a privileged user, thus getting around the anonymous user posting problem, and submits the form data to the SharePoint on the users behalf.&amp;nbsp; The code above assumes that the InfoPath forms library exists at the same location as the XSN, which typically lives in the &amp;quot;Forms&amp;quot; folder of the library.&lt;/p&gt;

&lt;p&gt;Compile the class library and add the assembly to the GAC.&lt;/p&gt;

&lt;p&gt;Create an SVC file, named &lt;strong&gt;InfoPathService.svc,&lt;/strong&gt; as follows, replace the qualified name for the assembly in the GAC, and the service namespace.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&amp;lt;%@ Assembly Name=&lt;span class="str"&gt;&amp;quot;Fully qualified assembly name&amp;quot;&lt;/span&gt;%&amp;gt; &lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&amp;lt;%@ ServiceHost Service=&lt;span class="str"&gt;&amp;quot;My.Namespace.InfoPathService&amp;quot;&lt;/span&gt; %&amp;gt;&lt;/pre&gt;
&lt;/div&gt;


&lt;p&gt;Create a &lt;strong&gt;web.config&lt;/strong&gt; file as follows:&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;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;UTF-8&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;standalone&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;yes&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;system.serviceModel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;services&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;service&lt;/span&gt; &lt;span class="attr"&gt;behaviorConfiguration&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;InfoPathService.service1Behavior&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;My.Namespace.InfoPathService&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;endpoint&lt;/span&gt; &lt;span class="attr"&gt;binding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;basicHttpBinding&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;contract&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;My.Namespace.IInfoPathService&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;bindingNamespace&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://contoso.net/Schemas/WCF/InfoPathService/&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;service&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;services&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;behaviors&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;serviceBehaviors&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;behavior&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;InfoPathService.service1Behavior&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;serviceMetadata&lt;/span&gt; &lt;span class="attr"&gt;httpGetEnabled&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;serviceDebug&lt;/span&gt; &lt;span class="attr"&gt;includeExceptionDetailInFaults&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;behavior&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;serviceBehaviors&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;behaviors&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;system.serviceModel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  
&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Copy the &lt;strong&gt;InfoPathService.svc&lt;/strong&gt; and &lt;strong&gt;web.config&lt;/strong&gt; file to subdirectory: C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\ISAPI\MyWebServices&lt;/p&gt;

&lt;p&gt;Confirm that the service spins up using the address of your server, e.g:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://contoso.net/_vti_bin/MyWebServices/InfoPathWebService.svc"&gt;http://contoso.net/_vti_bin/MyWebServices/InfoPathWebService.svc&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;InfoPath&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With the web service installed and functioning inside SharePoint, it&amp;#39;s now time to create a form in InfoPath 2007, and publishing it to the SharePoint forms library.&amp;nbsp; Remember I created a form library at &lt;strong&gt;/Test Forms&lt;/strong&gt; earlier.&lt;/p&gt;

&lt;p&gt;Open InfoPath 2007 on your desktop and design a new form (I&amp;#39;m using a modified expense report).&lt;/p&gt;

&lt;p&gt;&lt;a href="http://robgarrett.com/photos/static/new/robgarrett_com/software/SharePointInfoPathSubmissionasAnonymousU_B838/image_5.png"&gt;&lt;img alt="image" border="0" height="582" src="http://robgarrett.com/photos/static/new/robgarrett_com/software/SharePointInfoPathSubmissionasAnonymousU_B838/image_thumb_5.png" style="border:0px none;" width="804" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Click the &lt;strong&gt;Design Checker&lt;/strong&gt; and then change the &lt;strong&gt;Compatibility Settings&lt;/strong&gt;.&amp;nbsp; Input the URL of your SharePoint site collection (not the form library).&lt;/p&gt;

&lt;p&gt;&lt;a href="http://robgarrett.com/photos/static/new/robgarrett_com/software/SharePointInfoPathSubmissionasAnonymousU_B838/image_6.png"&gt;&lt;img alt="image" border="0" height="484" src="http://robgarrett.com/photos/static/new/robgarrett_com/software/SharePointInfoPathSubmissionasAnonymousU_B838/image_thumb_6.png" style="border:0px none;" width="526" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Under &lt;strong&gt;Tools&lt;/strong&gt;, &lt;strong&gt;Submit Options&lt;/strong&gt;, change the submit options to use the web service we created, as follows:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://robgarrett.com/photos/static/new/robgarrett_com/software/SharePointInfoPathSubmissionasAnonymousU_B838/image_7.png"&gt;&lt;img alt="image" border="0" height="484" src="http://robgarrett.com/photos/static/new/robgarrett_com/software/SharePointInfoPathSubmissionasAnonymousU_B838/image_thumb_7.png" style="border:0px none;" width="563" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;When creating the data connection, be sure to submit the entire form data to the web service as a string:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://robgarrett.com/photos/static/new/robgarrett_com/software/SharePointInfoPathSubmissionasAnonymousU_B838/image_8.png"&gt;&lt;img alt="image" border="0" height="434" src="http://robgarrett.com/photos/static/new/robgarrett_com/software/SharePointInfoPathSubmissionasAnonymousU_B838/image_thumb_8.png" style="border:0px none;" width="644" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;Publishing the Form&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Publish the form using the Publish command under the File menu.&amp;nbsp; Publish to SharePoint server:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://robgarrett.com/photos/static/new/robgarrett_com/software/SharePointInfoPathSubmissionasAnonymousU_B838/image_9.png"&gt;&lt;img alt="image" border="0" height="484" src="http://robgarrett.com/photos/static/new/robgarrett_com/software/SharePointInfoPathSubmissionasAnonymousU_B838/image_thumb_9.png" style="border:0px none;" width="644" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;When prompted for the location use the URL of &lt;u&gt;site&lt;/u&gt; that &lt;u&gt;contains&lt;/u&gt; the for library you defined.&lt;/p&gt;

&lt;p&gt;Publish to a document library and enable browser form completion as follows:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://robgarrett.com/photos/static/new/robgarrett_com/software/SharePointInfoPathSubmissionasAnonymousU_B838/image_10.png"&gt;&lt;img alt="image" border="0" height="484" src="http://robgarrett.com/photos/static/new/robgarrett_com/software/SharePointInfoPathSubmissionasAnonymousU_B838/image_thumb_10.png" style="border:0px none;" width="644" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Select the form library we created earlier:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://robgarrett.com/photos/static/new/robgarrett_com/software/SharePointInfoPathSubmissionasAnonymousU_B838/image_11.png"&gt;&lt;img alt="image" border="0" height="484" src="http://robgarrett.com/photos/static/new/robgarrett_com/software/SharePointInfoPathSubmissionasAnonymousU_B838/image_thumb_11.png" style="border:0px none;" width="644" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Finally, map the fields to columns in the SharePoint list:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://robgarrett.com/photos/static/new/robgarrett_com/software/SharePointInfoPathSubmissionasAnonymousU_B838/image_12.png"&gt;&lt;img alt="image" border="0" height="484" src="http://robgarrett.com/photos/static/new/robgarrett_com/software/SharePointInfoPathSubmissionasAnonymousU_B838/image_thumb_12.png" style="border:0px none;" width="644" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;Testing the Form&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before attempting to create a new form in the form document library (using the New command from the menu), make sure that the library is configured to open forms in the browser (form library settings, advanced settings).&lt;/p&gt;

&lt;p&gt;Presto! The form should render in the browser:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://robgarrett.com/photos/static/new/robgarrett_com/software/SharePointInfoPathSubmissionasAnonymousU_B838/image_13.png"&gt;&lt;img alt="image" border="0" height="356" src="http://robgarrett.com/photos/static/new/robgarrett_com/software/SharePointInfoPathSubmissionasAnonymousU_B838/image_thumb_13.png" style="border:0px none;" width="644" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Try filling out the form and submitting.&amp;nbsp; The submitted data should flow via the web service and into SharePoint.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a title="Email SharePoint+InfoPath+Submission+as+Anonymous+User" href = "mailto:?body=Thought you might like this: http://robgarrett.com/cs/blogs/software/archive/2008/07/01/sharepoint-infopath-submission-as-anonymous-user.aspx&amp;subject=SharePoint+InfoPath+Submission+as+Anonymous+User"&gt;Email it!&lt;/a&gt; | &lt;a href = "http://del.icio.us/post?url=http://robgarrett.com/cs/blogs/software/archive/2008/07/01/sharepoint-infopath-submission-as-anonymous-user.aspx&amp;title=SharePoint+InfoPath+Submission+as+Anonymous+User" title="Submit SharePoint+InfoPath+Submission+as+Anonymous+User to del.icio.us" &gt;bookmark it!&lt;/a&gt; | &lt;a href = "http://www.digg.com/submit?url=http://robgarrett.com/cs/blogs/software/archive/2008/07/01/sharepoint-infopath-submission-as-anonymous-user.aspx&amp;phase=2" title="Submit SharePoint+InfoPath+Submission+as+Anonymous+User to digg.com"&gt;digg it!&lt;/a&gt; | &lt;a href = "http://reddit.com/submit?url=http://robgarrett.com/cs/blogs/software/archive/2008/07/01/sharepoint-infopath-submission-as-anonymous-user.aspx&amp;title=SharePoint+InfoPath+Submission+as+Anonymous+User" title="Submit SharePoint+InfoPath+Submission+as+Anonymous+User to reddit.com"&gt;reddit!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://robgarrett.com/cs/aggbug.aspx?PostID=3029" width="1" height="1"&gt;&lt;p align="right"&gt;&lt;img src="http://robgarrett.com/cs/rglogosmall.gif" alt="Logo" border="0"/&gt;&lt;br/&gt;Copyright &amp;copy; 2008 Rob Garrett&lt;/p&gt;</description><category domain="http://robgarrett.com/cs/blogs/software/archive/tags/Microsoft+SharePoint/default.aspx">Microsoft SharePoint</category><category domain="http://robgarrett.com/cs/blogs/software/archive/tags/Microsoft+InfoPath/default.aspx">Microsoft InfoPath</category></item><item><title>Groove 2007 - Disable the Annoying Popup Dialog</title><link>http://robgarrett.com/cs/blogs/software/archive/2008/06/11/groove-2007-disable-the-annoying-popup-dialog.aspx</link><pubDate>Wed, 11 Jun 2008 16:41:24 GMT</pubDate><guid isPermaLink="false">0fcc0c54-c0c4-4166-a666-de6d73a84a29:3012</guid><dc:creator>Rob Garrett</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Those of you using Groove 2007 are probably well aware of the annoying popup dialog that appears when the shift key is pressed more than once.&amp;#160; This issue is exacerbated when inside a remote desktop or terminal session.&amp;#160; Finally, I found a fix...&lt;/p&gt;  &lt;p&gt;&lt;a title="http://support.microsoft.com/kb/940165" href="http://support.microsoft.com/kb/940165"&gt;http://support.microsoft.com/kb/940165&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;To resolve this problem, follow these steps. &lt;/p&gt;  &lt;p&gt;1. Exit Groove 2007. &lt;/p&gt;  &lt;p&gt;2. Click &lt;strong&gt;Start&lt;/strong&gt;, click &lt;strong&gt;Run&lt;/strong&gt;, type regedit. &lt;/p&gt;  &lt;p&gt;3. Locate and then click the following registry subkey: &lt;/p&gt;  &lt;p&gt;HKEY_CURRENT_USER \SOFTWARE\Microsoft\Office\12.0\Groove &lt;/p&gt;  &lt;p&gt;4. If Groove does not contain an &lt;strong&gt;InstaGroove&lt;/strong&gt; key, create it. To do this, point to &lt;strong&gt;New&lt;/strong&gt; on the &lt;strong&gt;Edit&lt;/strong&gt; menu, click &lt;strong&gt;Key&lt;/strong&gt;, and then enter the name InstaGroove. &lt;/p&gt;  &lt;p&gt;5. Click to select &lt;strong&gt;InstaGroove&lt;/strong&gt;. &lt;/p&gt;  &lt;p&gt;6. On the &lt;strong&gt;Edit&lt;/strong&gt; menu, point to &lt;strong&gt;New&lt;/strong&gt;, and then click &lt;strong&gt;DWORD Value&lt;/strong&gt;. &lt;/p&gt;  &lt;p&gt;7. Enter the name DisableHotkey. &lt;/p&gt;  &lt;p&gt;8. Right-click &lt;strong&gt;DisableHotkey&lt;/strong&gt;, and then click &lt;strong&gt;Modify&lt;/strong&gt;. &lt;/p&gt;  &lt;p&gt;9. Under &lt;strong&gt;Value data&lt;/strong&gt;, type 1, and then click &lt;strong&gt;OK&lt;/strong&gt;. &lt;/p&gt;  &lt;p&gt;10. Exit Registry Editor. &lt;/p&gt;  &lt;p&gt;11. Start Groove 2007. &lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a title="Email Groove+2007+-+Disable+the+Annoying+Popup+Dialog" href = "mailto:?body=Thought you might like this: http://robgarrett.com/cs/blogs/software/archive/2008/06/11/groove-2007-disable-the-annoying-popup-dialog.aspx&amp;subject=Groove+2007+-+Disable+the+Annoying+Popup+Dialog"&gt;Email it!&lt;/a&gt; | &lt;a href = "http://del.icio.us/post?url=http://robgarrett.com/cs/blogs/software/archive/2008/06/11/groove-2007-disable-the-annoying-popup-dialog.aspx&amp;title=Groove+2007+-+Disable+the+Annoying+Popup+Dialog" title="Submit Groove+2007+-+Disable+the+Annoying+Popup+Dialog to del.icio.us" &gt;bookmark it!&lt;/a&gt; | &lt;a href = "http://www.digg.com/submit?url=http://robgarrett.com/cs/blogs/software/archive/2008/06/11/groove-2007-disable-the-annoying-popup-dialog.aspx&amp;phase=2" title="Submit Groove+2007+-+Disable+the+Annoying+Popup+Dialog to digg.com"&gt;digg it!&lt;/a&gt; | &lt;a href = "http://reddit.com/submit?url=http://robgarrett.com/cs/blogs/software/archive/2008/06/11/groove-2007-disable-the-annoying-popup-dialog.aspx&amp;title=Groove+2007+-+Disable+the+Annoying+Popup+Dialog" title="Submit Groove+2007+-+Disable+the+Annoying+Popup+Dialog to reddit.com"&gt;reddit!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://robgarrett.com/cs/aggbug.aspx?PostID=3012" width="1" height="1"&gt;&lt;p align="right"&gt;&lt;img src="http://robgarrett.com/cs/rglogosmall.gif" alt="Logo" border="0"/&gt;&lt;br/&gt;Copyright &amp;copy; 2008 Rob Garrett&lt;/p&gt;</description><category domain="http://robgarrett.com/cs/blogs/software/archive/tags/Microsoft+Office/default.aspx">Microsoft Office</category></item><item><title>SharePoint Training</title><link>http://robgarrett.com/cs/blogs/software/archive/2008/06/07/sharepoint-training.aspx</link><pubDate>Sat, 07 Jun 2008 05:46:40 GMT</pubDate><guid isPermaLink="false">0fcc0c54-c0c4-4166-a666-de6d73a84a29:3005</guid><dc:creator>Rob Garrett</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Need some SharePoint (MOSS 2007) training?&amp;#160; Want to take advantage of MOSS 2007 development under Visual Studio 2008 and SQL Server 2008?&amp;#160; Never been to Norway?&lt;/p&gt;  &lt;p&gt;Then check out Sahil Malik's training program this September 1, 2008.&amp;#160; Details (&lt;a href="http://www.winsmarts.com/Training.aspx" target="_blank"&gt;here&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;If Norway is a little too far to travel, I can also personally vouch for Ted Patterson training, of which Sahil is also providing a training session September 22, 2008.&amp;#160; Details (also &lt;a href="http://www.winsmarts.com/Training.aspx" target="_blank"&gt;here&lt;/a&gt;).&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a title="Email SharePoint+Training" href = "mailto:?body=Thought you might like this: http://robgarrett.com/cs/blogs/software/archive/2008/06/07/sharepoint-training.aspx&amp;subject=SharePoint+Training"&gt;Email it!&lt;/a&gt; | &lt;a href = "http://del.icio.us/post?url=http://robgarrett.com/cs/blogs/software/archive/2008/06/07/sharepoint-training.aspx&amp;title=SharePoint+Training" title="Submit SharePoint+Training to del.icio.us" &gt;bookmark it!&lt;/a&gt; | &lt;a href = "http://www.digg.com/submit?url=http://robgarrett.com/cs/blogs/software/archive/2008/06/07/sharepoint-training.aspx&amp;phase=2" title="Submit SharePoint+Training to digg.com"&gt;digg it!&lt;/a&gt; | &lt;a href = "http://reddit.com/submit?url=http://robgarrett.com/cs/blogs/software/archive/2008/06/07/sharepoint-training.aspx&amp;title=SharePoint+Training" title="Submit SharePoint+Training to reddit.com"&gt;reddit!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://robgarrett.com/cs/aggbug.aspx?PostID=3005" width="1" height="1"&gt;&lt;p align="right"&gt;&lt;img src="http://robgarrett.com/cs/rglogosmall.gif" alt="Logo" border="0"/&gt;&lt;br/&gt;Copyright &amp;copy; 2008 Rob Garrett&lt;/p&gt;</description><category domain="http://robgarrett.com/cs/blogs/software/archive/tags/Microsoft+SharePoint/default.aspx">Microsoft SharePoint</category><category domain="http://robgarrett.com/cs/blogs/software/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://robgarrett.com/cs/blogs/software/archive/tags/Training/default.aspx">Training</category></item><item><title>Sysinternals Tools at Your Fingertips</title><link>http://robgarrett.com/cs/blogs/software/archive/2008/05/30/sysinternals-tools-at-your-fingertips.aspx</link><pubDate>Fri, 30 May 2008 04:26:11 GMT</pubDate><guid isPermaLink="false">0fcc0c54-c0c4-4166-a666-de6d73a84a29:3000</guid><dc:creator>Rob Garrett</dc:creator><slash:comments>3</slash:comments><description>&lt;p&gt;Check this out (I'm sure I'm not the first to blog this) - type the following UNC path into a file explorer on your pee-cee....&lt;/p&gt;  &lt;p&gt;&lt;a&gt;\\live.sysinternals.com\&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Presto - every Sysinternals tool for you without ever having to download it.&lt;/p&gt;  &lt;p&gt;HTTP works too...&lt;/p&gt;  &lt;p&gt;&lt;a href="http://live.sysinternals.com/"&gt;http://live.sysinternals.com/&lt;/a&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a title="Email Sysinternals+Tools+at+Your+Fingertips" href = "mailto:?body=Thought you might like this: http://robgarrett.com/cs/blogs/software/archive/2008/05/30/sysinternals-tools-at-your-fingertips.aspx&amp;subject=Sysinternals+Tools+at+Your+Fingertips"&gt;Email it!&lt;/a&gt; | &lt;a href = "http://del.icio.us/post?url=http://robgarrett.com/cs/blogs/software/archive/2008/05/30/sysinternals-tools-at-your-fingertips.aspx&amp;title=Sysinternals+Tools+at+Your+Fingertips" title="Submit Sysinternals+Tools+at+Your+Fingertips to del.icio.us" &gt;bookmark it!&lt;/a&gt; | &lt;a href = "http://www.digg.com/submit?url=http://robgarrett.com/cs/blogs/software/archive/2008/05/30/sysinternals-tools-at-your-fingertips.aspx&amp;phase=2" title="Submit Sysinternals+Tools+at+Your+Fingertips to digg.com"&gt;digg it!&lt;/a&gt; | &lt;a href = "http://reddit.com/submit?url=http://robgarrett.com/cs/blogs/software/archive/2008/05/30/sysinternals-tools-at-your-fingertips.aspx&amp;title=Sysinternals+Tools+at+Your+Fingertips" title="Submit Sysinternals+Tools+at+Your+Fingertips to reddit.com"&gt;reddit!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://robgarrett.com/cs/aggbug.aspx?PostID=3000" width="1" height="1"&gt;&lt;p align="right"&gt;&lt;img src="http://robgarrett.com/cs/rglogosmall.gif" alt="Logo" border="0"/&gt;&lt;br/&gt;Copyright &amp;copy; 2008 Rob Garrett&lt;/p&gt;</description><category domain="http://robgarrett.com/cs/blogs/software/archive/tags/Tools/default.aspx">Tools</category></item><item><title>Certified Microsoft Office SharePoint Server Developer</title><link>http://robgarrett.com/cs/blogs/software/archive/2008/05/06/certified-microsoft-office-sharepoint-server-developer.aspx</link><pubDate>Tue, 06 May 2008 15:47:00 GMT</pubDate><guid isPermaLink="false">0fcc0c54-c0c4-4166-a666-de6d73a84a29:2983</guid><dc:creator>Rob Garrett</dc:creator><slash:comments>5</slash:comments><description>&lt;p&gt;It&amp;#39;s now official, I am now certified as a MS-TS MOSS Application developer &lt;img src="http://robgarrett.com/cs/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;/p&gt; &lt;p&gt;Next hurdle:&amp;nbsp; MOSS configuration, and then .NET certification.&lt;/p&gt;&lt;p&gt;Update 5/7/2008 - I took the WSS application exam today (for kicks) and passed.&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a title="Email Certified+Microsoft+Office+SharePoint+Server+Developer" href = "mailto:?body=Thought you might like this: http://robgarrett.com/cs/blogs/software/archive/2008/05/06/certified-microsoft-office-sharepoint-server-developer.aspx&amp;subject=Certified+Microsoft+Office+SharePoint+Server+Developer"&gt;Email it!&lt;/a&gt; | &lt;a href = "http://del.icio.us/post?url=http://robgarrett.com/cs/blogs/software/archive/2008/05/06/certified-microsoft-office-sharepoint-server-developer.aspx&amp;title=Certified+Microsoft+Office+SharePoint+Server+Developer" title="Submit Certified+Microsoft+Office+SharePoint+Server+Developer to del.icio.us" &gt;bookmark it!&lt;/a&gt; | &lt;a href = "http://www.digg.com/submit?url=http://robgarrett.com/cs/blogs/software/archive/2008/05/06/certified-microsoft-office-sharepoint-server-developer.aspx&amp;phase=2" title="Submit Certified+Microsoft+Office+SharePoint+Server+Developer to digg.com"&gt;digg it!&lt;/a&gt; | &lt;a href = "http://reddit.com/submit?url=http://robgarrett.com/cs/blogs/software/archive/2008/05/06/certified-microsoft-office-sharepoint-server-developer.aspx&amp;title=Certified+Microsoft+Office+SharePoint+Server+Developer" title="Submit Certified+Microsoft+Office+SharePoint+Server+Developer to reddit.com"&gt;reddit!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://robgarrett.com/cs/aggbug.aspx?PostID=2983" width="1" height="1"&gt;&lt;p align="right"&gt;&lt;img src="http://robgarrett.com/cs/rglogosmall.gif" alt="Logo" border="0"/&gt;&lt;br/&gt;Copyright &amp;copy; 2008 Rob Garrett&lt;/p&gt;</description><category domain="http://robgarrett.com/cs/blogs/software/archive/tags/Microsoft+SharePoint/default.aspx">Microsoft SharePoint</category></item><item><title>Leadership Steps</title><link>http://robgarrett.com/cs/blogs/world/archive/2008/04/23/leadership-steps.aspx</link><pubDate>Thu, 24 Apr 2008 02:54:00 GMT</pubDate><guid isPermaLink="false">0fcc0c54-c0c4-4166-a666-de6d73a84a29:2971</guid><dc:creator>Rob Garrett</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;A &lt;a href="http://www.edsthoughts.com/" title="Ed&amp;#39;s Thoughts"&gt;good friend&lt;/a&gt; of mine and I were chatting about leadership qualities desired in project managers within the Software/IT industry.&amp;nbsp; He quoted me these following 11 steps, taken from his time in the military.&amp;nbsp; I thought I&amp;#39;d share them, and leave a reference for myself for the next time I catch myself answering the question &amp;quot;what makes a good leader?&amp;quot;&lt;/p&gt;&lt;p&gt;The 11 Principles of Leadership &lt;/p&gt;&lt;p&gt;1. Know yourself and seek self-improvement.&lt;br /&gt;2. Be technically and tactically proficient.&lt;br /&gt;3. Seek responsibility and take responsibility for your actions.&lt;br /&gt;4. Make sound and timely decisions.&lt;br /&gt;5. Set the example.&lt;br /&gt;6. Know your soldiers and look out for their well being.&lt;br /&gt;7. Keep your subordinates informed.&lt;br /&gt;8. Develop a sense of responsibility in your subordinates.&lt;br /&gt;9. Ensure the task is understood, supervised and accomplished.&lt;br /&gt;10. Build the team.&lt;br /&gt;11. Employ your unit in accordance with its capabilities. &lt;/p&gt;&lt;p&gt;BTW, leadership is not just limited to management, everyone in an organization, from the CEO down to the janitor has the potential to be a leader - if you have no &amp;quot;soldiers&amp;quot; in your command then apply rules above to yourself.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a title="Email Leadership+Steps" href = "mailto:?body=Thought you might like this: http://robgarrett.com/cs/blogs/world/archive/2008/04/23/leadership-steps.aspx&amp;subject=Leadership+Steps"&gt;Email it!&lt;/a&gt; | &lt;a href = "http://del.icio.us/post?url=http://robgarrett.com/cs/blogs/world/archive/2008/04/23/leadership-steps.aspx&amp;title=Leadership+Steps" title="Submit Leadership+Steps to del.icio.us" &gt;bookmark it!&lt;/a&gt; | &lt;a href = "http://www.digg.com/submit?url=http://robgarrett.com/cs/blogs/world/archive/2008/04/23/leadership-steps.aspx&amp;phase=2" title="Submit Leadership+Steps to digg.com"&gt;digg it!&lt;/a&gt; | &lt;a href = "http://reddit.com/submit?url=http://robgarrett.com/cs/blogs/world/archive/2008/04/23/leadership-steps.aspx&amp;title=Leadership+Steps" title="Submit Leadership+Steps to reddit.com"&gt;reddit!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://robgarrett.com/cs/aggbug.aspx?PostID=2971" width="1" height="1"&gt;&lt;p align="right"&gt;&lt;img src="http://robgarrett.com/cs/rglogosmall.gif" alt="Logo" border="0"/&gt;&lt;br/&gt;Copyright &amp;copy; 2008 Rob Garrett&lt;/p&gt;</description><category domain="http://robgarrett.com/cs/blogs/world/archive/tags/Advice/default.aspx">Advice</category><category domain="http://robgarrett.com/cs/blogs/world/archive/tags/Life/default.aspx">Life</category></item><item><title>SPSecurityTrimmedControl</title><link>http://robgarrett.com/cs/blogs/software/archive/2008/04/14/spsecuritytrimmedcontrol.aspx</link><pubDate>Mon, 14 Apr 2008 19:24:26 GMT</pubDate><guid isPermaLink="false">0fcc0c54-c0c4-4166-a666-de6d73a84a29:2964</guid><dc:creator>Rob Garrett</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;This is one of those blog posts that I cannot take credit, but want to keep the information handy for a later time.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;The SPSecurityTrimmedControl shipped with WSSv3 is a very powerful control. It basically allows you to conditionally display content depending on the user’s permission.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Thanks to Waldek for his &lt;a href="http://blog.mastykarz.nl/2008/04/05/inconvenient-spsecuritytrimmedcontrol/" target="_blank"&gt;post&lt;/a&gt; on conditional security trimming of page layout content in SharePoint.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a title="Email SPSecurityTrimmedControl" href = "mailto:?body=Thought you might like this: http://robgarrett.com/cs/blogs/software/archive/2008/04/14/spsecuritytrimmedcontrol.aspx&amp;subject=SPSecurityTrimmedControl"&gt;Email it!&lt;/a&gt; | &lt;a href = "http://del.icio.us/post?url=http://robgarrett.com/cs/blogs/software/archive/2008/04/14/spsecuritytrimmedcontrol.aspx&amp;title=SPSecurityTrimmedControl" title="Submit SPSecurityTrimmedControl to del.icio.us" &gt;bookmark it!&lt;/a&gt; | &lt;a href = "http://www.digg.com/submit?url=http://robgarrett.com/cs/blogs/software/archive/2008/04/14/spsecuritytrimmedcontrol.aspx&amp;phase=2" title="Submit SPSecurityTrimmedControl to digg.com"&gt;digg it!&lt;/a&gt; | &lt;a href = "http://reddit.com/submit?url=http://robgarrett.com/cs/blogs/software/archive/2008/04/14/spsecuritytrimmedcontrol.aspx&amp;title=SPSecurityTrimmedControl" title="Submit SPSecurityTrimmedControl to reddit.com"&gt;reddit!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://robgarrett.com/cs/aggbug.aspx?PostID=2964" width="1" height="1"&gt;&lt;p align="right"&gt;&lt;img src="http://robgarrett.com/cs/rglogosmall.gif" alt="Logo" border="0"/&gt;&lt;br/&gt;Copyright &amp;copy; 2008 Rob Garrett&lt;/p&gt;</description><category domain="http://robgarrett.com/cs/blogs/software/archive/tags/Microsoft+SharePoint/default.aspx">Microsoft SharePoint</category></item><item><title>Vista MCE and HD - At Last</title><link>http://robgarrett.com/cs/blogs/software/archive/2008/03/31/vista-mce-and-hd-at-last.aspx</link><pubDate>Mon, 31 Mar 2008 16:50:20 GMT</pubDate><guid isPermaLink="false">0fcc0c54-c0c4-4166-a666-de6d73a84a29:2939</guid><dc:creator>Rob Garrett</dc:creator><slash:comments>11</slash:comments><description>&lt;p&gt;Recently - I finally decided to take the plunge with Vista Media Center Edition and High Definition Cable TV....&amp;nbsp; &lt;/p&gt; &lt;p&gt;I've been a fan of MCE for some time, and up until February this year I'd been using Vista MCE with a standard analogue cable line into a dual receiver Hauppauge tuner card and doing relatively well.&amp;nbsp; Those of you following my rants about Comcast Cable TV of Montgomery County already know that I'd sell my grandma for a time when a better, cheaper solution to cable TV was available - and that time has finally arrived (I didn't have to sell my Grandma - besides EBay prohibits the sale of family members).&lt;/p&gt; &lt;p&gt;Verizon now offer FIOS TV in my area, and with a standard premium package inclusive of HDTV on offer for $42.99 a month, it didn't take much to ditch Comcast ($68.00 a month).&lt;/p&gt; &lt;p&gt;I've been keeping a close eye over the last few months on the handful of vendors offering Cable-Labs certified Vista PC's and decided on the purchase of a new Dell XPS 420 with dual ATI TV Wonder Cable Card Tuners.&amp;nbsp; My decision came down to the following rationale:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Dell offers the cheapest Cable-Card solution (at time of writing).&lt;/li&gt; &lt;li&gt;Unless I fork out over 4G for a machine; most Vista machines offering Cable-Card are inferior to the Dell XPS.&lt;/li&gt; &lt;li&gt;ATI is pretty much the only supplier of Cable-Card tuner for Vista and Dell sold me a pair for $350, unlike other vendors charging $280 a piece.&lt;/li&gt; &lt;li&gt;Dell would ship me a machine within a month.&lt;/li&gt; &lt;li&gt;Dell is a well known brand.&lt;/li&gt; &lt;li&gt;Internal tuners do not sell me because my machine sits out of the way in the basement.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Two weeks after I place my order for an XPS-420 with 1TB disk, 4G RAM and the dual tuners a new box arrived on my doorstep - ahead of schedule.&lt;/p&gt; &lt;p&gt;&lt;a href="http://robgarrett.com/photos/static/new/robgarrett_com/software/VistaMCEandHDAtLast_B491/IMG_3325.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="484" alt="IMG_3325" src="http://robgarrett.com/photos/static/new/robgarrett_com/software/VistaMCEandHDAtLast_B491/IMG_3325_thumb.jpg" width="364" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Setup of my machine was straight forward - my dell shipped with Vista Home Premium and Cable Card support and the drivers for the ATI tuners installed.&amp;nbsp; After I uninstalled the free Dell software and turned off all unnecessary services in Vista (it's a server, so no need for Aero) I was ready for the Verizon service person to come and install Cable Card TV.&lt;/p&gt; &lt;p&gt;At 11am one chilly Saturday morning the Verizon guy arrived - I'd called ahead and placed the installation order for Cable-Card so he came with this expectation.&amp;nbsp; My new XPS was running in my front room, connected to an LCD monitor (so no XBOX 360 Extender to confuse the issue) and MCE running and at the cable-card configuration screen.&lt;/p&gt; &lt;p&gt;The Verizon engineer had never installed Cable-Card in a computer before, but I assured him it was as easy as installing for an HD-TV.&amp;nbsp; I read somewhere ahead that each cable-card pairs with it's host tuner, so make sure you know which ATI unit is tuner #0 and tuner #1 in MCE because the engineer calls in the cable-card serial number with HQ to activate the cable signal.&lt;/p&gt; &lt;p&gt;&lt;a href="http://robgarrett.com/photos/static/new/robgarrett_com/software/VistaMCEandHDAtLast_B491/IMG_3324.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="484" alt="IMG_3324" src="http://robgarrett.com/photos/static/new/robgarrett_com/software/VistaMCEandHDAtLast_B491/IMG_3324_thumb.jpg" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;After a short wait on the phone with HQ both cable-cards were activated and receiving a signal - I was then able to tune Vista to an HD channel.&amp;nbsp; During the whole process the most difficult part was downloading the correct EPG (Guide) for my area because there are several for my zone and each has a slightly different channel number line up.&amp;nbsp; With correct EPG installed and tuners configured I was able to watch and record HDTV, the only issue I had was with some of the channels in the guide not being part of my service package, which caused Vista to pause looking for the signal when I tuned to these channels.&lt;/p&gt; &lt;p&gt;After tipping the Verizon guy and wishing him a good day I preceded to move my XPS to it's resting place and hook up my XBOX 360. As with my older machine, this process was a breeze, and it didn't take long before I had HDTV on the large screen.&amp;nbsp; A tip for those hooking up a similar setup - make sure you have a nice fast network link between your XBOX and MCE, no wireless for instance, otherwise HDTV will hog the bandwidth.&lt;/p&gt; &lt;p&gt;The acid test with my new setup was whether my wife would have any issues when she came home.&amp;nbsp; Lisa is familiar with Vista MCE so the new faster machine scored some brownie points, and the monthly savings on the cable bill also got me a high five.&amp;nbsp; So far we've been doing good with the new channel line up (lots more channels) and HD content.&amp;nbsp; One quirk we found with Vista MCE is that it doesn't automatically choose HD channels when scheduled recordings are set to "any channel" - you have to explicitly choose the HD channel otherwise Vista records from the first SDTV channel (since HD channels are higher numbering in the channel list).&amp;nbsp; An episode of "Dancing with the Stars" in HD was day and night compared to SD, and once I demonstrated the difference it didn't take much to convince Lisa to reprogram the list of scheduled recordings.&lt;/p&gt; &lt;p&gt;I've noticed that my MCE platform is a little sluggish when recording from two HD channels and playing a recorded show simultaneously, so I would recommend a minimum 4GB RAM and a dual or quad core processor if you like uninterrupted viewing.&amp;nbsp; I'll report back as my new toy gets more usage... &lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a title="Email Vista+MCE+and+HD+-+At+Last" href = "mailto:?body=Thought you might like this: http://robgarrett.com/cs/blogs/software/archive/2008/03/31/vista-mce-and-hd-at-last.aspx&amp;subject=Vista+MCE+and+HD+-+At+Last"&gt;Email it!&lt;/a&gt; | &lt;a href = "http://del.icio.us/post?url=http://robgarrett.com/cs/blogs/software/archive/2008/03/31/vista-mce-and-hd-at-last.aspx&amp;title=Vista+MCE+and+HD+-+At+Last" title="Submit Vista+MCE+and+HD+-+At+Last to del.icio.us" &gt;bookmark it!&lt;/a&gt; | &lt;a href = "http://www.digg.com/submit?url=http://robgarrett.com/cs/blogs/software/archive/2008/03/31/vista-mce-and-hd-at-last.aspx&amp;phase=2" title="Submit Vista+MCE+and+HD+-+At+Last to digg.com"&gt;digg it!&lt;/a&gt; | &lt;a href = "http://reddit.com/submit?url=http://robgarrett.com/cs/blogs/software/archive/2008/03/31/vista-mce-and-hd-at-last.aspx&amp;title=Vista+MCE+and+HD+-+At+Last" title="Submit Vista+MCE+and+HD+-+At+Last to reddit.com"&gt;reddit!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://robgarrett.com/cs/aggbug.aspx?PostID=2939" width="1" height="1"&gt;&lt;p align="right"&gt;&lt;img src="http://robgarrett.com/cs/rglogosmall.gif" alt="Logo" border="0"/&gt;&lt;br/&gt;Copyright &amp;copy; 2008 Rob Garrett&lt;/p&gt;</description><category domain="http://robgarrett.com/cs/blogs/software/archive/tags/Windows+Vista/default.aspx">Windows Vista</category><category domain="http://robgarrett.com/cs/blogs/software/archive/tags/HDTV/default.aspx">HDTV</category></item><item><title>2/26/2008 - I'm Listening to...</title><link>http://robgarrett.com/cs/blogs/world/archive/2008/02/26/2-26-2008-i-m-listening-to.aspx</link><pubDate>Tue, 26 Feb 2008 19:26:00 GMT</pubDate><guid isPermaLink="false">0fcc0c54-c0c4-4166-a666-de6d73a84a29:2913</guid><dc:creator>Rob Garrett</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;img height="240" src="http://ecx.images-amazon.com/images/I/51cm3vMK5ML._SS400_.jpg" style="padding-right:10px;float:left;" width="240" /&gt;&lt;br /&gt;Buckcherry - 15&lt;/p&gt;&lt;p&gt;I&amp;#39;m currently stuck in Tampa FL waiting for a plan to DC and listening to Buckcherry.&amp;nbsp; I especially like the song &amp;quot;Sorry&amp;quot;, see lyrics below...&lt;/p&gt;&lt;p&gt;Oh I had alot to say&lt;br /&gt;Was thinking on my time away&lt;br /&gt;I missed you and things weren&amp;#39;t the same&lt;br /&gt;&amp;#39;Cause everything inside it never comes out right&lt;br /&gt;And when I see you cry it makes me wanna die.&lt;/p&gt;&lt;p&gt;I&amp;#39;m sorry I&amp;#39;m bad, I&amp;#39;m sorry you&amp;#39;re blue&lt;br /&gt;I&amp;#39;m sorry about all the things I said to you&lt;br /&gt;And I know I can&amp;#39;t take it back&lt;br /&gt;I love how you kiss, I love all your sounds&lt;br /&gt;And baby the way you make my world go &amp;#39;round&lt;br /&gt;And I just wanted to say I&amp;#39;m sorry. &lt;/p&gt;&lt;p&gt;This time I think I&amp;#39;m to blame&lt;br /&gt;It&amp;#39;s harder to get through the days&lt;br /&gt;We get older and blame turns to shame&lt;br /&gt;&amp;#39;Cause everything inside it never comes out right&lt;br /&gt;And when I see you cry it makes me wanna die.&lt;/p&gt;&lt;p&gt;I&amp;#39;m sorry I&amp;#39;m bad, I&amp;#39;m sorry you&amp;#39;re blue&lt;br /&gt;I&amp;#39;m sorry about all the things I said to you&lt;br /&gt;And I know I can&amp;#39;t take it back&lt;br /&gt;I love how you kiss, I love all your sounds&lt;br /&gt;And baby the way you make my world go &amp;#39;round&lt;br /&gt;And I just wanted to say I&amp;#39;m sorry. &lt;/p&gt;&lt;p&gt;Every single day I think about how we came all this way&lt;br /&gt;The sleepless nights and the tears you cried&lt;br /&gt;It&amp;#39;s never too late to make it right&lt;br /&gt;Oh yeah sorry&lt;/p&gt;&lt;p&gt;I&amp;#39;m sorry I&amp;#39;m bad, I&amp;#39;m sorry you&amp;#39;re blue&lt;br /&gt;I&amp;#39;m sorry about all the things I said to you&lt;br /&gt;And I know I can&amp;#39;t take it back&lt;br /&gt;I love how you kiss, I love all your sounds&lt;br /&gt;And baby the way you make my world go &amp;#39;round&lt;br /&gt;And I just wanted to say I&amp;#39;m sorry. &lt;br /&gt;I&amp;#39;m sorry baby.&lt;br /&gt;I&amp;#39;m sorry baby, Yeah.&lt;br /&gt;I&amp;#39;m sorry.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a title="Email 2%2f26%2f2008+-+I%27m+Listening+to..." href = "mailto:?body=Thought you might like this: http://robgarrett.com/cs/blogs/world/archive/2008/02/26/2-26-2008-i-m-listening-to.aspx&amp;subject=2%2f26%2f2008+-+I%27m+Listening+to..."&gt;Email it!&lt;/a&gt; | &lt;a href = "http://del.icio.us/post?url=http://robgarrett.com/cs/blogs/world/archive/2008/02/26/2-26-2008-i-m-listening-to.aspx&amp;title=2%2f26%2f2008+-+I%27m+Listening+to..." title="Submit 2%2f26%2f2008+-+I%27m+Listening+to... to del.icio.us" &gt;bookmark it!&lt;/a&gt; | &lt;a href = "http://www.digg.com/submit?url=http://robgarrett.com/cs/blogs/world/archive/2008/02/26/2-26-2008-i-m-listening-to.aspx&amp;phase=2" title="Submit 2%2f26%2f2008+-+I%27m+Listening+to... to digg.com"&gt;digg it!&lt;/a&gt; | &lt;a href = "http://reddit.com/submit?url=http://robgarrett.com/cs/blogs/world/archive/2008/02/26/2-26-2008-i-m-listening-to.aspx&amp;title=2%2f26%2f2008+-+I%27m+Listening+to..." title="Submit 2%2f26%2f2008+-+I%27m+Listening+to... to reddit.com"&gt;reddit!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://robgarrett.com/cs/aggbug.aspx?PostID=2913" width="1" height="1"&gt;&lt;p align="right"&gt;&lt;img src="http://robgarrett.com/cs/rglogosmall.gif" alt="Logo" border="0"/&gt;&lt;br/&gt;Copyright &amp;copy; 2008 Rob Garrett&lt;/p&gt;</description><category domain="http://robgarrett.com/cs/blogs/world/archive/tags/Music/default.aspx">Music</category></item><item><title>Prolific PL-2303 Driver - Vista x64</title><link>http://robgarrett.com/cs/blogs/software/archive/2008/02/07/prolific-pl-2303-driver-vista-x64.aspx</link><pubDate>Fri, 08 Feb 2008 01:34:20 GMT</pubDate><guid isPermaLink="false">0fcc0c54-c0c4-4166-a666-de6d73a84a29:2901</guid><dc:creator>Rob Garrett</dc:creator><slash:comments>8</slash:comments><description>&lt;p&gt;I purchased a USB to RS232 Serial cable so I could hook up my GPS unit to my laptop and found out that installing the driver on Vista 64 was problematic.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Disabling driver signing verification with the following command at an elevated prompt, followed by a reboot, enabled me to install the driver.&lt;/p&gt; &lt;p&gt;BCDEDIT.EXE /SET NOINTEGRITYCHECKS ON  &lt;p&gt;Download the prolific XP 64 bit driver (installs on Vista 64 after disabling driver signing verification) from:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.prolific.com.tw/support/files//IO%20Cable/PL-2303/Drivers%20-%20Generic/Windows/wd_pl2303h-hx-x_64-bit_v2018.zip"&gt;Link&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a title="http://www.prolific.com.tw/support/files//IO%20Cable/PL-2303/Drivers%20-%20Generic/Windows/wd_pl2303h-hx-x_64-bit_v2018.zip" href="http://www.prolific.com.tw/support/files//IO%20Cable/PL-2303/Drivers%20-%20Generic/Windows/wd_pl2303h-hx-x_64-bit_v2018.zip"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a title="Email Prolific+PL-2303+Driver+-+Vista+x64" href = "mailto:?body=Thought you might like this: http://robgarrett.com/cs/blogs/software/archive/2008/02/07/prolific-pl-2303-driver-vista-x64.aspx&amp;subject=Prolific+PL-2303+Driver+-+Vista+x64"&gt;Email it!&lt;/a&gt; | &lt;a href = "http://del.icio.us/post?url=http://robgarrett.com/cs/blogs/software/archive/2008/02/07/prolific-pl-2303-driver-vista-x64.aspx&amp;title=Prolific+PL-2303+Driver+-+Vista+x64" title="Submit Prolific+PL-2303+Driver+-+Vista+x64 to del.icio.us" &gt;bookmark it!&lt;/a&gt; | &lt;a href = "http://www.digg.com/submit?url=http://robgarrett.com/cs/blogs/software/archive/2008/02/07/prolific-pl-2303-driver-vista-x64.aspx&amp;phase=2" title="Submit Prolific+PL-2303+Driver+-+Vista+x64 to digg.com"&gt;digg it!&lt;/a&gt; | &lt;a href = "http://reddit.com/submit?url=http://robgarrett.com/cs/blogs/software/archive/2008/02/07/prolific-pl-2303-driver-vista-x64.aspx&amp;title=Prolific+PL-2303+Driver+-+Vista+x64" title="Submit Prolific+PL-2303+Driver+-+Vista+x64 to reddit.com"&gt;reddit!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://robgarrett.com/cs/aggbug.aspx?PostID=2901" width="1" height="1"&gt;&lt;p align="right"&gt;&lt;img src="http://robgarrett.com/cs/rglogosmall.gif" alt="Logo" border="0"/&gt;&lt;br/&gt;Copyright &amp;copy; 2008 Rob Garrett&lt;/p&gt;</description><category domain="http://robgarrett.com/cs/blogs/software/archive/tags/Windows+Vista/default.aspx">Windows Vista</category></item><item><title>SharePoint Identity</title><link>http://robgarrett.com/cs/blogs/software/archive/2008/01/25/sharepoint-identity.aspx</link><pubDate>Fri, 25 Jan 2008 23:13:17 GMT</pubDate><guid isPermaLink="false">0fcc0c54-c0c4-4166-a666-de6d73a84a29:2886</guid><dc:creator>Rob Garrett</dc:creator><slash:comments>3</slash:comments><description>&lt;p&gt;SharePoint user identity is sometimes confusing for developers....&lt;/p&gt; &lt;ul&gt; &lt;li&gt;When connecting to external resources (like a SQL database via BDC) what user identity does SharePoint use?&amp;nbsp; &lt;li&gt;How does SharePoint impersonate when using forms-based authentication?  &lt;li&gt;What's the difference between a Windows user and a WSS User?  &lt;li&gt;What is &lt;em&gt;SPSecurity.RunWithElevatedPrivileges&lt;/em&gt;?&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;It's questions like those above the can often lead to confusion - throw IIS authentication settings into the mix and developers too often find themselves scratching their heads as to why BDC (Business Data Catalog) or external resource access is not working. &lt;/p&gt; &lt;p&gt;My attempt at explaining impersonation within SharePoint is best summarized with the following table:&lt;/p&gt; &lt;table style="text-align:center;" cellspacing="0" cellpadding="2"&gt;  &lt;tr style="font-weight:bold;color:#ffffff;background-color:#0000ff;"&gt; &lt;td&gt;Authentication&lt;/td&gt; &lt;td&gt;Windows Account&lt;/td&gt; &lt;td&gt;WSS Account&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;FBA&lt;/td&gt; &lt;td&gt;IUSR_MACHINENAME&lt;/td&gt; &lt;td&gt;FBA User&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Elevated FBA&lt;/td&gt; &lt;td&gt;App Pool User&lt;/td&gt; &lt;td&gt;SHAREPOINT\System&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Windows&lt;/td&gt; &lt;td&gt;Windows User&lt;/td&gt; &lt;td&gt;Windows User&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Elevated Windows&lt;/td&gt; &lt;td&gt;App Pool User&lt;/td&gt; &lt;td&gt;SHAREPOINT\System&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt; &lt;p&gt;&lt;strong&gt;Impersonation&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;SharePoint keeps track of two different user account types - Windows account identity, and internal WSS account.&amp;nbsp; SharePoint uses the WSS account to grant access to secured SharePoint objects - lists, documents etc.&amp;nbsp; The ASP.NET runtime, which SharePoint sits atop, impersonates the Windows account identity when executing a SharePoint web application, and it is this impersonation that dictates whether web parts or custom code logic is able to access external secured resources (files, SQL server etc).&lt;/p&gt; &lt;p&gt;Taking a closer look at the web.config for a virgin SharePoint site shows the following XML node:&lt;/p&gt; &lt;p&gt;&amp;lt;configuration&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;system.web&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;identity impersonate="true"/&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/system.web&amp;gt;&lt;br&gt;&amp;lt;/configuration&amp;gt;&lt;/p&gt; &lt;p&gt;The above node allows the ASP.NET runtime to impersonate the windows account passed by IIS&amp;nbsp; (setting this to false restricts ASP.NET to run under the default worker process - typically the ASPNET local account).&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Windows Authentication&lt;/strong&gt; - SharePoint is configured by default to use Windows authentication (NTLM or Kerberos).&amp;nbsp; When the user attempts to access a secured page within SharePoint an HTTP 401 status code is passed back through IIS, which then causes the familiar Windows credentials prompt to appear in the browser.&amp;nbsp; After passing successful credentials; IIS authenticates the user and passes the windows user token on to SharePoint.&amp;nbsp; The SharePoint web site executes within this new authenticated user context.&amp;nbsp; In this authentication scheme the WSS account and windows identity account are synonymous - line 3 in the table above.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Forms Based Authentication&lt;/strong&gt; - FBA is a completely different animal to Windows Authentication and is managed by ASP.NET rather than IIS.&amp;nbsp; By default IIS passes the standard IUSER_&lt;em&gt;MACHINENAME&lt;/em&gt; local user account token to ASP.NET.&amp;nbsp; ASP.NET is configured to authenticate using forms by the following XML in the web.config file:&lt;/p&gt; &lt;p&gt;&amp;lt;configuration&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;system.web&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;authentication mode="Forms"/&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/system.web&amp;gt;&lt;br&gt;&amp;lt;/configuration&amp;gt;&lt;/p&gt; &lt;p&gt;When ASP.NET detects FBA and a secured pages is requested by a user; the runtime looks for a known cookie, if the cookie is present the authentication succeeds, otherwise ASP.NET redirects the user to a login page.&amp;nbsp; Upon successful authentication the SharePoint web application runs under the IUSER_&lt;em&gt;MACHINENAME&lt;/em&gt; user context.&amp;nbsp; The WSS account is depicted by the forms authentication identity, which is dependent on the membership provider configured in ASP.NET.&amp;nbsp; Example WSS account identities under FBA are SQL member accounts via the Local SQL Membership Provider or AD members accounts via the AD Membership Provider.&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/strong&gt;: Authenticating against Active Directory using the AD forms-based membership provider is NOT the same as authenticating via Windows NTLM or Kerberos - in the former case the user context is still IUSR_MACHINENAME, where as Windows authentication receives the user token for the authenticated user from IIS.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Elevated Privileges&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Anyone who has played with SharePoint object model has probably used the &lt;strong&gt;SPSecurity.RunWithElevatedPrivileges&lt;/strong&gt; function.&amp;nbsp; This function allows access to secured SharePoint objects from the object model by changing the WSS user account context to SHAREPOINT\System - a highly privileged user in SharePoint.&amp;nbsp; Calling this function also has the effect of changing the current windows user context to the current application pool user, configured in IIS.&amp;nbsp; In typical SharePoint farm installations, the application pool user is an AD user with restricted permissions and limited access to external resources, although typically this user has more permissions than the local IUSR_&lt;em&gt;MACHINENAME&lt;/em&gt; user. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Good Practice&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;If you're not concerned with FBA and/or anonymous access to your SharePoint sites then the anonymous account used by IIS is of no concern to you.&amp;nbsp; All you need to remember is that the elevated privilege method switches the current authenticated windows user to the app pool user, which is probably desirable if the app pool user is configured for external resources via BDC.&amp;nbsp; Most developers use this method to gain them access to secured SharePoint objects, but it is just as useful if you need access to external resources.&lt;/p&gt; &lt;p&gt;When setting up FBA with anonymous authentication scenarios it is important to be aware of the IUSR_&lt;em&gt;MACHINENAME&lt;/em&gt; windows account in context.&amp;nbsp; For example, if you reference custom ASCX files in SharePoint page templates and these ASCX user controls live in a secured directory on the server; then you're going to see request for credentials on your anonymous site. If you have a web part that needs to access a third party system or network resource then the IUSR_&lt;em&gt;MACHINENAME&lt;/em&gt; account will prevent your web part from working.&amp;nbsp; Generally I suggest the use of &lt;strong&gt;SPSecurity.RunWithElevatedPrivileges&lt;/strong&gt; function when accessing network/external resources.&amp;nbsp; However,&amp;nbsp; if you want to avoid a potential security hole because your code can now access any SharePoint object via SHAREPOINT\System, then an alternative is to configure the IIS anonymous account as an AD domain account.&lt;/p&gt; &lt;p&gt;Hopefully this blog post has distilled the common confusion surrounding SharePoint identity, I know that I'll be coming back to the above table from time to time.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a title="Email SharePoint+Identity" href = "mailto:?body=Thought you might like this: http://robgarrett.com/cs/blogs/software/archive/2008/01/25/sharepoint-identity.aspx&amp;subject=SharePoint+Identity"&gt;Email it!&lt;/a&gt; | &lt;a href = "http://del.icio.us/post?url=http://robgarrett.com/cs/blogs/software/archive/2008/01/25/sharepoint-identity.aspx&amp;title=SharePoint+Identity" title="Submit SharePoint+Identity to del.icio.us" &gt;bookmark it!&lt;/a&gt; | &lt;a href = "http://www.digg.com/submit?url=http://robgarrett.com/cs/blogs/software/archive/2008/01/25/sharepoint-identity.aspx&amp;phase=2" title="Submit SharePoint+Identity to digg.com"&gt;digg it!&lt;/a&gt; | &lt;a href = "http://reddit.com/submit?url=http://robgarrett.com/cs/blogs/software/archive/2008/01/25/sharepoint-identity.aspx&amp;title=SharePoint+Identity" title="Submit SharePoint+Identity to reddit.com"&gt;reddit!&lt;/a&gt;&lt;/div&gt;&lt;img src="http://robgarrett.com/cs/aggbug.aspx?Pos