<?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>Fooling Around &#187; shell</title>
	<atom:link href="http://alax.info/blog/tag/shell/feed" rel="self" type="application/rss+xml" />
	<link>http://alax.info/blog</link>
	<description>// Software Production Line</description>
	<lastBuildDate>Wed, 02 May 2012 15:42:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Windows Shell integration and Windows Live Messenger: things that should have never been done</title>
		<link>http://alax.info/blog/958</link>
		<comments>http://alax.info/blog/958#comments</comments>
		<pubDate>Wed, 24 Jun 2009 12:52:13 +0000</pubDate>
		<dc:creator>Roman</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[folder]]></category>
		<category><![CDATA[live]]></category>
		<category><![CDATA[messenger]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://alax.info/blog/?p=958</guid>
		<description><![CDATA[<a href="http://alax.info/blog/958" title="Windows Shell integration and Windows Live Messenger: things that should have never been done"></a>If you drag a file over Windows Live Messenger&#8216;s My Sharing Folders shell name space item, it would immediately interrupt dragging with an error message box, even if you never planned to drop onto this folder: This should definitely be &#8230;<p class="read-more"><a href="http://alax.info/blog/958">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://alax.info/blog/958" title="Windows Shell integration and Windows Live Messenger: things that should have never been done"></a><p>If you drag a file over <a href="http://download.live.com/messenger">Windows Live Messenger</a>&#8216;s <em>My Sharing Folders</em> shell name space item, it would immediately interrupt dragging with an error message box, even if you never planned to drop onto this folder:</p>
<p><img class="alignnone size-full wp-image-957" title="Windows Live Messenger" src="http://alax.info/blog/wp-content/uploads/2009/06/24-image001.png" alt="Windows Live Messenger" width="698" height="388" /></p>
<p>This should definitely be rather implemented a different way. If you ever tried to drag something using slow PC touchpad, you probably have an idea of how annoying such an interruption could be.</p>
<p>Windows Live Messenger was pre-installed. To disable shared folders feature, I wanted to find a proper setting in options, but it did not appear to be easy enough: Help button, Show the menu bar, Tools, Options, Sharing Folders on the left, oops! it was not helpful.</p>
<p>Going another way of finding DLL that hosts the shell extension revealed file named: <em>C:\Program Files\Windows Live\Messenger\fsshext.8.5.1302.1018.dll</em>. Once unregistered, the folder went away from the shell (process restart needed, typically logoff/logon):</p>
<pre>C:\&gt;regsvr32 /u "C:\Program Files\Windows Live\Messenger\fsshext.8.5.1302.1018.dll"</pre>
]]></content:encoded>
			<wfw:commentRss>http://alax.info/blog/958/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yet another time about FFDShow</title>
		<link>http://alax.info/blog/841</link>
		<comments>http://alax.info/blog/841#comments</comments>
		<pubDate>Tue, 17 Feb 2009 22:12:23 +0000</pubDate>
		<dc:creator>Roman</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[AVI]]></category>
		<category><![CDATA[crap]]></category>
		<category><![CDATA[ffdshow]]></category>
		<category><![CDATA[resource]]></category>
		<category><![CDATA[rle]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://alax.info/blog/?p=841</guid>
		<description><![CDATA[<a href="http://alax.info/blog/841" title="Yet another time about FFDShow"></a>While new NTFS Links propery page is looking for contained junction points, it shows an animated picture to indicate opertation in progress. The picture is a stock resource and is taken from shell32.dll resource type &#8220;AVI&#8221; name 150. It is &#8230;<p class="read-more"><a href="http://alax.info/blog/841">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://alax.info/blog/841" title="Yet another time about FFDShow"></a><p>While new <a href="http://alax.info/blog/ntfslinks">NTFS Links</a> propery page is looking for contained junction points, it shows an animated picture to indicate opertation in progress. The picture is a stock resource and is taken from <em>shell32.dll</em> resource type &#8220;AVI&#8221; name 150. It is an <a href="http://en.wikipedia.org/wiki/Audio_Video_Interleave">Audio Video Interleave (AVI)</a> file embedded into binary resources as is.</p>
<p><a href="http://alax.info/blog/wp-content/uploads/2009/02/17-image011.png"><img class="alignnone size-medium wp-image-842" title="Alax.Info NTFS Links Junction Points Property Page in Operation" src="http://alax.info/blog/wp-content/uploads/2009/02/17-image011-219x300.png" alt="Alax.Info NTFS Links Junction Points Property Page in Operation" width="219" height="300" /></a></p>
<p>What is however interesting is that being saved as a file and double-clicked, it appeared to be crashing the player process. What might go wrong with a stock resource, is it <a href="http://sourceforge.net/projects/ffdshow">FFDShow</a> again? This was the first guess and yes, it was FFDShow again. This is a &#8220;video only&#8221; file with video encoded with MS-RLE compression, FOURCC &#8216;RLE &#8216;. Microsoft provides a <a href="http://msdn.microsoft.com/en-us/library/ms713467(VS.85).aspx">VCM</a> codec for the format through <em>msrle32.dll</em>.</p>
<p>However, as already discovered, <a href="http://sourceforge.net/projects/ffdshow">FFDShow</a> register itself under extremely high merit and for this reason is preferred as a video decoder and attempts to handle the decompression itself. But it fails, and miserably enough to crash the hosting process.</p>
<p><a href="http://alax.info/blog/wp-content/uploads/2009/02/17-image012.png"><img class="alignnone size-medium wp-image-843" title="FFDShow Crash" src="http://alax.info/blog/wp-content/uploads/2009/02/17-image012-300x179.png" alt="FFDShow Crash" width="300" height="179" /></a></p>
<p>The registration under unfairly high merit defeats the purpose of DirectShow&#8217;s powerful <a href="http://msdn.microsoft.com/en-us/library/dd390342(VS.85).aspx">Intelligent Connect</a> approach. &#8220;Why do you need a video decoder? You have <a href="http://sourceforge.net/projects/ffdshow">FFDShow</a> Video Decoder, forget about the others. Oops, sorry, I don&#8217;t like your file.&#8221;</p>
<p>Is there any way to stop the villain? Of course, there is.</p>
<p><span id="more-841"></span>To start, I tried to disable the decoder through <a href="http://sourceforge.net/projects/ffdshow">FFDShow</a> Video Decoder native interface and give it a last chance. Video decoder offers decoding properties to choose from, and it looked as if it can stop serving as decoder for the mentioned video format.</p>
<p><a href="http://alax.info/blog/wp-content/uploads/2009/02/17-image013.png"><img class="alignnone size-medium wp-image-844" title="FFDShow Video Decoder Properties" src="http://alax.info/blog/wp-content/uploads/2009/02/17-image013-300x251.png" alt="FFDShow Video Decoder Properties" width="300" height="251" /></a></p>
<p>Still with the disabled settings, it kept unsuccessful attempts to decode and process crashes. So another workaround, and it is in fact a proper one, which should be done from the start (and I would also prefer that it was done by FFDShow itself), is to lower decoder&#8217;s merit to a level at which it would honor specialized decoders so that <a href="http://msdn.microsoft.com/en-us/library/dd390342(VS.85).aspx">Intelligent Connect</a> could fall back to <a href="http://sourceforge.net/projects/ffdshow">FFDShow</a> in case there is no bettter alternative. <a href="http://msdn.microsoft.com/en-us/library/dd388793(VS.85).aspx">MERIT_UNLIKELY</a> seems to be a good one for this codec:</p>
<p><a href="http://alax.info/blog/wp-content/uploads/2009/02/17-image014.png"><img class="alignnone size-medium wp-image-845" title="Updated FFDShow Video Decoder Merit" src="http://alax.info/blog/wp-content/uploads/2009/02/17-image014-300x188.png" alt="Updated FFDShow Video Decoder Merit" width="300" height="188" /></a></p>
<p>This fixes the issue by letting <a href="http://msdn.microsoft.com/en-us/library/dd375454(VS.85).aspx">DirectShow</a> choose stock video decoder for MS RLE video encoding.</p>
]]></content:encoded>
			<wfw:commentRss>http://alax.info/blog/841/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>NTFS Links: List junction points under certain directory</title>
		<link>http://alax.info/blog/833</link>
		<comments>http://alax.info/blog/833#comments</comments>
		<pubDate>Mon, 16 Feb 2009 20:18:45 +0000</pubDate>
		<dc:creator>Roman</dc:creator>
				<category><![CDATA[NTFS Links]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[junction]]></category>
		<category><![CDATA[ntfs]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://alax.info/blog/?p=833</guid>
		<description><![CDATA[<a href="http://alax.info/blog/833" title="NTFS Links: List junction points under certain directory"></a>While NTFS junction points are powerful to relink files without duplicating data and/or moving between disks, they are treated as regular directories by most of software and it may unexpectedly result in conversion of a junction point into a regular &#8230;<p class="read-more"><a href="http://alax.info/blog/833">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://alax.info/blog/833" title="NTFS Links: List junction points under certain directory"></a><p>While NTFS junction points are powerful to relink files without duplicating data and/or moving between disks, they are treated as regular directories by most of software and it may unexpectedly result in conversion of a junction point into a regular directory with implied duplication of data and disk space waste.</p>
<p>This is a quick fix for the NTFS Links shell extension that allows to quickly list created junction points under certain directory, and delete if necessary. The update adds a property page Junction Points to NTFS non-UNC directory properties:</p>
<p><a href="http://alax.info/blog/wp-content/uploads/2009/02/16-image010.png"><img class="alignnone size-medium wp-image-834" title="Directory Junction Points Property Page" src="http://alax.info/blog/wp-content/uploads/2009/02/16-image010-252x300.png" alt="Directory Junction Points Property Page" width="252" height="300" /></a></p>
<p>This is a quick update, so be aware (also my TO DO list):</p>
<ul>
<li>no Russian localization, sorry</li>
<li>context menu should also be given another item Open Containing Directory</li>
<li>does not work for root directories</li>
<li>list items should be OLE draggable</li>
<li>there should be a junction point validation feature that checks availability of substitution path and indicates result by an icon</li>
<li>I should remove the mess between &#8220;soft link&#8221; and&#8221;junction point&#8221; in favor of the latter</li>
</ul>
<p>Release information:</p>
<ul>
<li>Updated Version: 1.1.3</li>
<li>Download Link: <a href="http://alax.info/blog-dist/AlaxInfoNtfsLinksSetup.msi">AlaxInfoNtfsLinksSetup.msi</a> (275K)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://alax.info/blog/833/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Two mouse clicks 7-Zip archives for a developer</title>
		<link>http://alax.info/blog/804</link>
		<comments>http://alax.info/blog/804#comments</comments>
		<pubDate>Tue, 10 Feb 2009 17:20:18 +0000</pubDate>
		<dc:creator>Roman</dc:creator>
				<category><![CDATA[ATL]]></category>
		<category><![CDATA[Seriously]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Utilities]]></category>
		<category><![CDATA[7-zip]]></category>
		<category><![CDATA[7z]]></category>
		<category><![CDATA[archive]]></category>
		<category><![CDATA[compression]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[menu]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[version]]></category>
		<category><![CDATA[zip]]></category>

		<guid isPermaLink="false">http://alax.info/blog/?p=804</guid>
		<description><![CDATA[<a href="http://alax.info/blog/804" title="Two mouse clicks 7-Zip archives for a developer"></a>I have been frequently troubleshooting remote systems and otherwise provide various temporary binary files to remote production sites with fixes or beta versions of new features etc. The software  is such that that customer sites have specific combination of hardware, &#8230;<p class="read-more"><a href="http://alax.info/blog/804">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://alax.info/blog/804" title="Two mouse clicks 7-Zip archives for a developer"></a><p>I have been frequently troubleshooting remote systems and otherwise provide various temporary binary files to remote production sites with fixes or beta versions of new features etc. The software  is such that that customer sites have specific combination of hardware, configuration, hardware on LAN, software conflicts and there is a number of things that are very much easier troubleshooted directly on the production server, through remote connection. Typically I am using <a href="http://tightvnc.com">TightVNC</a> and <a href="http://www.microsoft.com/windowsXp/using/mobility/getstarted/Remoteintro.mspx">Windows Remote Desktop</a>, sometimes <a href="http://logmein.com/">LogMeIn</a>, <a href="http://radmin.com">RAdmin</a> and more rare alternatives (among such I would like to specially note <a href="http://teamviewer.com/">TeamViewer</a>).</p>
<p>Obviously except for released versions of binaries (which also exist in several versions from different configuration builds), there appear a number of intermediate files, DLLs and EXEs which are addressed to specific problems and fixes. The problem with multitude of different versions of the same DLL is widely known as <a href="http://en.wikipedia.org/wiki/DLL_hell">DLL hell</a>.</p>
<p>It is not actually a big hell since we are trying to follow simple rules:</p>
<ul>
<li>DLLs should be backward compatible, or if the compatibility is ever broken, DLL version mismatch scenario should be handled as gracefully as possible</li>
<li>DLLs and other binaries should have <a href="http://msdn.microsoft.com/en-us/library/aa381058.aspx">VERSIONINFO</a> resource</li>
<li>version information file version&#8217;s least significant number is incremented with each and every build; in particular this allows to keep privately program databases (PDB) and immediately find the corresponding database by file version</li>
<li>newer binaries should always have greated file version than older ones</li>
</ul>
<p>The problem however has been that the typical process of building a temporary build of a library and uploading it to remote location required too many clicks. Considering a number of times I have been through these operations, an automation and a productivity tool should have appeared long ago. Finally this is solved by a shell extension that compresses binaries into a transferrable archive in two clicks:</p>
<p><img class="alignnone size-full wp-image-805" title="Context Menu Shell Extension" src="http://alax.info/blog/wp-content/uploads/2009/02/10-image001.png" alt="Context Menu Shell Extension" width="575" height="506" /></p>
<p>Compression formats of 7-Zip (.7z), 7-ZIP SFX (.exe) and ZIP (.zip) are at user&#8217;s choice.</p>
<p><span id="more-804"></span></p>
<p>Because of great number of versions it is very useful to have file version as a part of file name (actual binary name won&#8217;t have the version because typically DLL name does not change through versions and creating copies such as for example using hard links is possible but not quite convenient) in order to be able to locate a file and/or version of interest using file search.</p>
<p>The shell extension locates an installed copy of <a href="http://7-zip.org/">7-Zip</a> and uses its command line interface to create archives.</p>
<p>If a binary with <a href="http://msdn.microsoft.com/en-us/library/aa381058.aspx">VERSIONINFO</a> resource is found among selected files (undefined behavior is multiple binaries selected), its name and version is used for archive name. If there is also a <a href="http://msdn.microsoft.com/en-us/library/yd4f8bd1.aspx">program database (.pdb)</a> file selected, archive name will receive and additional suffix &#8220;-pdb&#8221;.</p>
<p>A partial Visual C++ .NET 2008 source code is <a href="http://code.assembla.com/roatl-utilities/subversion/nodes/trunk/Extended7zShell">available from SVN</a>, release binary included [<a href="http://code.assembla.com/roatl-utilities/subversion/nodes/trunk/Extended7zShell/Release/Win32/Extended7zShell.dll?format=raw">Win32</a>, <a href="http://code.assembla.com/roatl-utilities/subversion/nodes/trunk/Extended7zShell/Release/x64/Extended7zShell.dll?format=raw">x64</a>].</p>
<p><a href="http://7-zip.org/"><img class="alignnone" title="7-Zip" src="http://7-zip.org/logos/7z_am.gif" alt="" width="88" height="31" /> </a></p>
]]></content:encoded>
			<wfw:commentRss>http://alax.info/blog/804/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

