<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arricc &#187; Active Directory</title>
	<atom:link href="http://www.arricc.net/tag/active-directory/feed" rel="self" type="application/rss+xml" />
	<link>http://www.arricc.net</link>
	<description>50% IT snippets that I couldn&#039;t readily find existing help on. 50% drivel.</description>
	<lastBuildDate>Mon, 05 Jul 2010 23:26:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Group Policy to disable Autorun</title>
		<link>http://www.arricc.net/group-policy-to-disable-autorun.php</link>
		<comments>http://www.arricc.net/group-policy-to-disable-autorun.php#comments</comments>
		<pubDate>Wed, 21 Jan 2009 10:59:10 +0000</pubDate>
		<dc:creator>Fizzgig</dc:creator>
				<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[group policy]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[autorun]]></category>

		<guid isPermaLink="false">http://www.arricc.net/group-policy-to-disable-autorun.php</guid>
		<description><![CDATA[Well, its been a while, but I thought I&#8217;d share this little snippet. Theres a big hoo-ha going round at the minute about a number of viruses that are exploiting autorun.inf to spread. You can read all the gorey details over at CERT &#8220;Microsoft Windows Does Not Disable AutoRun Properly&#8221; Essentially, the recommended fix is [...]]]></description>
			<content:encoded><![CDATA[<p>Well, its been a while, but I thought I&#8217;d share this little snippet.</p>
<p>Theres a big hoo-ha going round at the minute about a number of viruses that are exploiting autorun.inf to spread.</p>
<p>You can read all the gorey details over at CERT &#8220;<a href="http://www.us-cert.gov/cas/techalerts/TA09-020A.html">Microsoft Windows Does Not Disable AutoRun Properly</a>&#8221;</p>
<p>Essentially, the recommended fix is to set a registry key. I did read somewhere that this makes windows handle the file as a Win95 ini file but sadly I can&#8217;t find the blog/article where I read that anymore.</p>
<p>Approaching this as a sysadmin and wanting to undertake minimal effort to resolve this issue I&#8217;ve create a Group Policy adm file to solve apply it to all the machines in an Active Directory domain. I&#8217;ve copied the contents below and attached the file to this post.</p>
<p>To use it:</p>
<ol>
<li>Create a new group policy object in your AD</li>
<li>Edit it, right click on the Administrative Templates folder and remove all the default ones listed and add the one below.</li>
<li>Right click on the Administrative Templates folder and change the view filtering to not hide settings that can&#8217;t be fully managed</li>
<li>Group poicy editor will now display the setting to disable autorun which will set the appropriate registry key</li>
</ol>
<p>ADM files are just text. You can either download the one below or copy and paste this (watch for the line wrap on the last line!):<br />
<span id="more-35"></span><br />
<div class="codeblock"><code>; US-CERT Technical Cyber Security Alert TA09-020A -- Microsoft Windows Does Not Disable AutoRun Properly<br />; http://www.us-cert.gov/cas/techalerts/TA09-020A.html<br />;<br />;FIX:<br />;REGEDIT4<br />;&nbsp;  [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping\Autorun.inf]<br />;&nbsp;  @=&quot;@SYS:DoesNotExist&quot;<br />;<br />;<br />CLASS MACHINE<br />	CATEGORY !!RegistryFixes<br />		POLICY !!AutoRunInfSYSDoesNotExist<br />	&nbsp; &nbsp; &nbsp; &nbsp; #if version &gt;= 4<br />	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SUPPORTED !!SUPPORTED_WindowsXPSP2<br />	&nbsp; &nbsp; &nbsp; &nbsp; #endif<br />	&nbsp; &nbsp; &nbsp; &nbsp; EXPLAIN !!AutoRunInfSYSDoesNotExist_Help<br />	&nbsp; &nbsp; &nbsp; &nbsp; KEYNAME &quot;SOFTWARE\Microsoft\Windows NT\CurrentVersion\IniFileMapping\Autorun.inf&quot;<br />	&nbsp; &nbsp; &nbsp; &nbsp; VALUENAME &quot;&quot;<br />	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; VALUEON &quot;@SYS:DoesNotExist&quot;<br />	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; VALUEOFF DELETE<br />&nbsp; &nbsp; 	END POLICY<br />&nbsp; &nbsp; END CATEGORY ; DisableRemovableStorage<br />[strings]<br />RegistryFixes=&quot;Registry Settings&quot;<br />SUPPORTED_WindowsXPSP2=&quot;Microsoft Windows XP Professional SP2 or later&quot;<br />AutoRunInfSYSDoesNotExist=&quot;Disable auto handling of Autorun.inf&quot;<br />AutoRunInfSYSDoesNotExist_Help=&quot;As per US-CERT Technical Cyber Security Alert TA09-020A -- Microsoft Windows Does Not Disable AutoRun Properly\n\n\nhttp://www.us-cert.gov/cas/techalerts/TA09-020A.html&quot;<br /></code></div></p>
<p class="buymebeer"><form action="https://www.paypal.com/cgi-bin/webscr" target="paypal" method="post"><input type="hidden" name="cmd" value="_xclick" /><input type="hidden" name="business" value="mark@arricc.net" /><input type="hidden" name="return" value="http://www.arricc.net/pp-thanks.php" /><input type="hidden" name="item_name" value="Buy Me a Beer for Group Policy to disable Autorun" /><input type="hidden" name="currency_code" value="GBP" /><input type="hidden" name="amount" value="5" /><input type="image" src="http://www.arricc.net/wp-content/plugins/buy-me-beer/icon_beer.gif" align="left" alt="" title="" hspace="3" /></form><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;business=mark@arricc.net&amp;currency_code=GBP&amp;amount=5&amp;return=http://www.arricc.net/pp-thanks.php&amp;item_name=Buy+Me+a+Beer+for+Group+Policy+to+disable+Autorun" target="paypal">If you find this article useful, buy me a beer!</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.arricc.net/group-policy-to-disable-autorun.php/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Photos in Active Directory</title>
		<link>http://www.arricc.net/active-directory-photos-sharepoint.php</link>
		<comments>http://www.arricc.net/active-directory-photos-sharepoint.php#comments</comments>
		<pubDate>Thu, 09 Nov 2006 13:12:09 +0000</pubDate>
		<dc:creator>Fizzgig</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[vbscript]]></category>
		<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[sharepoint]]></category>
		<category><![CDATA[vb.net]]></category>

		<guid isPermaLink="false">http://www.arricc.net/active-directory-photos-sharepoint.php</guid>
		<description><![CDATA[UPDATE: The number one reason people come to this page is they want pictures in Outlook from the Global Address List. It appears this is now possible using Outlook 2010 against Exchange 2010 as outlined by Ilse Van Criekinge in her Technet blog. Oh my blog, how I&#8217;ve neglected you. Here&#8217;s a couple of things [...]]]></description>
			<content:encoded><![CDATA[<p>UPDATE:<br />
The number one reason people come to this page is they want pictures in Outlook from the Global Address List.<br />
It appears this is now possible using Outlook 2010 against Exchange 2010 as outlined by Ilse Van Criekinge in her <a href="http://blogs.technet.com/ilvancri/archive/2009/11/17/upload-picture-in-outlook-2010-using-the-exchange-management-shell-exchange-2010.aspx">Technet blog</a>.</p>
<hr />
Oh my blog, how I&#8217;ve neglected you.</p>
<p>Here&#8217;s a couple of things I managed to cook up at work this week, again after spending an inordinate amount of time on Google looking for the answer and having to piece it together bit by bit.</p>
<p>The problem: how to store (and retrieve) staff photos in Active Directory. After the first twenty or so webpages I&#8217;d decided on using the jpegPhoto attribute. The secondary problem of getting the staff to submit to getting their pictures taken has already been solved by the new photopasses we&#8217;re all getting.<br />
<span id="more-27"></span></p>
<p><strong>Warning: </strong>There are some technical considerations to batch importing a large number of pictures into your AD regarding your replication topology. If you had a domain controller at the end of a very slow/poor connection then this could tie up that connection for a prolonged period of time, and as such the pictures could best be stored in ADAM or some other structured content store. </p>
<p>Ok thats the warning out of the way, now on the cool stuff:</p>
<p>1) Resize the images down to an appropriate size, I used Irfanview to batch resize the massive digital camera pics down to about 200&#215;200 pixels resulting in ~25kb files.<br />
2) Save all the pics in a directory named &#8220;Firstname Lastname.jpg&#8221;<br />
3) Run this vbscript with sufficient (Domain Admin?) rights.<br />
<div class="codeblock"><code><span class="synStatement">Const</span> ForReading <span class="synStatement">=</span> <span class="synConstant">1</span><br />InDir <span class="synStatement">=</span> <span class="synConstant">&quot;C:\Temp\Staff Photos&quot;</span><br /><span class="synPreProc">Set</span> fso <span class="synStatement">=</span> <span class="synIdentifier">CreateObject</span><span class="synStatement">(</span><span class="synConstant">&quot;Scripting.FileSystemObject&quot;</span><span class="synStatement">)</span><br /><span class="synPreProc">set</span> oIADS <span class="synStatement">=</span> <span class="synIdentifier">GetObject</span><span class="synStatement">(</span><span class="synConstant">&quot;LDAP://RootDSE&quot;</span><span class="synStatement">)</span><br />strDefaultNC <span class="synStatement">=</span> oIADS<span class="synStatement">.Get(</span><span class="synConstant">&quot;defaultnamingcontext&quot;</span><span class="synStatement">)</span><br /><span class="synPreProc">Set</span> theConn <span class="synStatement">=</span> <span class="synIdentifier">CreateObject</span><span class="synStatement">(</span><span class="synConstant">&quot;ADODB.Connection&quot;</span><span class="synStatement">)</span><br />theConn<span class="synStatement">.</span>Provider <span class="synStatement">=</span> <span class="synConstant">&quot;ADsDSOObject&quot;</span><br />theConn<span class="synStatement">.</span><span class="synPreProc">Open</span> <span class="synConstant">&quot;ADs Provider&quot;</span><br /><span class="synPreProc">Set</span> theCmd&nbsp; <span class="synStatement">=</span> <span class="synIdentifier">CreateObject</span><span class="synStatement">(</span><span class="synConstant">&quot;ADODB.Command&quot;</span><span class="synStatement">)</span><br />theCmd<span class="synStatement">.</span>ActiveConnection <span class="synStatement">=</span> theConn<br /><span class="synPreProc">Set</span> objRecordSet <span class="synStatement">=</span> <span class="synIdentifier">CreateObject</span><span class="synStatement">(</span><span class="synConstant">&quot;ADODB.Recordset&quot;</span><span class="synStatement">)</span><br /><span class="synStatement">For</span> <span class="synStatement">Each</span> tFile <span class="synStatement">In</span> fso<span class="synStatement">.</span>GetFolder<span class="synStatement">(</span>InDir<span class="synStatement">).</span><span class="synPreProc">Files</span><br />&nbsp; &nbsp; tName <span class="synStatement">=</span> tFile<span class="synStatement">.Name</span><br />&nbsp; &nbsp; <span class="synComment">'Gets the persons Name from the file by stripping the extention.</span><br />&nbsp; &nbsp; tName <span class="synStatement">=</span> <span class="synIdentifier">Left</span><span class="synStatement">(</span>tName<span class="synStatement">,</span> InStrRev<span class="synStatement">(</span>tName<span class="synStatement">,</span><span class="synConstant">&quot;.&quot;</span><span class="synStatement">)-</span><span class="synConstant">1</span><span class="synStatement">)</span><br />&nbsp; &nbsp; <span class="synComment">'You may need to tweak this bit depending on your naming conventions.</span><br />&nbsp; &nbsp; strQuery <span class="synStatement">=</span> <span class="synConstant">&quot;&lt;LDAP://&quot;</span> <span class="synStatement">&amp;</span> strDefaultNC <span class="synStatement">&amp;</span> <span class="synConstant">&quot;&gt;;&quot;</span> <span class="synStatement">&amp; _</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="synConstant">&quot;(&amp;(objectClass=person)(name=&quot;</span> <span class="synStatement">&amp;</span> tName <span class="synStatement">&amp;</span> <span class="synConstant">&quot;));name,adspath;subtree&quot;</span><br />&nbsp; &nbsp; theCmd<span class="synStatement">.</span>CommandText <span class="synStatement">=</span> strQuery<br />&nbsp; &nbsp; <span class="synPreProc">Set</span> objRS <span class="synStatement">=</span> theCmd<span class="synStatement">.</span><span class="synPreProc">Execute</span><br />&nbsp; &nbsp; <span class="synStatement">If</span> objRS<span class="synStatement">.</span>RecordCount <span class="synStatement">=</span> <span class="synConstant">0</span> <span class="synStatement">Then</span><br />&nbsp; &nbsp; &nbsp;  <span class="synIdentifier">MsgBox</span> <span class="synConstant">&quot;Can't find account for &quot;</span> <span class="synStatement">&amp;</span> tName<br />&nbsp; &nbsp; <span class="synStatement">Else</span><br />&nbsp; &nbsp; &nbsp;  <span class="synPreProc">Set</span> objUser <span class="synStatement">=</span> <span class="synIdentifier">GetObject</span><span class="synStatement">(</span>objRS<span class="synStatement">(</span><span class="synConstant">&quot;adspath&quot;</span><span class="synStatement">))</span><br />&nbsp; &nbsp; &nbsp;  ObjUser<span class="synStatement">.Put</span> <span class="synConstant">&quot;jpegPhoto&quot;</span><span class="synStatement">,</span> ReadByteArray<span class="synStatement">(</span>tFile<span class="synStatement">.</span>Path<span class="synStatement">)</span><br />&nbsp; &nbsp; &nbsp;  ObjUser<span class="synStatement">.</span>SetInfo<br />&nbsp; &nbsp; <span class="synStatement">End</span> <span class="synStatement">If</span><br /><span class="synStatement">Next</span><br /><span class="synComment">'Stolen from http://www.ericphelps.com/q193998/index.htm</span><br /><span class="synStatement">Function</span> ReadByteArray<span class="synStatement">(</span>strFileName<span class="synStatement">)</span><br />&nbsp; &nbsp;  <span class="synStatement">Const</span> adTypeBinary <span class="synStatement">=</span> <span class="synConstant">1</span><br />&nbsp; &nbsp;  <span class="synStatement">Dim</span> bin<br />&nbsp; &nbsp;  <span class="synPreProc">Set</span> bin <span class="synStatement">=</span> <span class="synIdentifier">CreateObject</span><span class="synStatement">(</span><span class="synConstant">&quot;ADODB.Stream&quot;</span><span class="synStatement">)</span><br />&nbsp; &nbsp;  bin<span class="synStatement">.Type</span> <span class="synStatement">=</span> adTypeBinary<br />&nbsp; &nbsp;  bin<span class="synStatement">.</span><span class="synPreProc">Open</span><br />&nbsp; &nbsp;  bin<span class="synStatement">.</span>LoadFromFile strFileName<br />&nbsp; &nbsp;  ReadByteArray <span class="synStatement">=</span> bin<span class="synStatement">.</span>Read<br /><span class="synStatement">End</span> <span class="synStatement">Function</span><br /></code></div><br />
Download: <a id="p29" href="http://www.arricc.net/wp-content/uploads/userphotovb.txt">UserPhoto.vb</a></p>
<p>Ok, thats the import done. I&#8217;m not entirely sure that that is the most appropriate format to store the pictures in, but they can be retrieved with the code below.</p>
<p>As part of a project I&#8217;m working on I&#8217;m looking at the implementation of <a href="http://www.microsoft.com/sharepoint">Sharepoint</a> across various parts of our company, so lets create a SharePoint Webpart to display the pics!</p>
<p>My first problem was how to create a webpart to output an image, not link to an image. In the end, thanks mainly to <a href="http://binaryjam.wordpress.com/2006/09/27/dynamic-images-from-web-parts/">Simon Tocker</a> I managed to get it working.</p>
<p><div class="codeblock"><code>Imports System<br />Imports System<span class="synStatement">.</span>ComponentModel<br />Imports System<span class="synStatement">.</span>Web<span class="synStatement">.</span>UI<br />Imports System<span class="synStatement">.</span>Web<span class="synStatement">.</span>UI<span class="synStatement">.</span>WebControls<br />Imports System<span class="synStatement">.</span>Xml<span class="synStatement">.</span>Serialization<br />Imports Microsoft<span class="synStatement">.</span>SharePoint<br />Imports Microsoft<span class="synStatement">.</span>SharePoint<span class="synStatement">.</span>Utilities<br />Imports Microsoft<span class="synStatement">.</span>SharePoint<span class="synStatement">.</span>WebPartPages<br />Imports System<span class="synStatement">.</span>DirectoryServices<br />Imports System<span class="synStatement">.</span>Drawing<br /><span class="synComment">'Description for UserPhoto.</span><br /><span class="synStatement">&lt;</span>DefaultProperty<span class="synStatement">(</span><span class="synConstant">&quot;Text&quot;</span><span class="synStatement">),</span> ToolboxData<span class="synStatement">(</span><span class="synConstant">&quot;&lt;{0}:UserPhoto runat=server&gt;&lt;/{0}:UserPhoto&gt;&quot;</span><span class="synStatement">),</span> XmlRoot<span class="synStatement">(</span>Namespace:<span class="synStatement">=</span><span class="synConstant">&quot;WebParts&quot;</span><span class="synStatement">)&gt; _</span><br /><span class="synStatement">Public</span> Class UserPhoto<br />&nbsp; &nbsp; Inherits Microsoft<span class="synStatement">.</span>SharePoint<span class="synStatement">.</span>WebPartPages<span class="synStatement">.</span>WebPart<br />&nbsp; &nbsp; <span class="synStatement">Implements</span> System<span class="synStatement">.</span>Web<span class="synStatement">.</span>IHttpHandler<br />&nbsp; &nbsp; <span class="synStatement">Private</span> <span class="synStatement">Const</span> _defaultText <span class="synStatement">As</span> <span class="synType">String</span> <span class="synStatement">=</span> <span class="synConstant">&quot;&quot;</span><br />&nbsp; &nbsp; <span class="synStatement">Dim</span> _name <span class="synStatement">As</span> <span class="synType">String</span> <span class="synStatement">=</span> _defaultText<br />&nbsp; &nbsp; <span class="synComment">' Dim imgCtrl As Image</span><br />&nbsp; &nbsp; <span class="synStatement">&lt;</span>Browsable<span class="synStatement">(</span><span class="synConstant">True</span><span class="synStatement">),</span> Category<span class="synStatement">(</span><span class="synConstant">&quot;Miscellaneous&quot;</span><span class="synStatement">),</span> DefaultValue<span class="synStatement">(</span>_defaultText<span class="synStatement">),</span> WebPartStorage<span class="synStatement">(</span>Storage<span class="synStatement">.</span>Shared<span class="synStatement">),</span> FriendlyName<span class="synStatement">(</span><span class="synConstant">&quot;Users Name&quot;</span><span class="synStatement">),</span> Description<span class="synStatement">(</span><span class="synConstant">&quot;Text Property&quot;</span><span class="synStatement">)&gt; _</span><br />&nbsp; &nbsp; <span class="synStatement">Property</span> [UName]<span class="synStatement">()</span> <span class="synStatement">As</span> <span class="synType">String</span><br />&nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">Get</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">Return</span> _name<br />&nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">End</span> <span class="synStatement">Get</span><br />&nbsp; &nbsp; &nbsp; &nbsp; <span class="synPreProc">Set</span><span class="synStatement">(ByVal</span> Value <span class="synStatement">As</span> <span class="synType">String</span><span class="synStatement">)</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _name <span class="synStatement">=</span> Value<br />&nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">End</span> <span class="synPreProc">Set</span><br />&nbsp; &nbsp; <span class="synStatement">End</span> <span class="synStatement">Property</span><br />&nbsp; &nbsp; <span class="synComment">'Render this Web Part to the output parameter specified.</span><br />&nbsp; &nbsp; Protected Overrides <span class="synStatement">Sub</span> RenderWebPart<span class="synStatement">(ByVal</span> output <span class="synStatement">As</span> System<span class="synStatement">.</span>Web<span class="synStatement">.</span>UI<span class="synStatement">.</span>HtmlTextWriter<span class="synStatement">)</span><br />&nbsp; &nbsp; &nbsp; &nbsp; EnsureChildControls<span class="synStatement">()</span><br />&nbsp; &nbsp; &nbsp; &nbsp; output<span class="synStatement">.Write(</span><span class="synConstant">&quot;&lt;center&gt;&lt;img src='_layouts/uImage.ashx?user=&quot;</span> <span class="synStatement">&amp;</span> SPEncode<span class="synStatement">.</span>UrlEncode<span class="synStatement">(</span>UName<span class="synStatement">)</span> <span class="synStatement">&amp;</span> <span class="synConstant">&quot;' /&gt;&lt;/center&gt;&quot;</span><span class="synStatement">)</span><br />&nbsp; &nbsp; <span class="synStatement">End</span> <span class="synStatement">Sub</span><br />&nbsp; &nbsp; Protected Overrides <span class="synStatement">Sub</span> EnsureChildControls<span class="synStatement">()</span><br />&nbsp; &nbsp; <span class="synStatement">End</span> <span class="synStatement">Sub</span><br />&nbsp; &nbsp; <span class="synStatement">Public</span> ReadOnly <span class="synStatement">Property</span> IsReusable<span class="synStatement">()</span> <span class="synStatement">As</span> <span class="synType">Boolean</span> <span class="synStatement">Implements</span> System<span class="synStatement">.</span>Web<span class="synStatement">.</span>IHttpHandler<span class="synStatement">.</span>IsReusable<br />&nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">Get</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">Return</span> <span class="synConstant">True</span><br />&nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">End</span> <span class="synStatement">Get</span><br />&nbsp; &nbsp; <span class="synStatement">End</span> <span class="synStatement">Property</span><br />&nbsp; &nbsp; <span class="synStatement">Public</span> <span class="synStatement">Sub</span> ProcessRequest<span class="synStatement">(ByVal</span> context <span class="synStatement">As</span> System<span class="synStatement">.</span>Web<span class="synStatement">.</span>HttpContext<span class="synStatement">)</span> <span class="synStatement">Implements</span> System<span class="synStatement">.</span>Web<span class="synStatement">.</span>IHttpHandler<span class="synStatement">.</span>ProcessRequest<br />&nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">Dim</span> response <span class="synStatement">As</span> System<span class="synStatement">.</span>Web<span class="synStatement">.</span>HttpResponse <span class="synStatement">=</span> context<span class="synStatement">.</span>Response<br />&nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">Dim</span> request <span class="synStatement">As</span> System<span class="synStatement">.</span>Web<span class="synStatement">.</span>HttpRequest <span class="synStatement">=</span> context<span class="synStatement">.</span>Request<br />&nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">Dim</span> who <span class="synStatement">As</span> <span class="synType">String</span><br />&nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">Dim</span> outImg <span class="synStatement">As</span> System<span class="synStatement">.</span>Drawing<span class="synStatement">.</span>Image<br />&nbsp; &nbsp; &nbsp; &nbsp; Try<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">Dim</span> AuthUser <span class="synStatement">As</span> <span class="synType">String</span> <span class="synStatement">=</span> <span class="synIdentifier">Right</span><span class="synStatement">(</span>request<span class="synStatement">.</span>ServerVariables<span class="synStatement">(</span><span class="synConstant">&quot;AUTH_USER&quot;</span><span class="synStatement">),</span> <span class="synIdentifier">Len</span><span class="synStatement">(</span>request<span class="synStatement">.</span>ServerVariables<span class="synStatement">(</span><span class="synConstant">&quot;AUTH_USER&quot;</span><span class="synStatement">))</span> <span class="synStatement">-</span> <span class="synIdentifier">InStr</span><span class="synStatement">(</span>request<span class="synStatement">.</span>ServerVariables<span class="synStatement">(</span><span class="synConstant">&quot;AUTH_USER&quot;</span><span class="synStatement">),</span> <span class="synConstant">&quot;\&quot;</span><span class="synStatement">))</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">Dim</span> ds <span class="synStatement">As</span> New DirectorySearcher<span class="synStatement">(</span><span class="synConstant">&quot;ldap://dc=example,dc=net&quot;</span><span class="synStatement">)</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">If</span> <span class="synStatement">Not</span> <span class="synStatement">(</span>request<span class="synStatement">.</span>QueryString<span class="synStatement">(</span><span class="synConstant">&quot;user&quot;</span><span class="synStatement">)</span> <span class="synStatement">Is</span> <span class="synConstant">Nothing</span><span class="synStatement">)</span> <span class="synStatement">Then</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; who <span class="synStatement">=</span> request<span class="synStatement">.</span>QueryString<span class="synStatement">(</span><span class="synConstant">&quot;user&quot;</span><span class="synStatement">).</span>ToString<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">End</span> <span class="synStatement">If</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ds<span class="synStatement">.</span>Filter <span class="synStatement">=</span> <span class="synConstant">&quot;(&amp;&quot;</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">If</span> who <span class="synStatement">&lt;&gt;</span> <span class="synConstant">&quot;&quot;</span> <span class="synStatement">Then</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ds<span class="synStatement">.</span>Filter <span class="synStatement">&amp;=</span> <span class="synConstant">&quot;(name=&quot;</span> <span class="synStatement">&amp;</span> who <span class="synStatement">&amp;</span> <span class="synConstant">&quot;)&quot;</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">Else</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ds<span class="synStatement">.</span>Filter <span class="synStatement">&amp;=</span> <span class="synConstant">&quot;(sAMAccountname=&quot;</span> <span class="synStatement">&amp;</span> AuthUser <span class="synStatement">&amp;</span> <span class="synConstant">&quot;)&quot;</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">End</span> <span class="synStatement">If</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ds<span class="synStatement">.</span>Filter <span class="synStatement">&amp;=</span> <span class="synConstant">&quot;(jpegPhoto=*))&quot;</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">Dim</span> res <span class="synStatement">As</span> SearchResult<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; res <span class="synStatement">=</span> ds<span class="synStatement">.</span>FindOne<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Try<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">If</span> <span class="synStatement">Not</span> <span class="synStatement">(</span>res <span class="synStatement">Is</span> <span class="synConstant">Nothing</span><span class="synStatement">)</span> <span class="synStatement">Then</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="synComment">'Dim imgStr As String = res.Properties(&quot;jpegPhoto&quot;).Item(0)</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">Dim</span> imgByte<span class="synStatement">()</span> <span class="synStatement">As</span> <span class="synType">Byte</span> <span class="synStatement">=</span> res<span class="synStatement">.</span>Properties<span class="synStatement">(</span><span class="synConstant">&quot;jpegPhoto&quot;</span><span class="synStatement">).</span><span class="synPreProc">Item</span><span class="synStatement">(</span><span class="synConstant">0</span><span class="synStatement">)</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">Dim</span> ms <span class="synStatement">As</span> System<span class="synStatement">.</span>IO<span class="synStatement">.</span>MemoryStream<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ms <span class="synStatement">=</span> New System<span class="synStatement">.</span>IO<span class="synStatement">.</span>MemoryStream<span class="synStatement">(</span>imgByte<span class="synStatement">)</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">Dim</span> newImage <span class="synStatement">As</span> System<span class="synStatement">.</span>Drawing<span class="synStatement">.</span>Image<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; newImage <span class="synStatement">=</span> System<span class="synStatement">.</span>Drawing<span class="synStatement">.</span>Image<span class="synStatement">.</span>FromStream<span class="synStatement">(</span>ms<span class="synStatement">,</span> <span class="synConstant">True</span><span class="synStatement">)</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; response<span class="synStatement">.</span>ContentType <span class="synStatement">=</span> <span class="synConstant">&quot;image/jpeg&quot;</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; newImage<span class="synStatement">.</span><span class="synPreProc">Save</span><span class="synStatement">(</span>response<span class="synStatement">.</span>OutputStream<span class="synStatement">,</span> System<span class="synStatement">.</span>Drawing<span class="synStatement">.</span>Imaging<span class="synStatement">.</span>ImageFormat<span class="synStatement">.</span>Jpeg<span class="synStatement">)</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">Else</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; response<span class="synStatement">.</span><span class="synPreProc">Clear</span><span class="synStatement">()</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">Dim</span> msg <span class="synStatement">As</span> <span class="synType">String</span> <span class="synStatement">=</span> <span class="synConstant">&quot;No image for &quot;</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">If</span> who <span class="synStatement">=</span> <span class="synConstant">&quot;&quot;</span> <span class="synStatement">Then</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; msg <span class="synStatement">&amp;=</span> <span class="synConstant">&quot;you&quot;</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">Else</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; msg <span class="synStatement">&amp;=</span> who<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">End</span> <span class="synStatement">If</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; outImg <span class="synStatement">=</span> DoImage<span class="synStatement">(</span>msg<span class="synStatement">)</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; response<span class="synStatement">.</span>ContentType <span class="synStatement">=</span> <span class="synConstant">&quot;image/jpeg&quot;</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; outImg<span class="synStatement">.</span><span class="synPreProc">Save</span><span class="synStatement">(</span>response<span class="synStatement">.</span>OutputStream<span class="synStatement">,</span> System<span class="synStatement">.</span>Drawing<span class="synStatement">.</span>Imaging<span class="synStatement">.</span>ImageFormat<span class="synStatement">.</span>Jpeg<span class="synStatement">)</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">End</span> <span class="synStatement">If</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Catch ex <span class="synStatement">As</span> Exception<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; response<span class="synStatement">.</span><span class="synPreProc">Clear</span><span class="synStatement">()</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; outImg <span class="synStatement">=</span> DoImage<span class="synStatement">(</span>who <span class="synStatement">&amp;</span> <span class="synConstant">&quot; : &quot;</span> <span class="synStatement">&amp;</span> ex<span class="synStatement">.</span>Message<span class="synStatement">)</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; response<span class="synStatement">.</span>ContentType <span class="synStatement">=</span> <span class="synConstant">&quot;image/jpeg&quot;</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; outImg<span class="synStatement">.</span><span class="synPreProc">Save</span><span class="synStatement">(</span>response<span class="synStatement">.</span>OutputStream<span class="synStatement">,</span> System<span class="synStatement">.</span>Drawing<span class="synStatement">.</span>Imaging<span class="synStatement">.</span>ImageFormat<span class="synStatement">.</span>Jpeg<span class="synStatement">)</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">End</span> Try<br />&nbsp; &nbsp; &nbsp; &nbsp; Catch es <span class="synStatement">As</span> Exception<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; response<span class="synStatement">.</span><span class="synPreProc">Clear</span><span class="synStatement">()</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; outImg <span class="synStatement">=</span> DoImage<span class="synStatement">(</span>who <span class="synStatement">&amp;</span> <span class="synConstant">&quot; : &quot;</span> <span class="synStatement">&amp;</span> es<span class="synStatement">.</span>Message<span class="synStatement">)</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; response<span class="synStatement">.</span>ContentType <span class="synStatement">=</span> <span class="synConstant">&quot;image/jpeg&quot;</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; outImg<span class="synStatement">.</span><span class="synPreProc">Save</span><span class="synStatement">(</span>response<span class="synStatement">.</span>OutputStream<span class="synStatement">,</span> System<span class="synStatement">.</span>Drawing<span class="synStatement">.</span>Imaging<span class="synStatement">.</span>ImageFormat<span class="synStatement">.</span>Jpeg<span class="synStatement">)</span><br />&nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">End</span> Try<br />&nbsp; &nbsp; <span class="synStatement">End</span> <span class="synStatement">Sub</span><br />&nbsp; &nbsp; <span class="synStatement">Public</span> <span class="synStatement">Function</span> DoImage<span class="synStatement">(ByVal</span> msg <span class="synStatement">As</span> <span class="synType">String</span><span class="synStatement">,</span> Optional <span class="synStatement">ByVal</span> w <span class="synStatement">As</span> <span class="synType">Integer</span> <span class="synStatement">=</span> <span class="synConstant">200</span><span class="synStatement">,</span> Optional <span class="synStatement">ByVal</span> h <span class="synStatement">As</span> <span class="synType">Integer</span> <span class="synStatement">=</span> <span class="synConstant">50</span><span class="synStatement">)</span> <span class="synStatement">As</span> System<span class="synStatement">.</span>Drawing<span class="synStatement">.</span>Image<br />&nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">Dim</span> img <span class="synStatement">As</span> System<span class="synStatement">.</span>Drawing<span class="synStatement">.</span>Image<br />&nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">Dim</span> g <span class="synStatement">As</span> Graphics<br />&nbsp; &nbsp; &nbsp; &nbsp; img <span class="synStatement">=</span> New Bitmap<span class="synStatement">(</span>w<span class="synStatement">,</span> h<span class="synStatement">,</span> System<span class="synStatement">.</span>Drawing<span class="synStatement">.</span>Imaging<span class="synStatement">.</span>PixelFormat<span class="synStatement">.</span>Format32bppArgb<span class="synStatement">)</span><br />&nbsp; &nbsp; &nbsp; &nbsp; g <span class="synStatement">=</span> Graphics<span class="synStatement">.</span>FromImage<span class="synStatement">(</span>img<span class="synStatement">)</span><br />&nbsp; &nbsp; &nbsp; &nbsp; g<span class="synStatement">.</span>FillRectangle<span class="synStatement">(</span>New SolidBrush<span class="synStatement">(</span>Color<span class="synStatement">.</span>White<span class="synStatement">),</span> <span class="synConstant">0</span><span class="synStatement">,</span> <span class="synConstant">0</span><span class="synStatement">,</span> img<span class="synStatement">.Width,</span> img<span class="synStatement">.</span>Height<span class="synStatement">)</span><br />&nbsp; &nbsp; &nbsp; &nbsp; g<span class="synStatement">.</span>DrawString<span class="synStatement">(</span>msg<span class="synStatement">,</span> New Font<span class="synStatement">(</span><span class="synConstant">&quot;Verdana&quot;</span><span class="synStatement">,</span> <span class="synConstant">10</span><span class="synStatement">.</span>0F<span class="synStatement">),</span> New SolidBrush<span class="synStatement">(</span>Color<span class="synStatement">.</span>Black<span class="synStatement">),</span> <span class="synConstant">0</span><span class="synStatement">,</span> <span class="synConstant">0</span><span class="synStatement">)</span><br />&nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">Return</span> img<br />&nbsp; &nbsp; <span class="synStatement">End</span> <span class="synStatement">Function</span><br />&nbsp; &nbsp; Protected Overrides <span class="synStatement">Sub</span> OnPreRender<span class="synStatement">(ByVal</span> e <span class="synStatement">As</span> System<span class="synStatement">.</span>EventArgs<span class="synStatement">)</span><br />&nbsp; &nbsp; &nbsp; &nbsp; MyBase<span class="synStatement">.</span>OnPreRender<span class="synStatement">(</span>e<span class="synStatement">)</span><br />&nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">If</span> UName <span class="synStatement">&lt;&gt;</span> <span class="synConstant">&quot;&quot;</span> <span class="synStatement">Then</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Me<span class="synStatement">.</span>Title <span class="synStatement">=</span> UName<br />&nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">Else</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Try<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">Dim</span> AuthUser <span class="synStatement">As</span> <span class="synType">String</span> <span class="synStatement">=</span> <span class="synIdentifier">Right</span><span class="synStatement">(</span>context<span class="synStatement">.</span>Request<span class="synStatement">.</span>ServerVariables<span class="synStatement">(</span><span class="synConstant">&quot;AUTH_USER&quot;</span><span class="synStatement">),</span> <span class="synIdentifier">Len</span><span class="synStatement">(</span>context<span class="synStatement">.</span>Request<span class="synStatement">.</span>ServerVariables<span class="synStatement">(</span><span class="synConstant">&quot;AUTH_USER&quot;</span><span class="synStatement">))</span> <span class="synStatement">-</span> <span class="synIdentifier">InStr</span><span class="synStatement">(</span>context<span class="synStatement">.</span>Request<span class="synStatement">.</span>ServerVariables<span class="synStatement">(</span><span class="synConstant">&quot;AUTH_USER&quot;</span><span class="synStatement">),</span> <span class="synConstant">&quot;\&quot;</span><span class="synStatement">))</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">Dim</span> ds <span class="synStatement">As</span> New DirectorySearcher<span class="synStatement">(</span><span class="synConstant">&quot;ldap://dc=example,dc=net&quot;</span><span class="synStatement">)</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ds<span class="synStatement">.</span>Filter <span class="synStatement">=</span> <span class="synConstant">&quot;(sAMAccountname=&quot;</span> <span class="synStatement">&amp;</span> AuthUser <span class="synStatement">&amp;</span> <span class="synConstant">&quot;)&quot;</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">Dim</span> res <span class="synStatement">As</span> SearchResult<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; res <span class="synStatement">=</span> ds<span class="synStatement">.</span>FindOne<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Me<span class="synStatement">.</span>Title <span class="synStatement">=</span> res<span class="synStatement">.</span>Properties<span class="synStatement">(</span><span class="synConstant">&quot;Display Name&quot;</span><span class="synStatement">).</span><span class="synPreProc">Item</span><span class="synStatement">(</span><span class="synConstant">0</span><span class="synStatement">)</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Catch<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Me<span class="synStatement">.</span>Title <span class="synStatement">=</span> <span class="synConstant">&quot;Your Photo&quot;</span><br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">End</span> Try<br />&nbsp; &nbsp; &nbsp; &nbsp; <span class="synStatement">End</span> <span class="synStatement">If</span><br />&nbsp; &nbsp; <span class="synStatement">End</span> <span class="synStatement">Sub</span><br /><span class="synStatement">End</span> Class<br /></code></div><br />
Download: <a id="p28" href="http://www.arricc.net/wp-content/uploads/photoloadervbs.txt">PhotoLoader.vbs</a></p>
<p>Additional to that .Net code, the assembly must be installed into the GAC, this made it pretty hard for me to debug the handler! I&#8217;m going to be splitting it into its own class as having the assembly installed in the GAC means it ignores the one I keep putting into /bin! Also, as mentioned by Simon you need to edit your sharepoint web.config and add a line to the httphandlers section.</p>
<p><div class="codeblock"><code><span class="synIdentifier">&lt;add </span><span class="synType">verb</span>=<span class="synConstant">&quot;GET&quot;</span><span class="synIdentifier"> </span><span class="synType">path</span>=<span class="synConstant">&quot;uImage.ashx&quot;</span><span class="synIdentifier"> </span><span class="synType">type</span>=<span class="synConstant">&quot;WebParts.UserPhoto, WebParts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5**************d&quot;</span><span class="synIdentifier"> /&gt;</span><br /></code></div><br />
I also had to set my Sharepoint trust level to Full as I kept getting a message about AllowPartiallyTrustedCallers() not being set, and I couldn&#8217;t for the life of me work out how to set it!</p>
<p class="buymebeer"><form action="https://www.paypal.com/cgi-bin/webscr" target="paypal" method="post"><input type="hidden" name="cmd" value="_xclick" /><input type="hidden" name="business" value="mark@arricc.net" /><input type="hidden" name="return" value="http://www.arricc.net/pp-thanks.php" /><input type="hidden" name="item_name" value="Buy Me a Beer for Photos in Active Directory" /><input type="hidden" name="currency_code" value="GBP" /><input type="hidden" name="amount" value="5" /><input type="image" src="http://www.arricc.net/wp-content/plugins/buy-me-beer/icon_beer.gif" align="left" alt="" title="" hspace="3" /></form><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;business=mark@arricc.net&amp;currency_code=GBP&amp;amount=5&amp;return=http://www.arricc.net/pp-thanks.php&amp;item_name=Buy+Me+a+Beer+for+Photos+in+Active+Directory" target="paypal">If you find this article useful, buy me a beer!</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.arricc.net/active-directory-photos-sharepoint.php/feed</wfw:commentRss>
		<slash:comments>42</slash:comments>
		</item>
	</channel>
</rss>
