<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Martin Zugec blog : Utilities</title><link>http://msmvps.com/blogs/martinzugec/archive/tags/Utilities/default.aspx</link><description>Tags: Utilities</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Lnk, shortcuts - real disaster??</title><link>http://msmvps.com/blogs/martinzugec/archive/2008/05/29/lnk-shortcuts-real-disaster.aspx</link><pubDate>Thu, 29 May 2008 22:20:57 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1628947</guid><dc:creator>martin</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/rsscomments.aspx?PostID=1628947</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/commentapi.aspx?PostID=1628947</wfw:comment><comments>http://msmvps.com/blogs/martinzugec/archive/2008/05/29/lnk-shortcuts-real-disaster.aspx#comments</comments><description>&lt;p&gt;Maybe you noticed that one of my projects I would like to finish in summer is also offline shortcuts editor - and you probably think &amp;quot;why some editor when I can build shortcuts using Explorer?&amp;quot;... &lt;p&gt;Think twice - it&amp;#39;s not as easy as it looks like and you will be maybe surprised how many gotchas are there. &lt;p&gt;Problem with .lnk files is that they are WYSINWYG (What You See Is NOT What You Get). Windows is sometimes too &amp;quot;intelligent&amp;quot; - and it can be very, very annoying. &lt;p&gt; My blog is primarily focused on scripting, deployment and SBC - so I expect that my audience have also some experiences with this. And most people tried to create some shortcut and copy it somewhere else (you create shortcut to some drive letter on your PC and then copy it to desktop of all users for example). Problem is that together with shortcut you provide more information that you know - you provide also last successful resolution of that shortcut and you won&amp;#39;t see this information anywhere in properties of such shortcut. &lt;p&gt; Let me show you example. You map home drives of your users to H: drive. You want to have shortcut to H:\MyDocs on your desktop. So if you create shortcut to H:\MyDocs, then you just need to distribute it to all your workstations and its done. You open properties of this shortcut and you see that it points to H:\MyDocs, so it should work everywhere, right? &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;WRONG - don&amp;#39;t forget, Windows can be sometimes unpredictable ;) If you open properties of your .lnk file, you can see that it is (still) pointing to H:\MyDocs - however .lnk file also contains information that H:\MyDocs is in fact \\Servers\Administrator$\MyDocs and it will automatically open this folder even from different PC! Quite nasty, right?&lt;/p&gt; &lt;p&gt;And thats not all - try to remove that drive letter and open shortcut - because it remembers that location, it will automatically map H: to \\Servers\Administrator$\MyDocs&lt;/p&gt; &lt;p&gt;If you will try to map something else (\\Servers\Projects) to H: drive, Windows will surprise again - not only it will map that shortcut to different drive (X:), but it will also modify your shortcut so it is automatically changed from H:\MyDocs to X:\MyDocs... Which means that if you have 50 shortcuts pointing to H: drive, 1 accidental click can corrupt that shortcut for you.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;You can find many (well, not tons of, but still few of them exists) offline shortcuts editors, however most of them covers only situation I described above (and not of all them covers this). There are some bugs that are (as far as I know) not solved by any existing product - for example if you use variables to define your folders (for example %Programs% for D:\Programs), you WON&amp;#39;T be able to create such shortcut if variable is not defined. When you try to create it, C:\ prefix is automatically appended (so %Programs% is in fact pointing to C:\D:\Programs, which is invalid value). &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Well, this was just quick overview why I want to have offline editor where all such bugs will be fixed (btw I already have first version of code and it works correctly there, so it must be something in Explorer itself)... There are tons of other bugs&amp;nbsp; - I will try to spend some time testing different results and share results with you. I am now very sorry Microsoft didn&amp;#39;t implement something like &lt;a href="http://www.fileinfo.net/extension/xlnk" target="_blank"&gt;XLNK&lt;/a&gt; in Windows Vista :(&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1628947" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Scripting/default.aspx">Scripting</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Development/default.aspx">Development</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Projects/default.aspx">Projects</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Utilities/default.aspx">Utilities</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Tips_2600_amp_3B00_Tricks/default.aspx">Tips&amp;amp;Tricks</category></item><item><title>SystemSherlockGUI - one package that rules them all ;)</title><link>http://msmvps.com/blogs/martinzugec/archive/2008/05/26/systemsherlockgui-one-package-that-rules-them-all.aspx</link><pubDate>Mon, 26 May 2008 20:42:13 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1627630</guid><dc:creator>martin</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/rsscomments.aspx?PostID=1627630</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/commentapi.aspx?PostID=1627630</wfw:comment><comments>http://msmvps.com/blogs/martinzugec/archive/2008/05/26/systemsherlockgui-one-package-that-rules-them-all.aspx#comments</comments><description>&lt;p&gt;Good news everyone - I just received email from Roger (a.k.a. Kephyr) - he is author of brilliant SystemSherlock. He allowed me to include SystemSherlock in one package with my GUI - so now you can download&amp;nbsp; one package with both GUI and command line interface :)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;To remind you, SystemSherlock is snapshoting utility (like Regshot), that can track changes on your filesystem or registry... &lt;/p&gt; &lt;p&gt;Snapshoting is sometimes (often) better than using ProcMon\RegMon\FileMon - you only see real changes, no reads etc... So I prefer snapshoting when I for example want to find where in registry are some changes hapenning.&lt;/p&gt; &lt;p&gt;Compared to RegShot, SystemSherlock is I think much better - you can compare unlimited dumps (not only 1st &amp;amp; 2nd snapshot) and I like GUI more ;)&lt;/p&gt; &lt;p&gt;Download and enjoy :) &lt;/p&gt; &lt;p&gt;&lt;iframe style="border-right:#dde5e9 1px solid;padding-right:0px;padding-left:0px;border-top:#dde5e9 1px solid;padding-bottom:0px;margin:3px;border-left:#dde5e9 1px solid;width:240px;padding-top:0px;border-bottom:#dde5e9 1px solid;height:66px;background-color:#ffffff;" src="http://cid-6f6355ee6be5160e.skydrive.live.com/embedrowdetail.aspx/MyProjects/SystemSherlockGUI.zip" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt; &lt;p&gt;P.S.: If you have any feature requests or bugs to report, feel free to contact me, I would like to keep SystemSherlock alive&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1627630" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Scripting/default.aspx">Scripting</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Development/default.aspx">Development</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Utilities/default.aspx">Utilities</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Tips_2600_amp_3B00_Tricks/default.aspx">Tips&amp;amp;Tricks</category></item><item><title>Elevator - command line</title><link>http://msmvps.com/blogs/martinzugec/archive/2008/05/19/elevator-command-line.aspx</link><pubDate>Mon, 19 May 2008 15:15:39 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1624362</guid><dc:creator>martin</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/rsscomments.aspx?PostID=1624362</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/commentapi.aspx?PostID=1624362</wfw:comment><comments>http://msmvps.com/blogs/martinzugec/archive/2008/05/19/elevator-command-line.aspx#comments</comments><description>&lt;p&gt;If you tried &lt;a href="http://msmvps.com/blogs/martinzugec/archive/2008/05/16/ignore-uac-for-specific-programs.aspx" target="_blank"&gt;elevator&lt;/a&gt;, you probably know that it is running thought context menu:&lt;/p&gt; &lt;p&gt;&lt;a href="http://msmvps.com/blogs/martinzugec/WindowsLiveWriter/Elevatorcommandline_F186/image_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" border="0" alt="image" src="http://msmvps.com/blogs/martinzugec/WindowsLiveWriter/Elevatorcommandline_F186/image_thumb.png" width="244" height="168" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;It is assigned only to exe files (if it is needed, I can extend it)... But sometimes you may want to change shortcut to &lt;strong&gt;always &lt;/strong&gt;run specific action using elevator.&lt;/p&gt; &lt;p&gt;In fact it is pretty easy - just run ElevatorRunner.exe with filename and parameters and you are all set :)&lt;/p&gt; &lt;p&gt;First parameter is executable you want to run and then any command line arguments you want to include. &lt;/p&gt; &lt;p&gt;For example if you want to elevate MMC.exe, simply runs &lt;em&gt;ElevatorRunner MMC.exe&lt;/em&gt; and thats it. &lt;/p&gt; &lt;p&gt;&lt;br /&gt;To also show example with command line parameters, this is command line I use to run Joost:&lt;br /&gt;&lt;em&gt;C:\Data\SkipUAC\ElevatorRunner.exe &amp;quot;C:\Program Files (x86)\Joost\xulrunner\tvprunner.exe&amp;quot; &amp;quot;C:\Program Files (x86)\Joost\application.ini&amp;quot;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;In following screenshot you can see few examples:&lt;/p&gt; &lt;p&gt;&lt;a href="http://msmvps.com/blogs/martinzugec/WindowsLiveWriter/Elevatorcommandline_F186/image_6.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" border="0" alt="image" src="http://msmvps.com/blogs/martinzugec/WindowsLiveWriter/Elevatorcommandline_F186/image_thumb_2.png" width="244" height="125" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;It is also pretty easy to modify shortcuts to use Elevator:&lt;/p&gt; &lt;p&gt;&lt;a href="http://msmvps.com/blogs/martinzugec/WindowsLiveWriter/Elevatorcommandline_F186/image_8.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" border="0" alt="image" src="http://msmvps.com/blogs/martinzugec/WindowsLiveWriter/Elevatorcommandline_F186/image_thumb_3.png" width="174" height="244" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Martin&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1624362" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Security/default.aspx">Security</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Development/default.aspx">Development</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Utilities/default.aspx">Utilities</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Tips_2600_amp_3B00_Tricks/default.aspx">Tips&amp;amp;Tricks</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Vista/default.aspx">Vista</category></item><item><title>SystemSherlock - snapshot using GUI or CMD</title><link>http://msmvps.com/blogs/martinzugec/archive/2008/05/17/systemsherlock-snapshot-using-gui-or-cmd.aspx</link><pubDate>Sat, 17 May 2008 21:32:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1623856</guid><dc:creator>martin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/rsscomments.aspx?PostID=1623856</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/commentapi.aspx?PostID=1623856</wfw:comment><comments>http://msmvps.com/blogs/martinzugec/archive/2008/05/17/systemsherlock-snapshot-using-gui-or-cmd.aspx#comments</comments><description>&lt;p&gt;Recently I wrote about &lt;a href="http://msmvps.com/blogs/martinzugec/archive/2008/05/14/make-snapshots-of-filesystem-and-registry-using-command-line.aspx" target="_blank"&gt;SystemSherlock Lite&lt;/a&gt; - really nice snapshoting tool that supports command line... I also posted &lt;a href="http://msmvps.com/blogs/martinzugec/archive/2008/05/15/utility-to-display-logs-from-systemsherlock-lite.aspx" target="_blank"&gt;small utility&lt;/a&gt; for parsing log files.&lt;/p&gt;
&lt;p&gt;After that I started to heavily use SystemSherlock - and I must say that it is really really great utility. Problem is that usually you want to have command line AND GUI interface - and SystemSherlock is cmd only :(&lt;/p&gt;
&lt;p&gt;So I decided to create wrapper around it - and for me combination of GUI and SystemSherlock is much better snapshoting tool than RegShot or InstallRite... &lt;/p&gt;
&lt;p&gt;SystemSherlock GUI consists of 3 different tabs - one for creating snapshots, second for comparing snapshots and third for displaying log files in friendly structure.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Create snapshot&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Below is GUI used for taking snapshots:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/blogs/martinzugec/WindowsLiveWriter/SystemSherlockGUImyfavoritealternativeto_C6B6/image_2.png"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" border="0" alt="image" src="http://msmvps.com/blogs/martinzugec/WindowsLiveWriter/SystemSherlockGUImyfavoritealternativeto_C6B6/image_thumb.png" width="244" height="177" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;It allows you to create snapshot configuration, specify output file and also to include exclusion list if you want to ignore particular entries. This is configured snapshot for detecting HKCU and C:\Temp folder:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://msmvps.com/blogs/martinzugec/WindowsLiveWriter/SystemSherlockGUImyfavoritealternativeto_C6B6/image_4.png"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" border="0" alt="image" src="http://msmvps.com/blogs/martinzugec/WindowsLiveWriter/SystemSherlockGUImyfavoritealternativeto_C6B6/image_thumb_1.png" width="244" height="177" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;I tried to implement quite logical interface, so there are feature like auto-suggest or auto-repair of entries (for example HKLM is automatically translated HKEY_LOCAL_MACHINE)... Another feature is that entry type is automatically detected (you can see it in video - I don&amp;#39;t select whether entry is registry or filesystem, it is automatically filled):&lt;/p&gt;
&lt;p&gt;Update: Embedded video from Jing doesn&amp;#39;t work :( So click on following &lt;a class="" href="http://www.screencast.com/users/Soulin/folders/Jing/media/80b932d9-3be0-40c5-831a-5735065945be" target="_blank"&gt;link&lt;/a&gt;&amp;nbsp;instead).&lt;/p&gt;
&lt;p&gt;Once you specified what you want to monitor, just click on create button - dump is automatically created. Then do whatever you want - and just click on Create button again. One of SystemSherlock advantages is that it allows you to create as many dumps as you want - you can even compare current dump with one created months ago...&lt;/p&gt;
&lt;p&gt;When finished, move to Compare snapshots tab.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Compare snapshots&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Below is screenshot of Compare snapshots tab:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/blogs/martinzugec/WindowsLiveWriter/SystemSherlockGUImyfavoritealternativeto_C6B6/image_6.png"&gt;&lt;img style="BORDER-RIGHT:0px;BORDER-TOP:0px;BORDER-LEFT:0px;BORDER-BOTTOM:0px;" border="0" alt="image" src="http://msmvps.com/blogs/martinzugec/WindowsLiveWriter/SystemSherlockGUImyfavoritealternativeto_C6B6/image_thumb_2.png" width="244" height="177" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;It is divided to two parts - on left you can see source dumps and on right target dumps. Source dumps are the ones that were taken first -&amp;nbsp; this is VERY important to understand that source must be always older. &lt;/p&gt;
&lt;p&gt;System Sherlock Lite can report unexpected results if you are not aware of this behavior - if you will swap source and target (so target will be older file and source will be newer file), results will be opposite (for example if you deleted folder between snapshots, it will report that this folder was created etc.). &lt;/p&gt;
&lt;p&gt;For this reason I implemented some logic to processing. When you select any file on left, ONLY newer files then selected are displayed on right.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Parse logs&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When you compare two dumps, differences between these two entries are automatically displayed in GUI.&lt;/p&gt;
&lt;p&gt;Current version should be already functional, but I am sure that there will be some issues - after all, this is really first version I just finished. If you encounter any problems or you have some features requests, feel free to post them in comments - if nothing, I will at least respond (but probably also implement such changes). &lt;/p&gt;
&lt;p&gt;Advantages compared to RegShot:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fully supports command line - can be scripted 
&lt;li&gt;Imho better GUI 
&lt;li&gt;Supports multiple dumps - not only comparison of 2 snapshots (easily review historical changes) 
&lt;li&gt;Exclusion list based on RegExes 
&lt;li&gt;GUI for reading log files&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;strong&gt;Download&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;iframe style="BORDER-RIGHT:#dde5e9 1px solid;PADDING-RIGHT:0px;PADDING-LEFT:0px;BORDER-TOP:#dde5e9 1px solid;PADDING-BOTTOM:0px;MARGIN:3px;BORDER-LEFT:#dde5e9 1px solid;WIDTH:240px;PADDING-TOP:0px;BORDER-BOTTOM:#dde5e9 1px solid;HEIGHT:66px;BACKGROUND-COLOR:#ffffff;" src="http://cid-6f6355ee6be5160e.skydrive.live.com/embedrowdetail.aspx/MyProjects/SystemSherlockGUI.exe" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1623856" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Deployment/default.aspx">Deployment</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Scripting/default.aspx">Scripting</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Development/default.aspx">Development</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Projects/default.aspx">Projects</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Utilities/default.aspx">Utilities</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Productivity/default.aspx">Productivity</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Tips_2600_amp_3B00_Tricks/default.aspx">Tips&amp;amp;Tricks</category></item><item><title>Utility to display logs from SystemSherlock Lite</title><link>http://msmvps.com/blogs/martinzugec/archive/2008/05/15/utility-to-display-logs-from-systemsherlock-lite.aspx</link><pubDate>Thu, 15 May 2008 10:29:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1622898</guid><dc:creator>martin</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/rsscomments.aspx?PostID=1622898</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/commentapi.aspx?PostID=1622898</wfw:comment><comments>http://msmvps.com/blogs/martinzugec/archive/2008/05/15/utility-to-display-logs-from-systemsherlock-lite.aspx#comments</comments><description>&lt;p&gt;As mentioned in my post about &lt;a class="" href="http://msmvps.com/blogs/martinzugec/archive/2008/05/14/make-snapshots-of-filesystem-and-registry-using-command-line.aspx" target="_blank"&gt;SystemSherlock Lite&lt;/a&gt;, I really love this tool after few days... Only problem I had is that it can take some time to realize what really happened - you need to read pretty big log files and you can spend precious time reading through temporary entries or documents and settings and miss one important entry saying that applications copied something to your System32 folder.&lt;/p&gt;
&lt;p&gt;I was playing with Sherlock yesterday and I spent lot of time parsing through log files generated by SystemSherlock. Then I spend 20 minutes writing some automated parser and I want to share with you ;)&lt;/p&gt;
&lt;p&gt;Usage is pretty simple - just click on Open log file, select your log file and output similar to following should appear:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/blogs/martinzugec/SystemSherlockReader.PNG"&gt;&lt;img src="http://msmvps.com/blogs/martinzugec/SystemSherlockReader.PNG" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I dont know what else to add - this utility is pretty simple, however can save your time ;) One more notice - log parse is able to handle also mixed logs (so if you have one log where you store different entries together with log output from SystemSherlock Lite, you can use it and it will only show entries from SystemSherlock Lite. &lt;/p&gt;
&lt;p&gt;Any comments, requests? Feel free to post comments...&lt;/p&gt;&lt;iframe style="BORDER-RIGHT:#dde5e9 1px solid;PADDING-RIGHT:0px;BORDER-TOP:#dde5e9 1px solid;PADDING-LEFT:0px;PADDING-BOTTOM:0px;MARGIN:3px;BORDER-LEFT:#dde5e9 1px solid;WIDTH:240px;PADDING-TOP:0px;BORDER-BOTTOM:#dde5e9 1px solid;HEIGHT:66px;BACKGROUND-COLOR:#ffffff;" src="http://cid-6f6355ee6be5160e.skydrive.live.com/embedrowdetail.aspx/MyProjects/SystemSherlockReader.exe" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1622898" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Scripting/default.aspx">Scripting</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Development/default.aspx">Development</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Projects/default.aspx">Projects</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Utilities/default.aspx">Utilities</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Productivity/default.aspx">Productivity</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Tips_2600_amp_3B00_Tricks/default.aspx">Tips&amp;amp;Tricks</category></item><item><title>Another nasty Robocopy bug</title><link>http://msmvps.com/blogs/martinzugec/archive/2008/05/14/another-nasty-robocopy-bug.aspx</link><pubDate>Wed, 14 May 2008 18:26:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1622601</guid><dc:creator>martin</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/rsscomments.aspx?PostID=1622601</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/commentapi.aspx?PostID=1622601</wfw:comment><comments>http://msmvps.com/blogs/martinzugec/archive/2008/05/14/another-nasty-robocopy-bug.aspx#comments</comments><description>&lt;p&gt;Recently&amp;nbsp;I wrote about &lt;a class="" title="but I found in Robocopy" href="http://msmvps.com/blogs/martinzugec/archive/2008/03/03/ugly-bug-in-robocopy-ignoring-security-on-file-level.aspx" target="_blank"&gt;bug I found in Robocopy&lt;/a&gt; - one of my favorite utilities... And today I found another one. &lt;/p&gt;
&lt;p&gt;I am using robocopy for synchronization - which is VERY important part of our framework (if nothing is synchronized, nothing can be executed). &lt;/p&gt;
&lt;p&gt;We use one folder for storing all log files. During migration to newer version of framework, I wanted to see only new entries for easier troubleshooting (many log files are not overwriting, but rather appending). So I renamed my Log folder to Log.Backup and tried to run synchronization... I run only backend part - that is part that is missing all checking, creation of required folders etc.&lt;/p&gt;
&lt;p&gt;To my surprise my synchronization failed - when I renamed Log.Backup to Log again it was working.&lt;/p&gt;
&lt;p&gt;Robocopy reported very strange error:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;ERROR : Invalid Parameter #4 : &amp;quot;/Log+:C:\Temp\Log\Robocopy.log&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I am using same syntax for many years, so I was really surprised. I double checked robocopy version to be sure that I didnt accidentaly replaced it with some 3.11 version - nope, I was using current version.&lt;/p&gt;
&lt;p&gt;Then I started to have that scary feeling that I know what is wrong - I tried to run it again, this time specifying folder that didnt exist - and I got same error as before. &lt;/p&gt;
&lt;p&gt;To summarize it - if Robocopy is not able to write to file, it reports &amp;quot;Invalid parameter&amp;quot;. If you specify that you want to store your settings in log file in folder that doesn`t exist - bang, &amp;quot;Invalid parameter&amp;quot;. &lt;/p&gt;
&lt;p&gt;Tested with newer and older versions of Robocopy - XP010 (Resource Kit), XP026 and XP027 (Vista). &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1622601" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Scripting/default.aspx">Scripting</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Utilities/default.aspx">Utilities</category></item><item><title>Make snapshots of filesystem and registry using command line</title><link>http://msmvps.com/blogs/martinzugec/archive/2008/05/14/make-snapshots-of-filesystem-and-registry-using-command-line.aspx</link><pubDate>Wed, 14 May 2008 12:43:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1622463</guid><dc:creator>martin</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/rsscomments.aspx?PostID=1622463</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/commentapi.aspx?PostID=1622463</wfw:comment><comments>http://msmvps.com/blogs/martinzugec/archive/2008/05/14/make-snapshots-of-filesystem-and-registry-using-command-line.aspx#comments</comments><description>&lt;p&gt;Some installers can be very mysterious - this suddenly applies for MSI packages, even using full logging, it is not easy to find out which registry keys or files were modified\deleted\added. If you have application that is using some custom installer, this can be hell...&lt;/p&gt;
&lt;p&gt;Colleague of mine came with really nice idea - what about using some tool like InstallRite or RegShot for monitoring all installations and reporting what was changed during that installation? From idea it is usually not far to implementation - you only need some tools to do it...&lt;/p&gt;
&lt;p&gt;I used utility called &lt;a class="" title="System Sherlock Lite" href="http://www.kephyr.com/systemsherlocklite/index.phtml" target="_blank"&gt;System Sherlock Lite&lt;/a&gt;&amp;nbsp;- it is very simple to use command line utility that can take snapshots from filesystem\registry and compare them. Of course it is freeware ;) It also supports exclusion list (using regexes), so you can easily configure it for your needs and ignore entries you are not interested in (usually log files or temporary folders). &lt;/p&gt;
&lt;p&gt;&amp;nbsp;So what I did is that I created 2 different scripts - StartMonitor and StopMonitor. &lt;/p&gt;
&lt;p&gt;StartMonitor is creating first snapshot.&lt;/p&gt;
&lt;p&gt;StopMonitor will create second snapshot, compare it with first snapshot and store differences in installation log file. Then it will delete both snapshots.&lt;/p&gt;
&lt;p&gt;This implementation is really easy, but is working really nice. Now I can easily monitor all installation I want automatically without any knowledge about installer being used or installation method. It allows me to easily debug anything from logon\logoff scripts to software installations...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Martin&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1622463" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Deployment/default.aspx">Deployment</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Scripting/default.aspx">Scripting</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Utilities/default.aspx">Utilities</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Tips_2600_amp_3B00_Tricks/default.aspx">Tips&amp;amp;Tricks</category></item><item><title>New (simple) tool - SimpleScheduler</title><link>http://msmvps.com/blogs/martinzugec/archive/2008/05/10/new-simple-tool-simplescheduler.aspx</link><pubDate>Sat, 10 May 2008 09:23:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1618762</guid><dc:creator>martin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/rsscomments.aspx?PostID=1618762</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/commentapi.aspx?PostID=1618762</wfw:comment><comments>http://msmvps.com/blogs/martinzugec/archive/2008/05/10/new-simple-tool-simplescheduler.aspx#comments</comments><description>&lt;p&gt;I run into simple problem - I needed some (very basic) implementation of scheduled tasks. Scheduled tasks that are built-in to windows are not my best friend - problem is that (before Windows Vista, here they are completely different beast) it was not that easy to manage (automatically) scheduled tasks.&lt;/p&gt;
&lt;p&gt;For example if you wanted to reboot your servers by scheduled task and then enable them with another, you cannot be 100% sure that it will work. Problem is that if server is available when scheduled task should be executed, it will ignore it later on.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;For this reason I wrote really small script for myself and named it SimpleScheduler. It is using DateX, EchoX and Tee from Bill Stewart`s Shell Scripting Toolkit (which again I can only recommend).&lt;/p&gt;
&lt;p&gt;To enable it, just create one small scheduled task (give it any name you want, mine is SimpleSchedService) and configure it to run every few minutes (depends on what you want to run through it). I wrote about this concept few times ago and I still really like it, because it allows you to make very robust and reliable scripts (even if one run fails, another will usually finish its job). &lt;/p&gt;
&lt;p&gt;Once SimpleScheduler is running, that all you need to do on backend. All you need to do now is just create new jobs for it.&lt;/p&gt;
&lt;p&gt;Creating new jobs is pretty easy once you get used to it. Job always consists of 2 elements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;Job.cmd - script that will run. If you want to run anything else, to it from this script.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;lt;DateID&amp;gt;.NextRun - this file identifies when you want to run scheduled task. &amp;lt;DateID&amp;gt; is date format used by DateX (with -t switch), so for example 950688458.NextRun.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;To create NextRun entries you must\should use DateX to generate ID when you want to run script. If you find this confusing, just post comment and I can add small script that will translate it automatically from you. &lt;/p&gt;
&lt;p&gt;By default all jobs that are not scheduled to run again are automatically deleted (you can change this in SimpleScheduler.ini configuration). Every job will automatically create log file (using Tee.exe from Bill).&lt;/p&gt;
&lt;p&gt;Main goal of this small script is to make more reliable scheduled tasks (ones that are immune to server reboot) and also to make easy scheduled tasks creation (all you need to do here is just copy folder to add new task or transfer it from one server to another).&lt;/p&gt;
&lt;p&gt;If you find it useful, please add some comments. If you want to add\change anything, please also write comments :)&lt;/p&gt;&lt;iframe style="BORDER-RIGHT:#dde5e9 1px solid;PADDING-RIGHT:0px;PADDING-LEFT:0px;BORDER-TOP:#dde5e9 1px solid;PADDING-BOTTOM:0px;MARGIN:3px;BORDER-LEFT:#dde5e9 1px solid;WIDTH:240px;PADDING-TOP:0px;BORDER-BOTTOM:#dde5e9 1px solid;HEIGHT:66px;BACKGROUND-COLOR:#ffffff;" src="http://cid-6f6355ee6be5160e.skydrive.live.com/embedrowdetail.aspx/MyProjects/SimpleScheduler.zip" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1618762" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Scripting/default.aspx">Scripting</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Utilities/default.aspx">Utilities</category></item><item><title>Useful tools for scripts</title><link>http://msmvps.com/blogs/martinzugec/archive/2008/03/27/useful-tools-for-scripts.aspx</link><pubDate>Thu, 27 Mar 2008 10:09:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1556644</guid><dc:creator>martin</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/rsscomments.aspx?PostID=1556644</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/commentapi.aspx?PostID=1556644</wfw:comment><comments>http://msmvps.com/blogs/martinzugec/archive/2008/03/27/useful-tools-for-scripts.aspx#comments</comments><description>&lt;p&gt;One of my favorites are from SST (Shell Scripting Toolkit) from Bill Stewart (&lt;a href="http://www.westmesatech.com/"&gt;http://www.westmesatech.com/&lt;/a&gt;), but I dont understand why they are not really known in community. &lt;/p&gt;
&lt;p&gt;So I decided to post a little bit about them, maybe someone could be interested.&lt;/p&gt;
&lt;p&gt;Toolkit contains following utilities:&lt;/p&gt;
&lt;p&gt;CCase.exe&lt;br /&gt;ColorX.exe&lt;br /&gt;DateX.exe&lt;br /&gt;DriveX.exe&lt;br /&gt;EchoX.exe&lt;br /&gt;FInfo.exe&lt;br /&gt;IfX.exe&lt;br /&gt;LineX.exe&lt;br /&gt;S2V.EXE&lt;br /&gt;ShellEsc.exe&lt;br /&gt;SleepX.exe&lt;br /&gt;Str.exe&lt;br /&gt;Tee.exe&lt;br /&gt;TempName.exe&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CCase&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Change Case - allows you to change case using pipe, pretty simple and sometimes can be VERY useful. Just pipe output through ccase you you get results you want:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;C:\Temp\BillStewart&amp;gt;echo Testing cHAnGe Case | ccase -l&lt;br /&gt;testing change case&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;C:\Temp\BillStewart&amp;gt;echo Testing cHAnGe Case | ccase -u&lt;br /&gt;TESTING CHANGE CASE&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ColorX&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Do you want to use custom color scheme in your scripts? Or manipulate with it? ColorX allows you to detect current settings or change them. &lt;br /&gt;If you use -l switch, ColorX generates really nice overview of available colors, so you can quickly choose your combination. For example I like to have specific color of output to stress some facts (for example Success is light green, failure is red and important messages are orange), so you immediately see if there is anything wrong. Problem is that many people change default color, for example using red foreground (so all errors and warnings got lost). &lt;/p&gt;
&lt;p&gt;I can build simple workaround using ColorX:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;:: Store original settings&lt;br /&gt;For /f &amp;quot;UseBackQ tokens=*&amp;quot; %%c IN (`ColorX`) Do Set Settings.OriginalColor=%%c&lt;br /&gt;&lt;br /&gt;:: Change to MY settings (white frontground, black background)&lt;br /&gt;ColorX -c 0F&lt;br /&gt;&lt;br /&gt;:: Do something....&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;::Restore original settings&lt;br /&gt;ColorX -c %Settings.OriginalColor%&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DateX&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;One of the biggest pains when handling with batches are date\time manipulation. Problem is that they are dependant on your regional settings and if you need to manipulate with multiple countries, scripts are getting VERY complex. Not to mention problems if you want to increase or decrease values&amp;nbsp;- my script for getting (universal) file creation time is 90 lines long. You will also probably (sooner or later) discover some cave-eats of batches - for example batch Set /a behavior. For example you want to store date one month ago in variable. It starts pretty simply - you just parse %Date% variable or use Date/t.&lt;/p&gt;
&lt;p&gt;Today is Thu 03/27/2008 - and you would like to run something like &lt;em&gt;Set /a 03 - 1&lt;/em&gt; (March - one month) and then have some check like&lt;em&gt; If&amp;nbsp;%Result% LSS 1 set /a %Result% + 12&lt;/em&gt; (that is probably easiest method how to handle with months). Still not see problem? If you would implement it today, you script will work for 5 months - and 1st of August it will stop working. Because we see &amp;quot;03&amp;quot;, Set /a automatically consider number is octet - and 08 doesnt exist in octat, so you will receive error:&lt;br /&gt;Invalid number.&amp;nbsp; Numeric constants are either decimal (17),&lt;br /&gt;hexadecimal (0x11), or octal (021).&lt;/p&gt;
&lt;p&gt;Well, to make long story short, just ignore batch functionality and use DateX instead. I am using DateX for two purposes - first one is for time comparison (here is it extremely useful) and also for predefining format I expect.&lt;/p&gt;
&lt;p&gt;Example of time comparison:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;For /f &amp;quot;usebackq tokens=*&amp;quot; %%x IN (`DateX -t`) Do Set Temp.Start=%%x&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;::Do something&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;For /f &amp;quot;usebackq tokens=*&amp;quot; %%x IN (`DateX -t`) Do Set Temp.End=%%x&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Set /a Temp.Duration=%Temp.End% - %Temp.Start%&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Echo Script was running for %Temp.Duration% seconds&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Of course changing it to minutes\hours etc is not problem at all.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DriveX&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Allows you to manipulate with drive and retrieve type of drive. Only problem I encountered (but there is probably nothing that can be done to fix this) is that it is not able to detect substed drives (mapped using Subst). Returned errorlevel identifies drive type - so 3 is fixed, 5 is CD-ROM etc.. &lt;/p&gt;
&lt;p&gt;It is most usefull if you want to process particular drive types. For example unmap all network drive command is pretty simple using DriveX:&lt;br /&gt;&lt;em&gt;For /f &amp;quot;UseBackQ Tokens=*&amp;quot; %%d IN (`DriveX -l 4`) Do Net Use %%d: /Delete&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;EchoX.exe&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;EchoX is probably my favorite utility and I use it with most of my scripts. What it allows you to do? Its pretty simple, you can change color of output (not WHOLE console window, only one line). Also I really like usage of escape characters that allows you to include line feed and return commands in one line.&lt;/p&gt;
&lt;p&gt;Consider scenario where something goes reaaaaally wrong - and you want to notify user. You want to display following message:&lt;br /&gt;&lt;br /&gt;:: Do something&lt;/p&gt;
&lt;p&gt;WARNING: Problem was detected when using script X.&lt;br /&gt;WARNING: Script will now abort.&lt;br /&gt;WARNING: Please contact your administrator&lt;br /&gt;&lt;br /&gt;:: Do some recovery&lt;/p&gt;
&lt;p&gt;Using &amp;nbsp;batches, you must write following &amp;quot;code&amp;quot;:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;:: Do something&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Echo.&lt;br /&gt;Echo WARNING: Problem was detected when using script X.&lt;br /&gt;Echo WARNING: Script will now abort.&lt;br /&gt;Echo WARNING: Please contact your administrator&lt;br /&gt;Echo.&lt;br /&gt;&lt;br /&gt;:: Do some recovery&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Which is not bad, problem is that same color is used and it is really easy to miss such important information. With EchoX you use &lt;/p&gt;
&lt;p&gt;EchoX -c 0C &amp;quot;~nWARNING:Problem was detected when using script X.~nWARNING: Script will now abort.~nWARNING: Please contact your administrator~n&amp;quot;&lt;/p&gt;
&lt;p&gt;Of course you can split it to three lines. What is important is that this message is obviously error. It is really nice if you use it together with If Else:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;If /i #%Result%# EQU #OK# (&lt;br /&gt;EchoX -c 0A &amp;quot;Operation finished successfully&amp;quot;&lt;br /&gt;) Else (&lt;br /&gt;EchoX -c 0C &amp;quot;WARNING: Something wrong happened&amp;quot;&lt;br /&gt;)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;That way you can change your batch script to appear&amp;nbsp;more like utilities. Highly recommended,&amp;nbsp;when I was searching for something&amp;nbsp;like this I found SST. You can find (very few) tools that&amp;nbsp;do the same, but all I tested had problems with buffer (text was truncated, sometimes corrupted etc)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;FInfo.exe&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;FInfo allows you to dump some basic information about files. You specify file and you can get path only, file name etc. This functionality is not that important - you can achieve the same by implementing %~ (if you are interested, leave some comment and I can write how to use it). &lt;/p&gt;
&lt;p&gt;What is more interesting is option to get last modification time in same format as DateX (universal, no parsing needed). &lt;br /&gt;Also option to retrieve file size is really nice - output is obviously made for parsing (BTW Bill, if you read it, I cant stress enough how I appreciate parseable output ;)). &lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IfX.exe&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Not really useful today, because built-in If contains same functionality. Obviously it was build for 9x OSs, so dont expect anything really fancy here. It would be nice if it would contain features like IfX Starts With, IfX Ends With, IfX Contains etc...&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LineX.exe&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Allows you to handle with output, generally Windows tails\head tools. Nice feature is that you can retrieve line n (so if your second line is always ::Created by, you can easily retrieve this). Usually you need to write some For /f with counter that tells you when to stop parsing - which is quite time consuming and not really reliable, so LineX can really help.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;S2V.EXE&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;MS-DOS utility to store output in variable. Replaced in NT by For /f, I never had chance to try it.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ShellEsc.exe&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Could be really nice :( You can shellescaped any text - which is really great if you automate automation like I do ;) Problem is that ScellEsc was never really working for me - when it encountered empty line, it always crashed with message&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Runtime error 216 at $0040107F&lt;br /&gt;&amp;nbsp; $0040107F&lt;br /&gt;&amp;nbsp; $0006FFA8&lt;br /&gt;&amp;nbsp; $FFFFFFFF&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I completely forgot about this tool and I will try to write Bill if he still supports SST and if he could fix it - because I like to organize my code to make it easily readable.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SleepX.exe&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Nice replacement of original Sleep. While original sleep allows you to specify time only, SleepX allows you to display message also and add option (and this is why I like it) to abort sleep by any key. One feature I am missing is that I would like SleepX to sleep forever if no timeout is specified and option to abort was enabled. I know I could use Sleep &amp;amp; Pause combination, but the idea is that you could allow people to define timeouts for different messages like this and use one code for all configurations.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Str.exe&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Str allows in general two operations - first one is to change to uppercase\lowercase&amp;nbsp; and echo number of characters in string. For upper\lower case I prefer to use CCase, because it accepts pipe, but number of characters is sometimes very useful (especially if you want to do something where limited characters are allows). Second functionality is to detect string inside string and return starting position. I prefer using Str to handling with Find (you can detect if string exists by checking errorlevel), also because it allows me to easily detect if string STARTS with different string (which is sometimes quite important).&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tee.exe&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Tee allows you to split output - so you can create log file that contains everything that is displayed to console. I like this concept, but prefer MTee to Tee because it contains more functionality.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TempName.exe&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This tool could be quite useful, but I am still using script to do this:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;:GenerateCacheFolder&lt;br /&gt;Set Temp.ID=%Random%&lt;br /&gt;If Exist &amp;quot;%Folder.Root%\Cache\%Temp.ID%&amp;quot; Goto GenerateCacheFolder&lt;br /&gt;Set Temp.Cache=%FolderRoot%\Cache\%Temp.ID%&lt;br /&gt;MkDir &amp;quot;%Temp.Cache%&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1556644" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Scripting/default.aspx">Scripting</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Utilities/default.aspx">Utilities</category></item><item><title>How to synchronize data between computers over Internet</title><link>http://msmvps.com/blogs/martinzugec/archive/2008/03/24/how-to-synchronize-data-between-computers-over-internet.aspx</link><pubDate>Mon, 24 Mar 2008 21:44:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1552407</guid><dc:creator>martin</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/rsscomments.aspx?PostID=1552407</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/commentapi.aspx?PostID=1552407</wfw:comment><comments>http://msmvps.com/blogs/martinzugec/archive/2008/03/24/how-to-synchronize-data-between-computers-over-internet.aspx#comments</comments><description>&lt;p&gt;Recently I wrote about my new shiny desktop (we all know that after few months it will be old junk ;))... I want to use this computer for work mostly, for developement, testing etc... For that reason, I would like to synchronize some data between different computers, ideally over internet (and also share some data with my colleagues\friends - for this I am using Live SkyDrive).&lt;/p&gt;
&lt;p&gt;Microsoft recently aquired product called FolderShare, so I decided I will give it a try. And I must say I really like it. You install (small) application that is running on your PC and it is responsible for synchronizing all data. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;You can mark sync folder as private or you can share it with your friends... Nice thing is that you can also remotely browse your PCs harddrive. &lt;/p&gt;
&lt;p&gt;Currently there are however still some problems:&lt;/p&gt;
&lt;p&gt;- LiveID is not supported - I see this is definitely only temporary issue, but it is quite annoying (also because they have password complexity turned on, so I cant use same mail &amp;amp; password as is my original LiveID).&lt;/p&gt;
&lt;p&gt;- No option to download whole folders from remote PCs (however you can download files). I understand this is not primary function of FolderShare, but I would definitely like to see it&lt;/p&gt;
&lt;p&gt;- data limitations - of course, we always want more and more :D I know there is 10.000 files per-library limit, dont know about size limits&lt;/p&gt;
&lt;p&gt;- automatic detection of proxy server - it is quite annoying to enable\disable proxy over and over again&lt;/p&gt;
&lt;p&gt;- two-factor security would be nice... for sensitive data like this password is not really enough (but same applies for LiveID itself)&lt;/p&gt;
&lt;p&gt;- public &amp;amp; password protected libraries would be nice. Public for projects (install FolderShare and all your projects (understand different utilities etc) are automatically up-to-date), password protected for load&amp;amp;wipe sharing.&lt;/p&gt;
&lt;p&gt;Thats all... So far I highly recommend this tool - if you have few PCs and you want to synchronize some data...&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1552407" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Utilities/default.aspx">Utilities</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Productivity/default.aspx">Productivity</category></item><item><title>Specify default process priority and CPU affinity for some processes</title><link>http://msmvps.com/blogs/martinzugec/archive/2008/03/17/specify-default-process-priority-and-cpu-affinity-for-some-processes.aspx</link><pubDate>Mon, 17 Mar 2008 08:20:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1545628</guid><dc:creator>martin</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/rsscomments.aspx?PostID=1545628</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/commentapi.aspx?PostID=1545628</wfw:comment><comments>http://msmvps.com/blogs/martinzugec/archive/2008/03/17/specify-default-process-priority-and-cpu-affinity-for-some-processes.aspx#comments</comments><description>&lt;p&gt;Well, you already run into similar problem before - you have one process that you want (must) run at background all the time, but it is decreasing responsiveness of your whole system. So you assign it lower priority (Idle\Below Normal), but after reboot\process restart it have same priority again.. And same applies for CPU affinity - you would like to keep one core (we are talking about dual core systems) only for some processes that you want to keep highly responsive - you can do it, but specify it for all processes over and over again??&lt;/p&gt;
&lt;p&gt;&amp;nbsp;That is too much pain.&lt;/p&gt;
&lt;p&gt;On my system I have 87 processes running - most of them from &amp;quot;enterprise vital&amp;quot; products like Symantec or Altiris (well, now it is same company), these you really love to have many processes (Altiris is running 5 on mine, Symantec 11) and some of them can really destroy your day (Symantec auto update - it will run 3 (!) processes, all of them set to high priority\realtime). &lt;/p&gt;
&lt;p&gt;So after little investigation (and writing few scripts) it turns out there is one utility already doing this and it is really nice - name is Process Lasso and you can find it &lt;a class="" title="here" href="http://www.bitsum.com/prolasso.php" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Process Lasso allows you to configure default values for processes - so everytime process with specified name runs, it will have predefined priority and affinity. I am only missing option to build rules not based on process name, but on Company name (Vendor) instead.&lt;/p&gt;
&lt;p&gt;As &amp;quot;bonuses&amp;quot; you will get tons of additional features, for example foreground boosting (process that is in front will get priority boost) - I just turned this feature on few seconds ago, so dont have any personal experiences ;)&lt;/p&gt;
&lt;p&gt;Also if one process tries to get too much resources, his priority will be lowered - in fact same functionality as ThreadMaster on Citrix\Terminal Services (if you dont know it, &lt;a class="" title="download it" href="http://threadmaster.tripod.com/" target="_blank"&gt;download it&lt;/a&gt; immediately - it is for free and can same you lot of pain by preventing one user from crashing whole server). &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1545628" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Other/default.aspx">Other</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Utilities/default.aspx">Utilities</category></item><item><title>Use one card to connect to multiple WiFi networks at once</title><link>http://msmvps.com/blogs/martinzugec/archive/2008/03/04/use-one-card-to-connect-to-multiple-wifi-networks-at-once.aspx</link><pubDate>Tue, 04 Mar 2008 22:00:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1533380</guid><dc:creator>martin</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/rsscomments.aspx?PostID=1533380</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/commentapi.aspx?PostID=1533380</wfw:comment><comments>http://msmvps.com/blogs/martinzugec/archive/2008/03/04/use-one-card-to-connect-to-multiple-wifi-networks-at-once.aspx#comments</comments><description>&lt;p&gt;Well, this is probably most descriptive %subject% I ever wrote ;) Problem is quite simple - can you use one Wifi card to connect to multiple hotspots??&lt;/p&gt;
&lt;p&gt;If you think about it, possibilities are quite interesting - and it is possible using VirtualWiFi. &lt;/p&gt;
&lt;p&gt;I was not able to test it - I am corporate guy now, so dont want to betatest on my company laptop (but my personal PC should be here in few weeks), but it looks functional.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://research.microsoft.com/netres/projects/virtualwifi/software.htm"&gt;http://research.microsoft.com/netres/projects/virtualwifi/software.htm&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If any one of you will test it, please let me know any results...&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1533380" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Utilities/default.aspx">Utilities</category></item><item><title>Ugly bug in Robocopy - ignoring security on file level</title><link>http://msmvps.com/blogs/martinzugec/archive/2008/03/03/ugly-bug-in-robocopy-ignoring-security-on-file-level.aspx</link><pubDate>Mon, 03 Mar 2008 20:34:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1532379</guid><dc:creator>martin</dc:creator><slash:comments>14</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/rsscomments.aspx?PostID=1532379</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/commentapi.aspx?PostID=1532379</wfw:comment><comments>http://msmvps.com/blogs/martinzugec/archive/2008/03/03/ugly-bug-in-robocopy-ignoring-security-on-file-level.aspx#comments</comments><description>&lt;p&gt;I really like RoboCopy (robust file copy) utility from Microsoft - if you dont know this tool (I would be surprised), it adds tons of features to standart Copy command - and probably the most useful is /MIR (mirror) that creates mirror of source folder.&lt;/p&gt;
&lt;p&gt;One of main benefits of mirror is that it is really fast and you can always use it to easily replicate different folders. Problem is that Mir is ignoring NTFS security.&lt;/p&gt;
&lt;p&gt;I know, I know, you can use /SEC - but you can still run into issues. Problem is that when using MIR switch, robocopy ignores ACL - so if you use RoboCopy Source Target /MIR /SEC, security settings are transfered - BUT if they are changed on source or target, these ACLs are not mirrored. This is only problem of files, not folders(!).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;This can be really annoying, currently you can use following as workaround:&lt;/p&gt;
&lt;p&gt;RoboCopy /Mir &amp;lt;Source&amp;gt; &amp;lt;Target&amp;gt;&lt;br /&gt;RoboCopy&amp;nbsp;/E /Copy:S /IS /IT &amp;lt;Source&amp;gt; &amp;lt;Target&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Second line will copy files again, but now with security...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Hope so Microsoft will fix this in next (if any) version of RoboCopy :( &lt;/p&gt;
&lt;p&gt;UPDATE: So, there are two newer versions than XP010 - version XP026 (that is part of Robocopy GUI) and XP027 (this is part of Windows Vista). Problem is that XP027 is not working under Windows XP\2003 (not tested, if someone have Vista, please test and let me know). Version XP026 is part of (not really useful - my opinion) Robocopy GUI. You can either install it and get Robocopy from System32... You can then use syntax RoboCopy &amp;lt;Source&amp;gt; &amp;lt;Target&amp;gt; /SecFix /xo /xn /xc /e /COPY:S&lt;br /&gt;This wont copy files, it will just reapply security settings.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;UPDATE2: Due to fact that it is not that easy to get Robocopy XP026 and you must install (quite ugly and useless) GUI to get it, I uploaded it to Microsoft SkyDrive:&lt;br /&gt;&lt;/p&gt;&lt;iframe style="BORDER-RIGHT:#dde5e9 1px solid;PADDING-RIGHT:0px;BORDER-TOP:#dde5e9 1px solid;PADDING-LEFT:0px;PADDING-BOTTOM:0px;MARGIN:3px;BORDER-LEFT:#dde5e9 1px solid;WIDTH:240px;PADDING-TOP:0px;BORDER-BOTTOM:#dde5e9 1px solid;HEIGHT:26px;BACKGROUND-COLOR:#ffffff;" src="http://cid-6f6355ee6be5160e.skydrive.live.com/embedrow.aspx/Tools/ROBOCOPY.EXE" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1532379" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Scripting/default.aspx">Scripting</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Utilities/default.aspx">Utilities</category></item><item><title>New utility to detect COM objects</title><link>http://msmvps.com/blogs/martinzugec/archive/2008/02/17/new-utility-to-detect-com-objects.aspx</link><pubDate>Sun, 17 Feb 2008 00:30:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1515145</guid><dc:creator>martin</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/rsscomments.aspx?PostID=1515145</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/commentapi.aspx?PostID=1515145</wfw:comment><comments>http://msmvps.com/blogs/martinzugec/archive/2008/02/17/new-utility-to-detect-com-objects.aspx#comments</comments><description>&lt;p&gt;If you are deployment specialist or responsible for deploying applications AND keeping computers running afterwards, I think you agree that you always want to know what will installer do - therefore you prefer to use copy and paste installations...&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Even if that is not applicable and you are like me, you rather build your own script to copy folders\files and register some libraries instead of using some installer (or maybe you are not and I am really, really strange ;)).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;If you do so, then you probably encountered situation when you can see tens or hundres of DLLs in one folder and you are not sure which are static and which requires registration through regsvr32. Or you can run into situation when application suddenly stopped working and you are almost sure that it is due missing registration of one file. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;I run few times into this situation - and I decided to write small utility that is able to detect libraries that requires registrations... It is called COM Detector ;)&lt;/p&gt;
&lt;p&gt;It is really easy to use it - just specify file or folder as input parameter and it will show you if file\files are COM objects (and requires registration prior to use) or they are not. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;This is output when scanning System32 folder (only few lines to show you):&lt;/p&gt;
&lt;p&gt;bios4.rom:Not DLL or OCX file&lt;br /&gt;bitsprx2.dll:COM&lt;br /&gt;bitsprx3.dll:COM&lt;br /&gt;blackbox.dll:COM&lt;br /&gt;blastcln.exe:Normal library&lt;br /&gt;bootcfg.exe:Normal library&lt;br /&gt;bootok.exe:Normal library&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;You can see that bisprx2.dll, bitsprx3.dll and blackbox.dll are COM-based so you must register them in order to be able to use them.&lt;/p&gt;
&lt;p&gt;To simplify parsing, delimiter is &amp;quot;:&amp;quot; - this is selected due to fact that you can`t use &amp;quot;:&amp;quot; in file\folder name because it is used for &lt;a class="" title="alternative data streams" href="http://msmvps.com/blogs/martinzugec/archive/2005/11/08/74862.aspx" target="_blank"&gt;alternative data streams.&amp;nbsp;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There are two optional switches available, /Debug and /SkipNoCOM. /Debug is used for debugging and is not really important, when you specify /SkipNoCOM, only COM objects will be displayed.&lt;/p&gt;
&lt;p&gt;Also known bug - if you encounter message box like &amp;quot;The application or DLL&amp;nbsp;&amp;lt;File&amp;gt; is not a valid Windows image. Please check this against your installation diskette.&amp;quot;, just ignore it - it is displayed by API and (so far) there is nothing I can do about it.&lt;br /&gt;&lt;/p&gt;&lt;iframe style="BORDER-RIGHT:#dde5e9 1px solid;PADDING-RIGHT:0px;BORDER-TOP:#dde5e9 1px solid;PADDING-LEFT:0px;PADDING-BOTTOM:0px;MARGIN:3px;BORDER-LEFT:#dde5e9 1px solid;WIDTH:240px;PADDING-TOP:0px;BORDER-BOTTOM:#dde5e9 1px solid;HEIGHT:66px;BACKGROUND-COLOR:#ffffff;" src="http://cid-6f6355ee6be5160e.skydrive.live.com/embedrowdetail.aspx/MyProjects/COMDetector.exe" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1515145" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Utilities/default.aspx">Utilities</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Compatibility/default.aspx">Compatibility</category></item><item><title>FileMon, RegMon... What about LibMon?</title><link>http://msmvps.com/blogs/martinzugec/archive/2008/02/15/filemon-regmon-what-about-libmon.aspx</link><pubDate>Fri, 15 Feb 2008 10:43:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1515104</guid><dc:creator>martin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/rsscomments.aspx?PostID=1515104</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/commentapi.aspx?PostID=1515104</wfw:comment><comments>http://msmvps.com/blogs/martinzugec/archive/2008/02/15/filemon-regmon-what-about-libmon.aspx#comments</comments><description>&lt;p&gt;Recently I wrote small article about DLL Hell problem (&lt;a href="http://msmvps.com/blogs/martinzugec/archive/2007/11/11/dll-help-is-there-any-solution.aspx"&gt;http://msmvps.com/blogs/martinzugec/archive/2007/11/11/dll-help-is-there-any-solution.aspx&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Maybe you were also experiencing similar problems and you tried to use some tools to troubleshoot - best choice is usually FileMon\RegMon (or ProcMon), but usually they wont really help when working with libraries. This is specially case with legacy Visual Basic 6.0 applications, that just crashes with general error (Library not found).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;And maybe you also encountered tool called Dependency Walker (&lt;a href="http://www.dependencywalker.com/"&gt;www.dependencywalker.com&lt;/a&gt;) from Microsoft. This is quick summary from website:&lt;/p&gt;
&lt;p&gt;&amp;quot;Dependency Walker is a free utility that scans any 32-bit or 64-bit Windows module (exe, dll, ocx, sys, etc.) and builds a hierarchical tree diagram of all dependent modules.&amp;quot;&lt;/p&gt;
&lt;p&gt;Maybe you also tried this utility - just to find out that it is quite useless, because most libraries (99%) are loaded dynamically and are not listed in tree view (usually you only see base system libraries):&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/blogs/martinzugec/WindowsLiveWriter/DependencyWalker.PNG"&gt;&lt;img src="http://msmvps.com/blogs/martinzugec/WindowsLiveWriter/DependencyWalker.PNG" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Just by accident I found that new (silently released) version contains also functionality called Profiling (dont ask me why they choose such meaningless name instead of Monitoring or any other option). &lt;/p&gt;
&lt;p&gt;This option allows you to run program and detect dependencies automatically (Profile -&amp;gt; Start Profiling). Of course output is much more detailed now:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/blogs/martinzugec/WindowsLiveWriter/ProfiledDependencyWalker.PNG"&gt;&lt;img src="http://msmvps.com/blogs/martinzugec/WindowsLiveWriter/ProfiledDependencyWalker.PNG" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Also attached log file can be extremely useful when troubleshooting:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;b&gt;&lt;font color="#ff0000" size="1"&gt;LoadLibraryExW(&amp;quot;C:\Apps\Opera 9\Microsoft.Windows.Common-Controls.DLL&amp;quot;, 0x00000000, LOAD_LIBRARY_AS_DATAFILE) returned NULL. Error: The system cannot find the file specified (2).&lt;/p&gt;&lt;/b&gt;&lt;/font&gt;
&lt;p&gt;in above example, application I used was downloaded from ThinDownload - obviously during packaging they forget something, because I dont have C:\Apps. &lt;br /&gt;I already used this tool few times and it can be extremely useful. For example when I noticed that one library is always returning something like &lt;b&gt;&lt;font color="#ff0000" size="1"&gt;Error: The specified procedure could not be found (127).&lt;/b&gt;&lt;/font&gt;, I knew that problem is not caused by missing library, but due to version mismatch. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1515104" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Utilities/default.aspx">Utilities</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Compatibility/default.aspx">Compatibility</category></item><item><title>HookApplication technology preview</title><link>http://msmvps.com/blogs/martinzugec/archive/2008/01/29/hookapplication-technology-preview.aspx</link><pubDate>Tue, 29 Jan 2008 19:47:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1485895</guid><dc:creator>martin</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/rsscomments.aspx?PostID=1485895</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/commentapi.aspx?PostID=1485895</wfw:comment><comments>http://msmvps.com/blogs/martinzugec/archive/2008/01/29/hookapplication-technology-preview.aspx#comments</comments><description>&lt;p&gt;Hi all,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;maybe you was watching my HookApplication project - just to remind you, HookApplication allows you to hook your specific actions to any process.&lt;/p&gt;
&lt;p&gt;Some blog posts I wrote are here:&lt;br /&gt;&lt;a href="http://msmvps.com/blogs/martinzugec/archive/2007/03/01/hookapplication-some-real-life-examples.aspx"&gt;http://msmvps.com/blogs/martinzugec/archive/2007/03/01/hookapplication-some-real-life-examples.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msmvps.com/blogs/martinzugec/archive/2007/02/16/hookapplication-introduction-hope-so-you-will-like-it.aspx"&gt;http://msmvps.com/blogs/martinzugec/archive/2007/02/16/hookapplication-introduction-hope-so-you-will-like-it.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Problem was that after&amp;nbsp;creation of concept itself, I didnt have enough time to work on it :(&lt;/p&gt;
&lt;p&gt;I would like to give you access to technology preview - small utility that is providing you with access to all features I mentioned before, however you will need to create your own configuration and it is not really user friendly.&lt;/p&gt;
&lt;p&gt;So, how to use it?&lt;/p&gt;
&lt;p&gt;1.) Create folder with name of your process inside Configuration folder (msnmsgr.exe for example). &lt;br /&gt;2.) Inside this folder, create file Configuration.ini &lt;br /&gt;3.) Inside this file, specify configuration for particular process&lt;/p&gt;
&lt;p&gt;Currently only (very) limited number of options are available:&lt;/p&gt;
&lt;p&gt;Run - run specified command&lt;/p&gt;
&lt;p&gt;RunWait - run specified command and wait until it finishes&lt;/p&gt;
&lt;p&gt;RunHidden - run specified command hidden&lt;/p&gt;
&lt;p&gt;RunWaitHidden - run specified command hidden and wait until it finishes&lt;/p&gt;
&lt;p&gt;RunMainProgram - run process that is hooked (in this case msnmsgr.exe)&lt;/p&gt;
&lt;p&gt;RunWaitMainProgram - run process that is hooked and wait until it finishes&lt;/p&gt;
&lt;p&gt;RunMainProgramHidden - run process that is hooked&lt;/p&gt;
&lt;p&gt;RunWaitMainProgramHidden - run process that is hooked hidden and wait until it finishes&lt;/p&gt;
&lt;p&gt;For example if I would create small script that is killing messenger (taskkill /f /im msnmsgr.exe - reason is that if you run messenger twice, it will get corrupted and you wont see GUI, only multiple processes), my configuration appears as follows:&lt;/p&gt;
&lt;p&gt;C:\HA\Configuration\msnmsgr.exe\Configuration.ini:&lt;/p&gt;
&lt;p&gt;RunWaitHidden=KillMessenger.cmd&lt;br /&gt;RunMainProgram&lt;/p&gt;
&lt;p&gt;Another example - I would like to disable Solitaire.exe. I am using MsgBox.exe utility:&lt;/p&gt;
&lt;p&gt;C:\HA\Configuration\Solitaire.exe\Configuration.ini:&lt;/p&gt;
&lt;p&gt;Run=MsgBox.exe &amp;quot;Solitaire is not allowed&amp;quot;&lt;/p&gt;
&lt;p&gt;We only created configuration so far, but now we must enable these entries - to do it, use script called ActivateHooks with /Add parameter... &lt;br /&gt;/Add supports *, so when you are finished, just use ActivateHooks.cmd /Add * and it should work.&lt;/p&gt;
&lt;p&gt;I am sure you will come with more examples... As I said, it is not really usefriendly (as is usual with technology previews), however if you want to test it, you can (and I would really really love to get any feedback ;))&lt;/p&gt;
&lt;p&gt;&lt;iframe style="BORDER-RIGHT:#dde5e9 1px solid;PADDING-RIGHT:0px;BORDER-TOP:#dde5e9 1px solid;PADDING-LEFT:0px;PADDING-BOTTOM:0px;MARGIN:3px;BORDER-LEFT:#dde5e9 1px solid;WIDTH:240px;PADDING-TOP:0px;BORDER-BOTTOM:#dde5e9 1px solid;HEIGHT:66px;BACKGROUND-COLOR:#ffffff;" src="http://cid-6f6355ee6be5160e.skydrive.live.com/embedrowdetail.aspx/MyProjects/HookApplication.zip" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1485895" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Utilities/default.aspx">Utilities</category></item><item><title>Quick access to start menu - and much more!</title><link>http://msmvps.com/blogs/martinzugec/archive/2008/01/11/quick-access-to-start-menu-and-much-more.aspx</link><pubDate>Fri, 11 Jan 2008 21:34:05 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1456472</guid><dc:creator>martin</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/rsscomments.aspx?PostID=1456472</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/martinzugec/commentapi.aspx?PostID=1456472</wfw:comment><comments>http://msmvps.com/blogs/martinzugec/archive/2008/01/11/quick-access-to-start-menu-and-much-more.aspx#comments</comments><description>&lt;p&gt;Real man dont click - and I take it seriously :) &lt;p&gt; I really prefer to use my keyboard - well, most people that write lot of scripts or are programming prefers the same. There are however some tasks where it is prefered to use mouse - for example start menu. You need to click on start (or hit winkey), navigate to programs, find company, select product, click on correct link... &lt;p&gt; Well, its not really good. But there is one easy solution for this - it is called &lt;a href="http://www.launchy.net"&gt;Launchy&lt;/a&gt;. &lt;p&gt;This is definition from Launchy`s homepage:&lt;br /&gt;&amp;quot;Launchy indexes the programs in your start menu and can launch your documents, project files, folders, and bookmarks with just a few keystrokes!&amp;quot; &lt;p&gt;And thats all - you install it, it will index your start menu (plus favorites etc.) and from that moment you can start using it. It is same as start menu indexing you can see in Windows Vista, however does work in Windows XP and it provides you additional features. &lt;p&gt;Just hit predefined key combination (default Alt+Space is not best, because it is used by system to open window menu (Restore, Minimize etc.), type some text (for example Vis for Visual Studio) and this is what you get: &lt;p&gt;&lt;a href="http://msmvps.com/blogs/martinzugec/WindowsLiveWriter/Quickaccesstostartmenuandmuchmore_13D47/image_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="120" alt="image" src="http://msmvps.com/blogs/martinzugec/WindowsLiveWriter/Quickaccesstostartmenuandmuchmore_13D47/image_thumb.png" width="244" border="0" /&gt;&lt;/a&gt;  &lt;p&gt;If it wont automatically show what you want, just hit down key - next time it will remember your selection.  &lt;p&gt;You can also use it for quickly accessing favorites in IE: &lt;p&gt;&lt;a href="http://msmvps.com/blogs/martinzugec/WindowsLiveWriter/Quickaccesstostartmenuandmuchmore_13D47/image_4.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="120" alt="image" src="http://msmvps.com/blogs/martinzugec/WindowsLiveWriter/Quickaccesstostartmenuandmuchmore_13D47/image_thumb_1.png" width="244" border="0" /&gt;&lt;/a&gt;  &lt;p&gt;You can use it to navigate to different web pages: &lt;p&gt;&lt;a href="http://msmvps.com/blogs/martinzugec/WindowsLiveWriter/Quickaccesstostartmenuandmuchmore_13D47/image_6.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="120" alt="image" src="http://msmvps.com/blogs/martinzugec/WindowsLiveWriter/Quickaccesstostartmenuandmuchmore_13D47/image_thumb_2.png" width="244" border="0" /&gt;&lt;/a&gt;  &lt;p&gt;You can even use it as calculator :) &lt;p&gt;&lt;a href="http://msmvps.com/blogs/martinzugec/WindowsLiveWriter/Quickaccesstostartmenuandmuchmore_13D47/image_8.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="120" alt="image" src="http://msmvps.com/blogs/martinzugec/WindowsLiveWriter/Quickaccesstostartmenuandmuchmore_13D47/image_thumb_3.png" width="244" border="0" /&gt;&lt;/a&gt;  &lt;p&gt;Or you can predefine your own shortcuts: &lt;p&gt;&lt;a href="http://msmvps.com/blogs/martinzugec/WindowsLiveWriter/Quickaccesstostartmenuandmuchmore_13D47/image_10.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="120" alt="image" src="http://msmvps.com/blogs/martinzugec/WindowsLiveWriter/Quickaccesstostartmenuandmuchmore_13D47/image_thumb_4.png" width="244" border="0" /&gt;&lt;/a&gt;  &lt;p&gt;Launchy is really small and simple - but it can completely change the way you access programs on your computer.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1456472" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Other/default.aspx">Other</category><category domain="http://msmvps.com/blogs/martinzugec/archive/tags/Utilities/default.aspx">Utilities</category></item></channel></rss>