<?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>AGYNAMIX</title>
	<atom:link href="http://www.agynamix.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.agynamix.de</link>
	<description>Passionate Software</description>
	<lastBuildDate>Wed, 06 Jul 2011 06:28:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Simidude 1.6.3 Release Notes</title>
		<link>http://www.agynamix.de/blog/simidude-163-release-notes/</link>
		<comments>http://www.agynamix.de/blog/simidude-163-release-notes/#comments</comments>
		<pubDate>Wed, 06 Jul 2011 06:28:41 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Newsletter]]></category>
		<category><![CDATA[Simidude]]></category>
		<category><![CDATA[english]]></category>

		<guid isPermaLink="false">http://www.agynamix.de/?p=756</guid>
		<description><![CDATA[Simidude 1.6.3 Release Notes Today, I released version 1.6.3 of the Network Clipboard Simidude. This one is a maintenance release &#8211; it mainly fixes a few bugs. Simidude did crash on older Mac OS X versions because the new global shortcut handling on Mac depended on a library compiled for Snow Leopard. I fixed this so [...]]]></description>
			<content:encoded><![CDATA[<p></p><h1>Simidude 1.6.3 Release Notes</h1>
<p>Today, I released version 1.6.3 of the Network Clipboard Simidude.<br />
This one is a maintenance release &#8211; it mainly fixes a few bugs.</p>
<p>Simidude did crash on older Mac OS X versions because the new global shortcut handling on Mac depended on a library compiled for Snow Leopard. I fixed this so that crashes are no more (at least, not because of this).</p>
<p>I also updated the libraries that Simidude depends on on all platforms which probably also fixed a few bugs&#8230;</p>
<p>As always, you can download the updated Simidude <a href="http://www.agynamix.de/products/simidude/download/">here</a> and I suggest you do- it&#8217;s free for everyone with a license.</p>
<p>Have a great day,</p>
<p>Torsten.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/simidude-163-release-notes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simidude 1.6.2 Release Notes</title>
		<link>http://www.agynamix.de/blog/simidude-162-release-notes/</link>
		<comments>http://www.agynamix.de/blog/simidude-162-release-notes/#comments</comments>
		<pubDate>Tue, 18 Jan 2011 08:49:11 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Newsletter]]></category>
		<category><![CDATA[Simidude]]></category>
		<category><![CDATA[english]]></category>

		<guid isPermaLink="false">http://www.agynamix.de/?p=749</guid>
		<description><![CDATA[Simidude 1.6.2 Release Notes Today, I&#8217;d like to cheerfully declare the release of Simidude version 1.6.2. This one is a maintenance release that adds a few features and a critical bug fix. There was one hard to grasp bug that some of you experienced when Simidude suddenly tried to suck all juice out of your computer&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p></p><h1>Simidude 1.6.2 Release Notes</h1>
<p>Today, I&#8217;d like to cheerfully declare the release of Simidude version 1.6.2.</p>
<p>This one is a maintenance release that adds a few features and a critical bug fix.</p>
<p>There was one hard to grasp bug that some of you experienced when Simidude suddenly tried to suck all juice out of your computer&#8217;s CPU. I was finally able to reproduce the problem and eliminate the course. Well, that&#8217;s not to say that there aren&#8217;t other causes for this type of problem waiting to be released but, that one is gone&#8230;</p>
<p>New features:</p>
<ul>
<li>The Network Settings preference dialog has a new setting where you can enter IP addresses or network names that should be ignored when Simidude tries to find it&#8217;s own IP address. This is useful if you regularly switch networks and do not wish to change the hard wired IP address (&#8220;The machine&#8217;s IP address&#8221; field in the prefs) every time you change networks but you need to eliminate other network addresses that would pop up.</li>
<li>The installer has been updated. The old installer sometimes left the Updater icon hanging in the Mac OS X Dock. This problem has been resolved for the most part. If you do experience problems please let me know.</li>
</ul>
<p>As always, you can download the updated Simidude <a href="http://www.agynamix.de/products/simidude/download/">here</a> and I suggest you do- it&#8217;s free for everyone with a license.</p>
<p>Have a great day,</p>
<p>Torsten.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/simidude-162-release-notes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simidude 1.6.0 Release Notes</title>
		<link>http://www.agynamix.de/blog/simidude-160-release-notes/</link>
		<comments>http://www.agynamix.de/blog/simidude-160-release-notes/#comments</comments>
		<pubDate>Mon, 04 Oct 2010 12:44:22 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Newsletter]]></category>
		<category><![CDATA[Release Notes]]></category>
		<category><![CDATA[Simidude]]></category>
		<category><![CDATA[english]]></category>

		<guid isPermaLink="false">http://www.agynamix.de/?p=739</guid>
		<description><![CDATA[Finally! Today I&#8217;m excited to release a new version of Simidude with some cool new features. BIG NEW FEATURE: Well at least I&#8217;m excited about this one. The Simidude hotkey support is now available across all supported platforms (Windows (32-bit and 64-bit), Mac (32-bit) and Linux (32-bit and 64-bit)). That means on all platforms you [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Finally!</p>
<p style="text-align: center;"><a href="http://www.agynamix.de/wp-content/uploads/2010/10/waterfall.jpg"><img class="aligncenter size-medium wp-image-741" title="Waterfall in Sequoia NP" src="http://www.agynamix.de/wp-content/uploads/2010/10/waterfall-212x300.jpg" alt="" width="212" height="300" /></a></p>
<p>Today I&#8217;m excited to release a new version of Simidude with some cool new features.</p>
<ul>
<li><strong>BIG NEW FEATURE</strong>: Well at least I&#8217;m excited about this one. The Simidude hotkey support is now available across all supported platforms (Windows (32-bit and 64-bit), Mac (32-bit) and Linux (32-bit and 64-bit)). That means on all platforms you can now use a global hotkey to make the Simidude window and you can use a hotkey to paste the latest Simidude entry (basically &#8220;Activate Item&#8221; and &#8220;CTRL-V&#8221; combined). To enable global hotkey support on Mac systems I started an open <a href="https://bitbucket.org/agynamix/ossupport-connector">source project</a> that does just that.</li>
<li>The Simidude tray menu now hold a menu entry &#8220;Toggle Clipboard Monitoring&#8221;- you can use that to switch clipboard monitoring on or off without the need to navigate to the main window.</li>
<li>I upgraded the Simidude installer which does a better job now integrating with the operating system, especially on Non-Windows systems.</li>
<li>Fixing minor bugs.</li>
</ul>
<p>As always, Simidude is available from our download page at <a href="http://www.agynamix.de/products/simidude/download/">http://www.agynamix.de/products/simidude/download/</a>.</p>
<p>Enjoy,</p>
<p>Torsten Uhlmann</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/simidude-160-release-notes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Click2Dial with your Snom Phone and Mac Address Book</title>
		<link>http://www.agynamix.de/blog/click2dial-with-your-snom-phone-and-mac-address-book/</link>
		<comments>http://www.agynamix.de/blog/click2dial-with-your-snom-phone-and-mac-address-book/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 11:52:56 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[Telefonie]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[FritzBox Snom phone]]></category>

		<guid isPermaLink="false">http://www.agynamix.de/?p=733</guid>
		<description><![CDATA[A while back my old trusty FritzBox (PBX/router/fax/whatever) went south which actually was a good thing. Shopping for a new model I noticed that the newer versions of it (from 7170 onwards) support IP phones like the Snom IP phones I had lying around. When I had separate office rooms I used an Asterisk (Trixbox, [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>A while back my old trusty FritzBox (PBX/router/fax/whatever) went south which actually was a good thing. Shopping for a new model I noticed that the newer versions of it (from 7170 onwards) support IP phones like the Snom IP phones I had lying around.</p>
<p>When I had separate office rooms I used an Asterisk (Trixbox, in fact) pbx and Snom phones with it. After a switched solely to FritzBox these Snom&#8217;s lied dormant- until now.</p>
<p>One thing I liked about the Asterisk solution was a quick way to dial a phone number from an address book. Back then I used Windows machines with Outlook and the free Asterisk Outlook Tapi plugin that was available.</p>
<p>Now the Fritzbox does not support click2dial for IP phone (at least I have not found this feature) but the Snom phone supports command URLs.</p>
<p>So the URL:</p>
<pre>http://snom-user:snom-pw@snom-ip-address/command.htm?number=123456</pre>
<p>will dial &#8220;123456&#8243; from your phone.</p>
<p><strong>Important Note:</strong> To make this work you must disable &#8220;Hidden Features&#8221; in the Snom QoS/Security settings (I use firmware version 8 with my Snom 360). If these are enabled then basically these action URLs don&#8217;t work.</p>
<p>Now you can test the above URL from any web browser and test you got this end working.</p>
<p>The other thing is the connection with Apple Addressbook.</p>
<p>For this I have copied an AppleScript from <a href="http://hints.macworld.com/article.php?story=20040317010729892" target="_blank">here</a> and adapted it to my needs:</p>
<p><script src="https://gist.github.com/813682.js?file=SnomDialer.scpt"></script></p>
<p>Open the AppleScript Editor and copy and paste the above script. Save the script into &#8220;Library/Address Book Plug-Ins&#8221; in your home directory. After you restart the address book application and left click on the text next to a phone number there should be a line in the appearing menu that reads &#8220;Dial with SNOM&#8221;.</p>
<p>[UPDATE] I have updated the script to automatically change the &#8216;+&#8217; in a number into &#8217;00&#8242;, this way the number &#8220;+49 123 45678&#8243; would automatically get translated into &#8220;004912345678&#8243;.</p>
<p>Now click there and let the dial begin&#8230;</p>
<p>Enjoy,</p>
<p>Torsten.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/click2dial-with-your-snom-phone-and-mac-address-book/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simidude 1.5.1 Release Notes</title>
		<link>http://www.agynamix.de/blog/simidude-151-release-notes/</link>
		<comments>http://www.agynamix.de/blog/simidude-151-release-notes/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 11:17:47 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Newsletter]]></category>
		<category><![CDATA[Release Notes]]></category>
		<category><![CDATA[Simidude]]></category>

		<guid isPermaLink="false">http://www.agynamix.de/?p=728</guid>
		<description><![CDATA[Hi everybody! I finally released version 1.5.1 of Simidude. This is mainly a bug fix version that improves upon version 1.5.0: Bug Fix: I tried to improve the way Simidude finds its own IP address. Bug Fix: Some people experienced creashes on older versions of Ubuntu Bug Fix: Some people experienced crashes when a hard [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Hi everybody!</p>
<p><a href="http://www.agynamix.de/wp-content/uploads/2010/08/Sequoia_Bear.jpg"><img class="alignnone size-full wp-image-729" title="Sequoia Bear" src="http://www.agynamix.de/wp-content/uploads/2010/08/Sequoia_Bear.jpg" alt="Sequoia Bear" width="472" height="332" /></a></p>
<p>I finally released version 1.5.1 of Simidude. This is mainly a bug fix version that improves upon version 1.5.0:</p>
<ul>
<li><strong>Bug Fix:</strong> I tried to improve the way Simidude finds its own IP address.</li>
<li><strong>Bug Fix:</strong> Some people experienced creashes on older versions of Ubuntu</li>
<li><strong>Bug Fix:</strong> Some people experienced crashes when a hard coded network address was not available in the current network.</li>
<li><strong>Feature:</strong> I updated the used UI libraries to their respective latest versions. This might bring some improvements especially on Mac and Linux platforms.</li>
</ul>
<p>This version is recommended for all users.</p>
<p>As always if you have any feature requests please let me know- loud  and clear.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/simidude-151-release-notes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apologies for the messed up news feed</title>
		<link>http://www.agynamix.de/blog/apologies-for-the-messed-up-news-feed/</link>
		<comments>http://www.agynamix.de/blog/apologies-for-the-messed-up-news-feed/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 07:23:36 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Newsletter]]></category>
		<category><![CDATA[Simidude]]></category>

		<guid isPermaLink="false">http://www.agynamix.de/?p=720</guid>
		<description><![CDATA[Feedburner sent out a pretty messed up news mail to my subscribers yesterday and I sincerely want to apologize. The problem might have been that I changed the setting of posts in my RSS feeds. That might have caused Feedburner to reset it&#8217;s internal markers and make it misbehave. So in the end, it&#8217;s my [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Feedburner sent out a pretty messed up news mail to my subscribers yesterday and I sincerely want to apologize.</p>
<p>The problem might have been that I changed the setting of posts in my RSS feeds. That might have caused Feedburner to reset it&#8217;s internal markers and make it misbehave.</p>
<p>So in the end, it&#8217;s my fault.</p>
<p>I hope the problem ist solved with this last message to you folks. I really value your interest in Simidude news and it was not my desire to jeopardize that.</p>
<p>So, have a great day, anyway.</p>
<p>Torsten.</p>
<p>PS: Please let me know if further problems exist.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/apologies-for-the-messed-up-news-feed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Synchronize your media library with iTunes</title>
		<link>http://www.agynamix.de/blog/synchronize-your-media-library-with-itunes/</link>
		<comments>http://www.agynamix.de/blog/synchronize-your-media-library-with-itunes/#comments</comments>
		<pubDate>Sun, 04 Jul 2010 18:12:28 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[iTunes]]></category>
		<category><![CDATA[media]]></category>

		<guid isPermaLink="false">http://www.agynamix.de/?p=717</guid>
		<description><![CDATA[This article will show you how you can synchronize your media library (movies, tv shows and iTunes shows at the moment) with iTunes. Background: To understand my solution I&#8217;d like to share with you how my media setup works: I use eyeTV (great program btw) to record movies and tv shows. I then use Toast [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>This article will show you how you can synchronize your media library (movies, tv shows and iTunes shows at the moment) with iTunes.</p>
<h3>Background:</h3>
<p>To understand my solution I&#8217;d like to share with you how my media setup works:</p>
<p>I use eyeTV (great program btw) to record movies and tv shows. I then use Toast to cut out commercials and convert the file into Apple TV format. I then copy the media files unto a NAS (Drobo in my case) into a predefined directory structure (see below).</p>
<p>To watch shows through Apple TV I first have to import them into my Mac Mini (the same that records the shows). I then have the Mac Mini connected to the Apple TV and let it stream media into the living room. So for that purpose the Apple TV is just an overly expensive iTunes connector that just works&#8230;</p>
<h3>How does it work:</h3>
<p>In order to have an automated process (synchronize your current media library with the iTunes library) I have written a small piece of software that does just that. iTunesMediaImport is a Java based cross platform software that is freely available at <a href="http://code.google.com/p/itunesmediaimport/">http://code.google.com/p/itunesmediaimport/</a></p>
<p>When it runs it parses a defined directory structure, dissects the file and directory name and creates a proper iTunes entry. iTunesMediaImport is started from a command line terminal.</p>
<h3>Directory Structure:</h3>
<p>The important thing is that the media archive directory structure is what iTunesMediaImport expects. It knows 3 different kind of media types: iTunes shows, movies you recorded yourself and self recorded TV shows.</p>
<h4>iTunes Shows:</h4>
<p>For iTunes shows you point the variable &#8220;itunesShowsPath.x&#8221; (x is a unique number) straight to the &#8220;TV shows&#8221; folder. The content of that folder should be the folders of your iTunes shows.</p>
<h4>Movies:</h4>
<p>For movies point &#8220;moviePath.x&#8221; to a folder that contains genre folders. Each genre folder contains the movie files that you file under that genre.</p>
<p>So in my case I point the variable (from etc/mediaimport.properties) to: &#8220;/Volumes/Drobo/Mediathek/Movies&#8221;. This folder contains genre folders like &#8220;Adventure&#8221;, &#8220;Action&#8221;, &#8220;Comedy&#8221;. You can have as many and name them as you see fit. When the movie is imported into iTunes it will be filed under a genre category with that name. Then the genre folder contains your movie files. The file name of the movie will be used as it&#8217;s name in iTunes.</p>
<h4>TV Shows:</h4>
<p>TV shows are handled much like movies except there is another directory layer, the season folder.</p>
<p>In mediaimport.properties you find a key &#8220;tvSeriesPath.x&#8221; that points to a directory that forms the root of my tv shows archive, &#8220;/Volumes/Drobo/Mediathek/TV Series&#8221; in my case.</p>
<p>Then this folder contains the names of my tv shows, like &#8220;Bones&#8221;, &#8220;Stargate&#8221; or whatever your poison is. Now under that folder you need to define another folder named &#8220;S&lt;season number&gt;&#8221;, so &#8220;Stargate/S3/&#8221; would be the 3rd season of Stargate.</p>
<p>Under the season folder  you file the tv shows that belong to that season, for instance: &#8220;Stargate 11 &#8211; Tokra.m4v&#8221;. iTunesMediaImport will parse the file name backwards and stop at the first dash (&#8216;-&#8217;) it finds. If it finds a number after the dash (looking towards the beginning of the filename) that number will become the show number in iTunes. The part after the dash until the end of the file name (except the .m4v extension) will become the name of the show.</p>
<p>&#8212;</p>
<p>iTunesMediaImport will keep a log of media files it has added into iTunes in order to avoid processing them over and over again. It will also delete shows from iTunes that have been deleted or renamed in your archive.</p>
<p>I invite you to give it a try, if you want you are welcome to contribute to it on Google Code. There&#8217;s also a forum for it <a href="http://helpdesk.agynamix.de/index.php?pg=forums.topics&amp;id=6">here</a>.</p>
<p>Have fun!</p>
<h4>References:</h4>
<ul>
<li>iTunesMediaImport on Google Code: <a href="http://code.google.com/p/itunesmediaimport/">http://code.google.com/p/itunesmediaimport/</a></li>
<li>iTunesMediaImport forum: <a href="http://helpdesk.agynamix.de/index.php?pg=forums.topics&amp;id=6">http://helpdesk.agynamix.de/index.php?pg=forums.topics&amp;id=6</a></li>
<li>My website: <a href="http://www.agynamix.de">http://www.agynamix.de</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/synchronize-your-media-library-with-itunes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Use ASP.NET Forms Authentication with local Windows Users</title>
		<link>http://www.agynamix.de/blog/use-asp-net-forms-authentication-with-local-windows-users/</link>
		<comments>http://www.agynamix.de/blog/use-asp-net-forms-authentication-with-local-windows-users/#comments</comments>
		<pubDate>Sat, 08 May 2010 11:46:04 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://www.agynamix.de/?p=703</guid>
		<description><![CDATA[This article shows you how to build your own MembershipProvider to authenticate users of your ASP.NET 2.0 web application against Windows user accounts using Forms authentication and the Win32 API method LogonUser.]]></description>
			<content:encoded><![CDATA[<p></p><h2>Summary</h2>
<p>This article shows you how to build your own MembershipProvider to authenticate users of your ASP.NET 2.0 web application against Windows user accounts using Forms authentication and the Win32 API method LogonUser.</p>
<p><span id="more-703"></span></p>
<p>A few years back I developed a small ASP.NET 2.0 application for my customer. The requirement at that time was to authenticate users against ActiveDirectory. We did this using Forms authentication and the ADMembershipProvider that comes with the .NET framework. You would use the Web.config configuration file to define the access string and other parameters for ActiveDirectory access&#8230;</p>
<p>But that&#8217;s not the topic of this post&#8230; Anyway a few weeks ago that same customer asked me to change the authentication in order to validate against Windows user accounts.<br />
At first I had a hard time finding a way to use forms authentication in combination with Windows accounts. But eventually I found a few websites (for instance: here) that gave me the right clue:<br />
There is a Win32 function called LogonUser that can be used to validate the users credentials.</p>
<p>I used that API method in a self made MembershipProvider (WinNTMembershipProvider) to implement an exchangeable authentication mechanism. Then, in Web.config I referenced that new MembershipProvider. That way I didn&#8217;t have to change anything within the existing application, just a configuration change.</p>
<p>Here&#8217;s the essential part of the MembershipProvider that uses the LogonUser API method:</p>
<p>You first need to announce the use of the LogonUser method:</p>
<pre>
<div class="codesnip-container" >
<div class="csharp codesnip" style="font-family:monospace;"><span class="br0">&#91;</span>DllImport<span class="br0">&#40;</span><span class="st0">&quot;ADVAPI32.dll&quot;</span>, EntryPoint <span class="sy0">=</span> <span class="st0">&quot;LogonUserW&quot;</span>, SetLastError <span class="sy0">=</span> <span class="kw1">true</span>,
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CharSet <span class="sy0">=</span> CharSet.<span class="kw1">Auto</span><span class="br0">&#41;</span><span class="br0">&#93;</span>
<span class="kw1">public</span> <span class="kw1">static</span> <span class="kw1">extern</span> <span class="kw4">bool</span> LogonUser<span class="br0">&#40;</span><span class="kw4">string</span> lpszUsername, <span class="kw4">string</span> lpszDomain,
<span class="kw4">string</span> lpszPassword, <span class="kw4">int</span> dwLogonType, <span class="kw4">int</span> dwLogonProvider, <span class="kw1">ref</span> IntPtr phToken<span class="br0">&#41;</span><span class="sy0">;</span></div>
</div>
</pre>
<p>Then, within the ValidateUser method you try to log that user into the system:</p>
<pre>
<div class="codesnip-container" >
<div class="csharp codesnip" style="font-family:monospace;"><span class="kw1">public</span> <span class="kw1">override</span> <span class="kw4">bool</span> ValidateUser<span class="br0">&#40;</span><span class="kw4">string</span> strName, <span class="kw4">string</span> strPassword<span class="br0">&#41;</span>
<span class="br0">&#123;</span>
<span class="kw4">bool</span> bSuccessfulLogin <span class="sy0">=</span> false<span class="sy0">;</span>
IntPtr token <span class="sy0">=</span> IntPtr.<span class="me1">Zero</span><span class="sy0">;</span>

<span class="co1">//userName, domainName and Password parameters are very obvious.</span>
<span class="coMULTI">/* dwLogonType (3rd parameter): I used LOGON32_LOGON_INTERACTIVE, This logon type is
intended for users who will be interactively using the computer, such as a user being
logged on by a terminal server, remote shell, or similar process. This logon type has
the additional expense of caching logon information for disconnected operations. For
more details about this parameter please see http://msdn.microsoft.com/en-
us/library/aa378184(VS.85).aspx */</span>

<span class="coMULTI">/* dwLogonProvider (4th parameter) : I used LOGON32_PROVIDER_DEFAUL, This provider
uses the standard logon provider for the system. The default security provider is
negotiate, unless you pass NULL for the domain name and the user name is not in UPN
format. In this case, the default provider is NTLM. For more details about this
parameter please see http://msdn.microsoft.com/en-us/library/aa378184(VS.85).aspx */</span>
<span class="coMULTI">/* phToken (5th parameter): A pointer to a handle variable that receives a handle to
a token that represents the specified user. We can use this handler for impersonation
purpose. */</span>

bSuccessfulLogin <span class="sy0">=</span> LogonUser<span class="br0">&#40;</span>strName, _userDomain, strPassword, _logonType, 0, <span class="kw1">ref</span> token<span class="br0">&#41;</span><span class="sy0">;</span>

<span class="kw1">return</span> bSuccessfulLogin<span class="sy0">;</span>
<span class="br0">&#125;</span></div>
</div>
</pre>
<p>The next thing is to reference the MembershipProvider in Web.config:</p>
<pre>
<div class="codesnip-container" >
<div class="xml codesnip" style="font-family:monospace;"><span class="sc-1">&lt;!-- userDomain: Domain in which the user is looked up</span>
<span class="sc-1"> &nbsp; &nbsp; logonType: 2 - Interactive, 3 - Network &nbsp;--&gt;</span>
<span class="sc3"><span class="re1">&lt;membership</span> <span class="re0">defaultProvider</span>=<span class="st0">&quot;WinNTMembershipProvider&quot;</span><span class="re2">&gt;</span></span>
&nbsp; &nbsp;<span class="sc3"><span class="re1">&lt;providers<span class="re2">&gt;</span></span></span>
&nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;add</span> <span class="re0">name</span>=<span class="st0">&quot;WinNTMembershipProvider&quot;</span></span>
<span class="sc3"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">type</span>=<span class="st0">&quot;my_package.WinNTMembershipProvider&quot;</span></span>
<span class="sc3"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">applicationName</span>=<span class="st0">&quot;Sessiondatenserver&quot;</span></span>
<span class="sc3"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">description</span>=<span class="st0">&quot;Checks Username and Password against valid Windows users of a given domain&quot;</span></span>
<span class="sc3"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">userDomain</span>=<span class="st0">&quot;USER_DOMAIN&quot;</span></span>
<span class="sc3"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">logonType</span>=<span class="st0">&quot;3&quot;</span></span>
<span class="sc3"> &nbsp; &nbsp; &nbsp;<span class="re2">/&gt;</span></span>
&nbsp; &nbsp;<span class="sc3"><span class="re1">&lt;/providers<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;/membership<span class="re2">&gt;</span></span></span></div>
</div>
</pre>
<p>Here&#8217;s the complete source code for WinNTMembershipProvider:</p>
<p>Please note that most of the boilerplate here is not needed for our example, it&#8217;s just needed to fullfill the MembershipProvider contract.</p>
<pre>
<div class="codesnip-container" >
<div class="csharp codesnip" style="font-family:monospace;"><span class="kw1">using</span> <span class="co3">System</span><span class="sy0">;</span>
<span class="kw1">using</span> <span class="co3">System.Collections.Generic</span><span class="sy0">;</span>
<span class="kw1">using</span> <span class="co3">System.Text</span><span class="sy0">;</span>
<span class="kw1">using</span> <span class="co3">System.Web</span><span class="sy0">;</span>
<span class="kw1">using</span> <span class="co3">System.Web.Security</span><span class="sy0">;</span>
<span class="kw1">using</span> <span class="co3">System.Runtime.InteropServices</span><span class="sy0">;</span>

<span class="kw1">namespace</span> my_package
<span class="br0">&#123;</span>
&nbsp; &nbsp; <span class="kw1">public</span> <span class="kw4">class</span> WinNTMembershipProvider <span class="sy0">:</span> MembershipProvider
&nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span>DllImport<span class="br0">&#40;</span><span class="st0">&quot;ADVAPI32.dll&quot;</span>, EntryPoint <span class="sy0">=</span> <span class="st0">&quot;LogonUserW&quot;</span>, SetLastError <span class="sy0">=</span> <span class="kw1">true</span>,
&nbsp; &nbsp; &nbsp; &nbsp; CharSet <span class="sy0">=</span> CharSet.<span class="kw1">Auto</span><span class="br0">&#41;</span><span class="br0">&#93;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">static</span> <span class="kw1">extern</span> <span class="kw4">bool</span> LogonUser<span class="br0">&#40;</span><span class="kw4">string</span> lpszUsername, <span class="kw4">string</span> lpszDomain,
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw4">string</span> lpszPassword, <span class="kw4">int</span> dwLogonType, <span class="kw4">int</span> dwLogonProvider, <span class="kw1">ref</span> IntPtr phToken<span class="br0">&#41;</span><span class="sy0">;</span>

&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw4">String</span> _strName<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw4">String</span> _strApplicationName<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw4">String</span> _userDomain<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw4">int</span> _logonType<span class="sy0">;</span>

&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> Boolean _boolEnablePasswordReset<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> Boolean _boolEnablePasswordRetrieval<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw4">int</span> _intMaxInvalidPasswordAttempts<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw4">int</span> _intMinRequiredAlphanumericCharacters<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw4">int</span> _intMinRequiredPasswordLength<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> MembershipPasswordFormat _oPasswordFormat<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> <span class="kw4">string</span> _strPasswordStrengthRegularExpression<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> Boolean _boolRequiresQuestionAndAnswer<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">private</span> Boolean _boolRequiresUniqueEMail<span class="sy0">;</span>

&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> WinNTMembershipProvider<span class="br0">&#40;</span><span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _strName <span class="sy0">=</span> <span class="st0">&quot;WinNTMembershipProvider&quot;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _strApplicationName <span class="sy0">=</span> <span class="st0">&quot;DefaultApp&quot;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _userDomain <span class="sy0">=</span> <span class="st0">&quot;&quot;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _logonType <span class="sy0">=</span> <span class="nu0">2</span><span class="sy0">;</span> <span class="co1">// Interactive by default</span>

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _boolEnablePasswordReset <span class="sy0">=</span> false<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _boolEnablePasswordRetrieval <span class="sy0">=</span> false<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _boolRequiresQuestionAndAnswer <span class="sy0">=</span> false<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _boolRequiresUniqueEMail <span class="sy0">=</span> false<span class="sy0">;</span>

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _intMaxInvalidPasswordAttempts <span class="sy0">=</span> <span class="nu0">3</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _intMinRequiredAlphanumericCharacters <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _intMinRequiredPasswordLength <span class="sy0">=</span> <span class="nu0">5</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _strPasswordStrengthRegularExpression <span class="sy0">=</span> <span class="st_h">@&quot;[\w| !§$%&amp;amp;/()=\-?\*]*&quot;</span><span class="sy0">;</span>

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _oPasswordFormat <span class="sy0">=</span> MembershipPasswordFormat.<span class="me1">Clear</span><span class="sy0">;</span>

&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>

&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//DFB: reads entries from web.config and initializes this class from those values</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// &nbsp;Once the provider is loaded, the</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// &nbsp;runtime calls Initialize and passes the settings as name-value</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// &nbsp;pairs in an instance of the NameValueCollection class.</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">override</span> <span class="kw1">void</span> Initialize<span class="br0">&#40;</span><span class="kw4">string</span> name, <span class="kw5">System.<span class="me1">Collections</span></span>.<span class="me1">Specialized</span>.<span class="me1">NameValueCollection</span> config<span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>config <span class="sy0">==</span> <span class="kw1">null</span><span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">throw</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> ArgumentNullException<span class="br0">&#40;</span><span class="st0">&quot;config&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw4">string</span>.<span class="me1">IsNullOrEmpty</span><span class="br0">&#40;</span>name<span class="br0">&#41;</span><span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; name <span class="sy0">=</span> <span class="st0">&quot;WinNTMembershipProvider&quot;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw4">string</span>.<span class="me1">IsNullOrEmpty</span><span class="br0">&#40;</span>config<span class="br0">&#91;</span><span class="st0">&quot;description&quot;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; config.<span class="me1">Remove</span><span class="br0">&#40;</span><span class="st0">&quot;description&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; config.<span class="me1">Add</span><span class="br0">&#40;</span><span class="st0">&quot;description&quot;</span>, <span class="st0">&quot;WinNT Membership Provider&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">base</span>.<span class="me1">Initialize</span><span class="br0">&#40;</span>name, config<span class="br0">&#41;</span><span class="sy0">;</span>

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="kw4">string</span> key <span class="kw1">in</span> config.<span class="me1">Keys</span><span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">switch</span> <span class="br0">&#40;</span>key.<span class="me1">ToLower</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;name&quot;</span><span class="sy0">:</span> _strName <span class="sy0">=</span> config<span class="br0">&#91;</span>key<span class="br0">&#93;</span><span class="sy0">;</span> break<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;applicationname&quot;</span><span class="sy0">:</span> _strApplicationName <span class="sy0">=</span> config<span class="br0">&#91;</span>key<span class="br0">&#93;</span><span class="sy0">;</span> break<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;userdomain&quot;</span><span class="sy0">:</span> _userDomain <span class="sy0">=</span> config<span class="br0">&#91;</span>key<span class="br0">&#93;</span><span class="sy0">;</span> break<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&quot;logontype&quot;</span><span class="sy0">:</span> _logonType <span class="sy0">=</span> <span class="kw4">int</span>.<span class="me1">Parse</span><span class="br0">&#40;</span>config<span class="br0">&#91;</span>key<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span> break<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> &nbsp; &nbsp; &nbsp; &nbsp;

&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">override</span> <span class="kw4">bool</span> ValidateUser<span class="br0">&#40;</span><span class="kw4">string</span> strName, <span class="kw4">string</span> strPassword<span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw4">bool</span> bSuccessfulLogin <span class="sy0">=</span> false<span class="sy0">;</span>

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IntPtr token <span class="sy0">=</span> IntPtr.<span class="me1">Zero</span><span class="sy0">;</span>

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//userName, domainName and Password parameters are very obvious.</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/* dwLogonType (3rd parameter): I used LOGON32_LOGON_INTERACTIVE, This logon type is
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; intended for users who will be interactively using the computer, such as a user being
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; logged on by a terminal server, remote shell, or similar process. This logon type has
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; the additional expense of caching logon information for disconnected operations. For
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; more details about this parameter please see http://msdn.microsoft.com/en-
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; us/library/aa378184(VS.85).aspx */</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/* dwLogonProvider (4th parameter) : I used LOGON32_PROVIDER_DEFAUL, This provider
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; uses the standard logon provider for the system. The default security provider is
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; negotiate, unless you pass NULL for the domain name and the user name is not in UPN
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; format. In this case, the default provider is NTLM. For more details about this
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; parameter please see http://msdn.microsoft.com/en-us/library/aa378184(VS.85).aspx */</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/* phToken (5th parameter): A pointer to a handle variable that receives a handle to
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; a token that represents the specified user. We can use this handler for impersonation
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; purpose. */</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bSuccessfulLogin <span class="sy0">=</span> LogonUser<span class="br0">&#40;</span>strName, _userDomain, strPassword, _logonType, 0, <span class="kw1">ref</span> token<span class="br0">&#41;</span><span class="sy0">;</span>

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> bSuccessfulLogin<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>

&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/**
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* Properties
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*/</span>

&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">override</span> <span class="kw4">string</span> ApplicationName
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> _strApplicationName<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; set
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _strApplicationName <span class="sy0">=</span> value<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">override</span> <span class="kw4">string</span> Name
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> _strName<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">override</span> <span class="kw4">bool</span> EnablePasswordReset
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> _boolEnablePasswordReset<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">override</span> <span class="kw4">bool</span> EnablePasswordRetrieval
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> _boolEnablePasswordRetrieval<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">override</span> <span class="kw4">int</span> MaxInvalidPasswordAttempts
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> _intMaxInvalidPasswordAttempts<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>

&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">override</span> <span class="kw4">int</span> MinRequiredNonAlphanumericCharacters
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> _intMinRequiredAlphanumericCharacters<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>

&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">override</span> <span class="kw4">int</span> MinRequiredPasswordLength
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> _intMinRequiredPasswordLength<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>

&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">override</span> <span class="kw4">int</span> PasswordAttemptWindow
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">throw</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> NotImplementedException<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">override</span> MembershipPasswordFormat PasswordFormat
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> _oPasswordFormat<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">override</span> <span class="kw4">string</span> PasswordStrengthRegularExpression
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> _strPasswordStrengthRegularExpression<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">override</span> <span class="kw4">bool</span> RequiresQuestionAndAnswer
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> _boolRequiresQuestionAndAnswer<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">override</span> <span class="kw4">bool</span> RequiresUniqueEmail
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> _boolRequiresUniqueEMail<span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>

&nbsp; &nbsp; &nbsp; &nbsp; <span class="coMULTI">/*
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* API Functions
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*/</span>

&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">override</span> <span class="kw4">string</span> GetPassword<span class="br0">&#40;</span><span class="kw4">string</span> strName, <span class="kw4">string</span> strAnswer<span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">throw</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> NotImplementedException<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>

&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">override</span> MembershipUser CreateUser<span class="br0">&#40;</span><span class="kw4">string</span> username, <span class="kw4">string</span> password, <span class="kw4">string</span> email, <span class="kw4">string</span> passwordQuestion,
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw4">string</span> passwordAnswer, <span class="kw4">bool</span> isApproved, <span class="kw4">object</span> userId, <span class="kw1">out</span> MembershipCreateStatus status<span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">throw</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> NotImplementedException<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>

&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">override</span> <span class="kw4">string</span> GetUserNameByEmail<span class="br0">&#40;</span><span class="kw4">string</span> strEmail<span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">throw</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> NotImplementedException<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>

&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">override</span> <span class="kw4">string</span> ResetPassword<span class="br0">&#40;</span><span class="kw4">string</span> strName, <span class="kw4">string</span> strAnswer<span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">throw</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> NotImplementedException<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>

&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">override</span> <span class="kw4">bool</span> ChangePassword<span class="br0">&#40;</span><span class="kw4">string</span> strName, <span class="kw4">string</span> strOldPwd, <span class="kw4">string</span> strNewPwd<span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">throw</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> NotImplementedException<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>

&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">override</span> <span class="kw4">int</span> GetNumberOfUsersOnline<span class="br0">&#40;</span><span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">throw</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> NotImplementedException<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>

&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">override</span> <span class="kw4">bool</span> ChangePasswordQuestionAndAnswer<span class="br0">&#40;</span><span class="kw4">string</span> strName, <span class="kw4">string</span> strPassword, <span class="kw4">string</span> strNewPwdQuestion, <span class="kw4">string</span> strNewPwdAnswer<span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">throw</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> NotImplementedException<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>

&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">override</span> MembershipUser GetUser<span class="br0">&#40;</span><span class="kw4">string</span> strName, <span class="kw4">bool</span> boolUserIsOnline<span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">throw</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> NotImplementedException<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>

&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">override</span> <span class="kw4">bool</span> DeleteUser<span class="br0">&#40;</span><span class="kw4">string</span> strName, <span class="kw4">bool</span> boolDeleteAllRelatedData<span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">throw</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> NotImplementedException<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>

&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">override</span> MembershipUserCollection FindUsersByEmail<span class="br0">&#40;</span><span class="kw4">string</span> strEmailToMatch, <span class="kw4">int</span> iPageIndex, <span class="kw4">int</span> iPageSize, <span class="kw1">out</span> <span class="kw4">int</span> iTotalRecords<span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">throw</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> NotImplementedException<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">override</span> MembershipUserCollection FindUsersByName<span class="br0">&#40;</span><span class="kw4">string</span> strUsernameToMatch, <span class="kw4">int</span> iPageIndex, <span class="kw4">int</span> iPageSize, <span class="kw1">out</span> <span class="kw4">int</span> iTotalRecords<span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">throw</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> NotImplementedException<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>

&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">override</span> MembershipUserCollection GetAllUsers<span class="br0">&#40;</span><span class="kw4">int</span> iPageIndex, <span class="kw4">int</span> iPageSize, <span class="kw1">out</span> <span class="kw4">int</span> iTotalRecords<span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">throw</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> NotImplementedException<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>

&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">override</span> <span class="kw1">void</span> UpdateUser<span class="br0">&#40;</span>MembershipUser user<span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">throw</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> NotImplementedException<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>

&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">override</span> <span class="kw4">bool</span> UnlockUser<span class="br0">&#40;</span><span class="kw4">string</span> strUserName<span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">throw</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> NotImplementedException<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>

&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">public</span> <span class="kw1">override</span> MembershipUser GetUser<span class="br0">&#40;</span><span class="kw4">object</span> providerUserKey, <span class="kw4">bool</span> userIsOnline<span class="br0">&#41;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">throw</span> <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> NotImplementedException<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
&nbsp; &nbsp; <span class="br0">&#125;</span>
<span class="br0">&#125;</span></div>
</div>
</pre>
<p>And the Web.config:</p>
<pre>
<div class="codesnip-container" >
<div class="xml codesnip" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;?xml</span> <span class="re0">version</span>=<span class="st0">&quot;1.0&quot;</span><span class="re2">?&gt;</span></span>
<span class="sc3"><span class="re1">&lt;configuration<span class="re2">&gt;</span></span></span>
&nbsp; <span class="sc3"><span class="re1">&lt;system.web<span class="re2">&gt;</span></span></span>

&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;authentication</span> <span class="re0">mode</span>=<span class="st0">&quot;Forms&quot;</span><span class="re2">&gt;</span></span>
&nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;forms</span> <span class="re0">loginUrl</span>=<span class="st0">&quot;Login.aspx&quot;</span> </span>
<span class="sc3"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">timeout</span>=<span class="st0">&quot;30&quot;</span> </span>
<span class="sc3"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">name</span>=<span class="st0">&quot;.AUTHNAME&quot;</span> </span>
<span class="sc3"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">requireSSL</span>=<span class="st0">&quot;true&quot;</span> &nbsp;</span>
<span class="sc3"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">slidingExpiration</span>=<span class="st0">&quot;true&quot;</span> </span>
<span class="sc3"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">defaultUrl</span>=<span class="st0">&quot;default.aspx&quot;</span> <span class="re2">/&gt;</span></span>
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/authentication<span class="re2">&gt;</span></span></span>
&nbsp; &nbsp; 
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;authorization<span class="re2">&gt;</span></span></span>
&nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;deny</span> <span class="re0">users</span>=<span class="st0">&quot;?&quot;</span> <span class="re2">/&gt;</span></span>
&nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;allow</span> <span class="re0">users</span>=<span class="st0">&quot;*&quot;</span> <span class="re2">/&gt;</span></span>
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/authorization<span class="re2">&gt;</span></span></span>

&nbsp; &nbsp; <span class="sc-1">&lt;!-- userDomain: Domain in which the user is looked up</span>
<span class="sc-1"> &nbsp; &nbsp; &nbsp; &nbsp; logonType: 2 - Interactive, 3 - Network &nbsp;--&gt;</span>
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;membership</span> <span class="re0">defaultProvider</span>=<span class="st0">&quot;WinNTMembershipProvider&quot;</span><span class="re2">&gt;</span></span>
&nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;providers<span class="re2">&gt;</span></span></span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;add</span> <span class="re0">name</span>=<span class="st0">&quot;WinNTMembershipProvider&quot;</span></span>
<span class="sc3"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">type</span>=<span class="st0">&quot;my_package.WinNTMembershipProvider&quot;</span></span>
<span class="sc3"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">applicationName</span>=<span class="st0">&quot;Sessiondatenserver&quot;</span></span>
<span class="sc3"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">description</span>=<span class="st0">&quot;Checks Username and Password against valid Windows users of a given domain&quot;</span></span>
<span class="sc3"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">userDomain</span>=<span class="st0">&quot;USER_DOMAIN&quot;</span></span>
<span class="sc3"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re0">logonType</span>=<span class="st0">&quot;3&quot;</span></span>
<span class="sc3"> &nbsp; &nbsp; &nbsp; &nbsp;<span class="re2">/&gt;</span></span>
&nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/providers<span class="re2">&gt;</span></span></span>
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/membership<span class="re2">&gt;</span></span></span>

&nbsp; <span class="sc3"><span class="re1">&lt;/system.web<span class="re2">&gt;</span></span></span>

&nbsp; <span class="sc-1">&lt;!-- Allow anonymous access (non-Forms login) to the themes and images --&gt;</span>
&nbsp; <span class="sc3"><span class="re1">&lt;location</span> <span class="re0">path</span>=<span class="st0">&quot;css&quot;</span><span class="re2">&gt;</span></span>
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;system.web<span class="re2">&gt;</span></span></span>
&nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;authorization<span class="re2">&gt;</span></span></span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;allow</span> <span class="re0">users</span>=<span class="st0">&quot;*&quot;</span><span class="re2">/&gt;</span></span>
&nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/authorization<span class="re2">&gt;</span></span></span>
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/system.web<span class="re2">&gt;</span></span></span>
&nbsp; <span class="sc3"><span class="re1">&lt;/location<span class="re2">&gt;</span></span></span>
&nbsp; <span class="sc3"><span class="re1">&lt;location</span> <span class="re0">path</span>=<span class="st0">&quot;image&quot;</span><span class="re2">&gt;</span></span>
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;system.web<span class="re2">&gt;</span></span></span>
&nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;authorization<span class="re2">&gt;</span></span></span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;allow</span> <span class="re0">users</span>=<span class="st0">&quot;*&quot;</span><span class="re2">/&gt;</span></span>
&nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/authorization<span class="re2">&gt;</span></span></span>
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/system.web<span class="re2">&gt;</span></span></span>
&nbsp; <span class="sc3"><span class="re1">&lt;/location<span class="re2">&gt;</span></span></span>
&nbsp; <span class="sc-1">&lt;!-- Allow anonymous access (non-Forms login) to the NonSSL directory --&gt;</span>
&nbsp; <span class="sc3"><span class="re1">&lt;location</span> <span class="re0">path</span>=<span class="st0">&quot;NonSSL&quot;</span><span class="re2">&gt;</span></span>
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;system.web<span class="re2">&gt;</span></span></span>
&nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;authorization<span class="re2">&gt;</span></span></span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;allow</span> <span class="re0">users</span>=<span class="st0">&quot;*&quot;</span><span class="re2">/&gt;</span></span>
&nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/authorization<span class="re2">&gt;</span></span></span>
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/system.web<span class="re2">&gt;</span></span></span>
&nbsp; <span class="sc3"><span class="re1">&lt;/location<span class="re2">&gt;</span></span></span>
&nbsp; <span class="sc-1">&lt;!-- Allow anonymous access (non-Forms login) to the help --&gt;</span>
&nbsp; <span class="sc3"><span class="re1">&lt;location</span> <span class="re0">path</span>=<span class="st0">&quot;help.aspx&quot;</span><span class="re2">&gt;</span></span>
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;system.web<span class="re2">&gt;</span></span></span>
&nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;authorization<span class="re2">&gt;</span></span></span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;allow</span> <span class="re0">users</span>=<span class="st0">&quot;*&quot;</span><span class="re2">/&gt;</span></span>
&nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/authorization<span class="re2">&gt;</span></span></span>
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/system.web<span class="re2">&gt;</span></span></span>
&nbsp; <span class="sc3"><span class="re1">&lt;/location<span class="re2">&gt;</span></span></span>
&nbsp; <span class="sc-1">&lt;!-- Allow anonymous access (non-Forms login) to the imprint --&gt;</span>
&nbsp; <span class="sc3"><span class="re1">&lt;location</span> <span class="re0">path</span>=<span class="st0">&quot;Imprint.aspx&quot;</span><span class="re2">&gt;</span></span>
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;system.web<span class="re2">&gt;</span></span></span>
&nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;authorization<span class="re2">&gt;</span></span></span>
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;allow</span> <span class="re0">users</span>=<span class="st0">&quot;*&quot;</span><span class="re2">/&gt;</span></span>
&nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/authorization<span class="re2">&gt;</span></span></span>
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/system.web<span class="re2">&gt;</span></span></span>
&nbsp; <span class="sc3"><span class="re1">&lt;/location<span class="re2">&gt;</span></span></span>

<span class="sc3"><span class="re1">&lt;/configuration<span class="re2">&gt;</span></span></span></div>
</div>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/use-asp-net-forms-authentication-with-local-windows-users/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simidude 1.5.0 released</title>
		<link>http://www.agynamix.de/blog/simidude-1-5-0-released/</link>
		<comments>http://www.agynamix.de/blog/simidude-1-5-0-released/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 20:27:10 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Newsletter]]></category>
		<category><![CDATA[Simidude]]></category>

		<guid isPermaLink="false">http://www.agynamix.de/?p=700</guid>
		<description><![CDATA[Hi everybody, this is a short notice to let you know I released version 1.5.0 of the Network Clipboard and Drag&#38;Drop utility Simidude. It took me a while to finish this version but I believe I did hunt down and kill some bugs and also introduced some features. The release notes for this version can [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Hi everybody,</p>
<p>this is a short notice to let you know I released version 1.5.0 of the Network Clipboard and Drag&amp;Drop utility Simidude.</p>
<p>It took me a while to finish this version but I believe I did hunt down and kill some bugs and also introduced some features.</p>
<p>The release notes for this version can be found <a href="http://www.agynamix.de/blog/simidude-150-release-notes/">here</a>.</p>
<p>You can <a href="http://www.agynamix.de/products/simidude/download/">download</a> or <a href="http://www.agynamix.de/products/simidude/order/">buy</a> Simidude <a href="http://www.agynamix.de/products/simidude/">here</a>.</p>
<p>Have a great day,</p>
<p>Torsten.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/simidude-1-5-0-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simidude 1.5.0 Release Notes</title>
		<link>http://www.agynamix.de/blog/simidude-150-release-notes/</link>
		<comments>http://www.agynamix.de/blog/simidude-150-release-notes/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 19:50:29 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Release Notes]]></category>

		<guid isPermaLink="false">http://www.agynamix.de/?p=694</guid>
		<description><![CDATA[Hurray, great news! I finally released version 1.5.0 of Simidude. This version fixed some important any annoying bugs and provides a few new features: Bug Fix: Circling Clipboard Items: There where circumstances when a clipboard item was sent back and forth between connected clients. Bug Fix: Wrong Sort Order of Clipboard Items: Sometimes clipboard items [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Hurray, great news!</p>
<p>I finally released version 1.5.0 of Simidude. This version fixed some important any annoying bugs and provides a few new features:</p>
<ul>
<li><strong>Bug Fix:</strong> Circling Clipboard Items: There where circumstances when a clipboard item was sent back and forth between connected clients.</li>
<li><strong>Bug Fix:</strong> Wrong Sort Order of Clipboard Items: Sometimes clipboard items where inserted at the right position in the item list.</li>
<li><strong>Bug Fix:</strong> Fixed Drag&amp;Drop on Mac: There where problems using Drag&amp;Drop on Mac systems.</li>
<li><strong>Bug Fix: </strong>Runs on Ubuntu 09.10: Using new libraries problems while using Simidude on new Linux/Ubuntu have been resolved.</li>
<li><strong>Bug Fix:</strong> Sometimes Simidude crashed right after the start if the computer&#8217;s clipboard held certain data.</li>
<li><strong>Feature</strong>: Preference Setting to manually overwrite a clients IP address: You can enter a specific IP address in the network preferences if you want to force Simidude to that address and not auto detect the most probable primary IP address.</li>
<li><strong>Feature</strong>: You can now select which Clipboard items are being monitored: You can now enable/disable the monitoring of Text/Image or File items. That way you can for instance disable the monitoring of images copied to the clipboard when you only care for Text / Files.</li>
<li><strong>Feature</strong>: Network Analysis Dialog: In the Help menu there is now a &#8220;Network Analysis&#8221; dialog that shows information about connected clients and a connection history of received data (only statistical data). The Network Analysis report is appended to the Bug Report that can be sent from inside Simidude and is a useful debugging aid in case of connection trouble.</li>
</ul>
<p>This version is recommended for all users.</p>
<p>As always if you have any feature requests please let me know- loud  and clear.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/simidude-150-release-notes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>AVG reports false positives for Simidude</title>
		<link>http://www.agynamix.de/blog/avg-reports-false-positives-for-simidude/</link>
		<comments>http://www.agynamix.de/blog/avg-reports-false-positives-for-simidude/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 12:04:57 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Simidude]]></category>

		<guid isPermaLink="false">http://www.agynamix.de/?p=685</guid>
		<description><![CDATA[During the last few days I got reports from two customers that said the virus scanner AVG reported Simidude as a trojan horse: As reported by the install4j people these issues should be resolved by now. You might need to update your AVG virus database if you were hit by this: http://forums.avg.com/ww-en/avg-free-forum?sec=thread&#38;act=show&#38;id=39669 Have a great [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>During the last few days I got reports from two customers that said the virus scanner AVG reported Simidude as a trojan horse:</p>
<p><img class="alignnone size-medium wp-image-686" title="Simidude reported a Trojan Horse by AVG" src="http://www.agynamix.de/wp-content/uploads/2009/11/simidude-trojan-avg-300x166.jpg" alt="Simidude reported a Trojan Horse by AVG" width="300" height="166" /></p>
<p>As reported by the install4j people these issues should be resolved by now. You might need to update your AVG virus database if you were hit by this:</p>
<p>http://forums.avg.com/ww-en/avg-free-forum?sec=thread&amp;act=show&amp;id=39669</p>
<p>Have a great day,</p>
<p>Torsten.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/avg-reports-false-positives-for-simidude/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BitsDuJour Sales Statistics</title>
		<link>http://www.agynamix.de/blog/bitsdujour-sales-statistics/</link>
		<comments>http://www.agynamix.de/blog/bitsdujour-sales-statistics/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 20:38:36 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Marketing]]></category>

		<guid isPermaLink="false">http://www.simidude.com/?p=385</guid>
		<description><![CDATA[Our last BitsDuJour day was on October 29 and went were well. That is, apart from the short server outage. Here&#8217;s their Simidude page with some nice review comments from the customers: http://www.bitsdujour.com/software/simidude/ This is the second time I have done this for Simidude, our cross platform network clipboard and file sharing tool. And this [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Our last BitsDuJour day was on October 29 and went were well. That is, apart from the short server outage.</p>
<p>Here&#8217;s their Simidude page with some nice review comments from the customers: <a href="http://www.bitsdujour.com/software/simidude/">http://www.bitsdujour.com/software/simidude/</a></p>
<p>This is the second time I have done this for Simidude, our cross platform network clipboard and file sharing tool. And this time as well as the last time I&#8217;m quiet satisfied with the results.</p>
<p>I thought breaking out some numbers about the sales would be interesting for those of you who think BitsDuJour or one of the alternative sites would be an option for increasing sales of their products.</p>
<p>On that day I sold about 64 licenses and refunded one. That is actually really great for my current situation. On normal month I sell about 2-5 licenses (which shows that I need to work on my marketing dramatically).</p>
<p><a href="http://www.agynamix.de/wp-content/uploads/2009/11/fastspring-springboard-by-country.jpg"><img class="alignnone size-medium wp-image-386" title="Sales Statistics by Country" src="http://www.agynamix.de/wp-content/uploads/2009/11/fastspring-springboard-by-country-300x250.jpg" alt="" /></a></p>
<p>The pie chart shows the distribution of buyers on countries. It clearly shows that Simidude&#8217;s market is largest in the US.</p>
<p>From the 64 buyers 30 used Paypal for payment, all other purchases were made with credit card.</p>
<p>For those who like numbers here are some access statistics to the BitsDuJour site:</p>
<ul>
<li>The Simidude page at BitsDuJour was hit 3474 times</li>
<li>Simidude was downloaded 154 times through BitsDuJour</li>
<li>The checkout process was started 111 times- and 64 time it was completed.</li>
</ul>
<p>Interestingly during my first BitsDuJour day the Simidude page was hit nearly exactly as often as this time. I sold 10 more licenses, a reason for this might be the server outage&#8230;</p>
<p>Now I hope the numbers help you to make an informed decision whether or not BitsDuJour can be a help for you.</p>
<p>Have a great day!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/bitsdujour-sales-statistics/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A New BitsDuJour Sale is on the Way!</title>
		<link>http://www.agynamix.de/blog/a-new-bitsdujour-sale-is-on-the-way-2/</link>
		<comments>http://www.agynamix.de/blog/a-new-bitsdujour-sale-is-on-the-way-2/#comments</comments>
		<pubDate>Sun, 25 Oct 2009 15:29:02 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Newsletter]]></category>

		<guid isPermaLink="false">http://www.simidude.com/?p=382</guid>
		<description><![CDATA[Our last BitsDuJour sale is a couple month back and it was quiet successful, so they invited me back for a new round. So here we go. This time&#8217;s BitsDuJour sale will be on October 29. If you tried Simidude and find it useful then this is your great chance to get Simidude for a [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Our last <a href="http://www.bitsdujour.com/software/simidude/">BitsDuJour</a> sale is a couple month back and it was quiet successful, so they invited me back for a new round.</p>
<p style="text-align: center;"><a href="http://www.agynamix.de/wp-content/uploads/2009/10/wasserfall.jpg"><img class="size-medium wp-image-383  aligncenter" title="Wasserfall" src="http://www.agynamix.de/wp-content/uploads/2009/10/wasserfall-189x300.jpg" alt="" width="189" height="300" /></a></p>
<p>So here we go. This time&#8217;s <a href="http://www.bitsdujour.com/software/simidude/">BitsDuJour</a> sale will be on October 29. If you tried Simidude and find it useful then this is your great chance to get Simidude for a mere $9,95.</p>
<p>If you didn&#8217;t yet try Simidude <a href="http://www.simidude.com/download/">download it now</a> so you can make up your mind until October, 29. Simidude comes with a free 30 day trial license, so there&#8217;s absolutely no excuse for not trying out <img src='http://www.agynamix.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>During the last sale I gathered quiet a couple of nice reviews and comments about Simidude- you can still read them on their page&#8230;</p>
<p>Oh, did I mention? Here&#8217;s the <a href="http://www.bitsdujour.com/software/simidude/">BitsDuJour link</a>: <a href="http://www.bitsdujour.com/software/simidude/">http://www.bitsdujour.com/software/simidude/</a></p>
<p>The current version of Simidude is 1.4.0 with 1.4.1 in the making. A license you buy now will be valid for all current and future releases of Simidude version 1.</p>
<p>Also one license of Simidude can be used on multiple computers as long as you use these computers as one Simidude group. So if you want to send clipboard contents and files to one or more computers in your house you only need ONE license.</p>
<p>I hope to hear from you on October, 29.</p>
<p>As always if you have any questions <a href="http://helpdesk.agynamix.de/index.php?pg=request">don&#8217;t hesitate to ask</a>&#8230;</p>
<p>Have a great day,</p>
<p>Torsten.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/a-new-bitsdujour-sale-is-on-the-way-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simidude 1.4.0 released</title>
		<link>http://www.agynamix.de/blog/simidude-140-released/</link>
		<comments>http://www.agynamix.de/blog/simidude-140-released/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 16:02:30 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Newsletter]]></category>
		<category><![CDATA[Simidude]]></category>

		<guid isPermaLink="false">http://www.simidude.com/?p=380</guid>
		<description><![CDATA[Just now I released version 1.4.0 of Simidude, the cross platform network clipboard and drag &#38; drop utility. I have added quite some features to it, for a complete list of new niceness please look here. The problems with the Windows 7 update installer are gone as well. Grab the latest release from our download site [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Just now I released version 1.4.0 of Simidude, the cross platform network clipboard and drag &amp; drop utility.</p>
<p>I have added quite some features to it, for a complete list of new niceness please look <a href="../blog/2009/simidude-140-release-notes/">here</a>.</p>
<p>The problems with the Windows 7 update installer are gone as well.</p>
<p>Grab the latest release from our <a href="http://www.simidude.com/download/">download site</a> and <a href="http://helpdesk.agynamix.de/index.php?pg=request">tell</a> me what you think!</p>
<p>Have a great day,</p>
<p>Torsten.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/simidude-140-released/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Simidude 1.4.0 Release Notes</title>
		<link>http://www.agynamix.de/blog/simidude-140-release-notes/</link>
		<comments>http://www.agynamix.de/blog/simidude-140-release-notes/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 15:48:50 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Release Notes]]></category>

		<guid isPermaLink="false">http://www.simidude.com/?p=376</guid>
		<description><![CDATA[These are the release notes for version 1.4.0 of the cross platform network clipboard Simidude. Version 1.4.0 adds quite a list of new features that will make your use of Simidude more effective and fun: Feature: Simidude on Windows (32-bit) and Linux now supports global hotkeys to bring the application to front or to activate [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>These are the release notes for version 1.4.0 of the cross platform network clipboard Simidude.</p>
<p>Version 1.4.0 adds quite a list of new features that will make your use of Simidude more effective and fun:</p>
<ul>
<li><strong>Feature</strong>: Simidude on Windows (32-bit) and Linux now supports global hotkeys to bring the application to front or to activate the latest Simidude entry into the clipboard. On Windows (32-bit) it does not just activate the latest entry but will actually paste the entry into the active application.</li>
<li><strong>Feature:</strong> You can now enable an option to show a balloon tooltip near the tray icon whenever a new entry arrives in Simidude.</li>
<li><strong>Feature:</strong> You can now enable an option to automatically activate a new arriving Simidude entry. Please note that the entry is only activated when it is inserted top of the list of entries.</li>
<li><strong>Feature:</strong> Another new option is to let Simidude automatically download remote files or directories.</li>
<li><strong>Feature:</strong> The user manual is now included with each Simidude distribution.</li>
<li><strong>Feature:</strong> When an item arrives in Simidude for a second time, the item is moved from it&#8217;s current position in the list to the top. That makes it much easier to refind entries if the list is long.</li>
</ul>
<p>This version is recommended for all users.</p>
<p>As always if you have any feature requests please let me know- loud and clear.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/simidude-140-release-notes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Run 32 bit SWT apps from Eclipse in Snow Leopard</title>
		<link>http://www.agynamix.de/blog/run-32bit-swt-apps-from-eclipse-in-snow-leopard/</link>
		<comments>http://www.agynamix.de/blog/run-32bit-swt-apps-from-eclipse-in-snow-leopard/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 14:43:44 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[IT]]></category>

		<guid isPermaLink="false">http://www.simidude.com/?p=373</guid>
		<description><![CDATA[After I received an update for my UMTS modem driver to finally work with Snow Leopard I again decided to update my MacBook Pro to Snowy. After getting that system up to speed again I continued working on Simidude- I&#8217;m about to integrate global hotkey support- at least on Windows and Linux for now. Firing [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>After I received an update for my UMTS modem driver to finally work with Snow Leopard I again decided to update my MacBook Pro to Snowy.</p>
<p>After getting that system up to speed again I continued working on Simidude- I&#8217;m about to integrate global hotkey support- at least on Windows and Linux for now.</p>
<p>Firing up Eclipse, editing a bit and launching Simidude brought me this error:</p>
<pre>java.lang.UnsatisfiedLinkError: Cannot load 32-bit SWT libraries on 64-bit JVM
    at org.eclipse.swt.internal.Library.loadLibrary(Library.java:182)
    at org.eclipse.swt.internal.Library.loadLibrary(Library.java:159)</pre>
<p>Turns out that Snow Leopard tries to start Java applications by default with the 64 bit virtual machine which does not work with Simidude because I bundle it with the 32 bit libraries.</p>
<p>Interesting enough when Simidude is launched from the Finder everything works fine&#8230;</p>
<p>Now, drum roll please, the solution to this problem is pretty simple:</p>
<p>Open up the Java JRE definition in Eclipse-&gt;Settings-&gt;Java-&gt;Installed JRE edit your standard Java VM and add the following to the &#8220;Default VM Arguments&#8221;: <em>-d32</em></p>
<p style="text-align: center;"><a href="http://www.agynamix.de/wp-content/uploads/2009/09/edit_jre_32bit.jpg"><img class="size-full wp-image-374 aligncenter" title="Set the VM to 32 bit" src="http://v2.agynamix.de/wp-content/uploads/2009/09/edit_jre_32bit.jpg" alt="" width="500" height="494" /></a></p>
<p style="text-align: left;">Happy Snow Leopard-ing&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/run-32bit-swt-apps-from-eclipse-in-snow-leopard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Simidude User Manual Published</title>
		<link>http://www.agynamix.de/blog/new-simidude-user-manual-published/</link>
		<comments>http://www.agynamix.de/blog/new-simidude-user-manual-published/#comments</comments>
		<pubDate>Sun, 16 Aug 2009 15:21:28 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Newsletter]]></category>
		<category><![CDATA[Simidude]]></category>

		<guid isPermaLink="false">http://www.simidude.com/?p=365</guid>
		<description><![CDATA[I admit, the Simidude user manual was very sparse and lacking much information. I have worked for the last few days to write up a new user manual that will hopefully be more informative for your and will answer more of your questions. Special thanks to very helpful user P. Jansen who provided me with [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I admit, the Simidude user manual was very sparse and lacking much information.</p>
<p>I have worked for the last few days to write up a new user manual that will hopefully be more informative for your and will answer more of your questions.</p>
<p>Special thanks to very helpful user P. Jansen who provided me with a great starting point for this documentation.</p>
<p>The manual is available as PDF from <a href="http://helpdesk.agynamix.de/index.php?pg=kb.page&amp;id=6" target="_blank">here</a>. I will also include it in future releases of Simidude.</p>
<p>Please let me know any things that I have missed in the manual, also if you&#8217;d like to see the documentation in any other format than PDF.</p>
<p>Download the manual <a href="http://helpdesk.agynamix.de/index.php?pg=kb.page&amp;id=6">here</a>.</p>
<p>Have a great day,</p>
<p>Torsten.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/new-simidude-user-manual-published/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Tip: How to find the location of a class being executed</title>
		<link>http://www.agynamix.de/blog/find-location-of-a-class/</link>
		<comments>http://www.agynamix.de/blog/find-location-of-a-class/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 13:51:25 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[english]]></category>

		<guid isPermaLink="false">http://blog.agynamix.de/?p=223</guid>
		<description><![CDATA[Today I wanted to find the location of a class file to make sure the class is really called from a specific jar file (old project with historically grown piles of archaeologically valuable code). Turns out this is pretty easy. For instance within the class you log the result of the following statement: URI uri [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Today I wanted to find the location of a class file to make sure the class is really called from a specific jar file (old project with historically grown piles of archaeologically valuable code).</p>
<p>Turns out this is pretty easy. For instance within the class you log the result of the following statement:</p>
<pre>URI uri = this.getClass().getProtectionDomain().getCodeSource().getLocation().toURI()</pre>
<p>This will give you the exact place from witch the class was loaded.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/find-location-of-a-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simidude 1.3.3 released</title>
		<link>http://www.agynamix.de/blog/simidude-133-released/</link>
		<comments>http://www.agynamix.de/blog/simidude-133-released/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 18:01:40 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Newsletter]]></category>

		<guid isPermaLink="false">http://www.simidude.com/?p=363</guid>
		<description><![CDATA[A few days ago I release version 1.3.3 of Simidude, the cross platform network clipboard and drag &#38; drop utility. And now, after I&#8217;m sure its working this time I can even write about it This one is a maintenance release that doesn&#8217;t add great new features but it fixes some bugs, renews used libraries [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>A few days ago I release version 1.3.3 of Simidude, the cross platform network clipboard and drag &amp; drop utility.</p>
<p>And now, after I&#8217;m sure its <a href="http://www.simidude.com/blog/2009/simidude-132-withdrawn-again/">working this time</a> I can even write about it <img src='http://www.agynamix.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>This one is a maintenance release that doesn&#8217;t add great new features but it fixes some bugs, renews used libraries and makes it all together more stable. A list of new features and bug fixes is available <a href="http://www.simidude.com/blog/2009/simidude-13-release-notes/">here</a>.</p>
<p>However I did realize that the update installer for Windows 7 is not working. So when the update checker of Simidude notifies you of an update you can download it but the update installer will then fail (only Windows 7). You can then quit Simidude and start the downloaded installer by hand. I&#8217;m sure we&#8217;ll figure that one out as well&#8230;</p>
<p>Anyway, go grab the latest release from our <a href="http://www.simidude.com/download/">download site</a> and have fun!</p>
<p>Have a great day,</p>
<p>Torsten.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/simidude-133-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simidude 1.3.2 withdrawn &#8211; again</title>
		<link>http://www.agynamix.de/blog/simidude-132-withdrawn-again/</link>
		<comments>http://www.agynamix.de/blog/simidude-132-withdrawn-again/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 14:35:44 +0000</pubDate>
		<dc:creator>tuhlmann</dc:creator>
				<category><![CDATA[IT]]></category>

		<guid isPermaLink="false">http://www.simidude.com/?p=358</guid>
		<description><![CDATA[I&#8217;m very very sorry for this trouble but today I had to withdraw my Simidude 1.3.2 release again. There is a major installer problem on the Mac side. I have reports from users that the Windows version works great, so no problem here. However I added a step to the installer to remove files from [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I&#8217;m very very sorry for this trouble but today I had to withdraw my Simidude 1.3.2 release again.</p>
<p>There is a major installer problem on the Mac side. I have reports from users that the Windows version works great, so no problem here.</p>
<p>However I added a step to the installer to remove files from previous installations. I told the installer to delete the contents of the installation dir. On Windows this would be &#8220;C:\Program Files\Simidude&#8221; for instance. On Mac however this is &#8220;/Applications&#8221; because an application directory is treated as some kind of special file. Alas my installer tried to remove everything from &#8220;/Applications&#8221; which I only recognized today when I tried to read my mail and my Mail.app program was gone.</p>
<p>Now thanks to Time Machine all the files get rolled back in place, but I sincerely hope no one of you guys was installing 1.3.2 on a Mac!</p>
<p>After properly testing the installer changes on Mac Linux and Windows I&#8217;m gonna release a new version- again.</p>
<p>Torsten.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agynamix.de/blog/simidude-132-withdrawn-again/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

