<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Rick's Debugging, Troubleshooting Tips and Experiences</title><subtitle type="html">My ramblings as related to my experiences with BizTalk and other things...</subtitle><id>http://blogs.msdn.com/rickcau/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/rickcau/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/rickcau/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2008-11-13T13:39:08Z</updated><entry><title>How to enumerate all VB6 applications that exist on a server</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/rickcau/archive/2008/12/08/how-to-enumerate-all-vb6-applications-that-exist-on-a-server.aspx" /><id>http://blogs.msdn.com/rickcau/archive/2008/12/08/how-to-enumerate-all-vb6-applications-that-exist-on-a-server.aspx</id><published>2008-12-09T00:17:07Z</published><updated>2008-12-09T00:17:07Z</updated><content type="html">&lt;p&gt;One of my coworkers sent out a email to my team asking if anyone knew of a tool that would find any VB6 (or older) based applications on a server.&amp;nbsp; He has a customer that needs to do this for support compliance reasons.&amp;nbsp; When such applications are found they want to ensure they have a plan to uplift.&lt;/p&gt; &lt;p&gt;In order to determine if an executable is a VB application, we need to determine if it depends on VBRUN.DLL.&amp;nbsp; We can do this with dumpbin.exe by using the /DEPENDENTS&amp;nbsp; option.&lt;/p&gt; &lt;p&gt;Let's take a look at the output from this command:&lt;/p&gt; &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, 'Courier New', courier, monospace; background-color: #f4f4f4"&gt; &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;C:\&amp;gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt; %i &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; (%SystemRoot%\system32\notepad.exe) &lt;span style="color: #0000ff"&gt;do&lt;/span&gt; dumpbin %i /DEPENDENTS   &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;      &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;C:\&amp;gt;dumpbin C:\Windows\system32\notepad.exe /DEPENDENTS   &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;Microsoft (R) COFF/PE Dumper Version 8.00.50727.42   &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;Copyright (C) Microsoft Corporation.  All rights reserved.   &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;        &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;Dump of file C:\Windows\system32\notepad.exe   &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;      &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;  File Type: EXECUTABLE IMAGE  &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;     &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;    Image has the following dependencies:  &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;     &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;      ADVAPI32.dll  &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;      KERNEL32.dll  &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;      GDI32.dll  &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;      USER32.dll  &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;      ...&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;As we can see, we do get the DLL details we are looking for.&amp;nbsp; Now, we just need to create logic that can parse the results and provide use with the details we need.&amp;nbsp; Our goal is to enumerate all the executables that have a dependency on VBRULL.DLL.&lt;/p&gt;
&lt;p&gt;Sure, we could write some C# I/O code that reads the file line-by-line, caching the name of the executables while looping and when we find VBRUN.DLL, write the executable name to a text file.&amp;nbsp; Using this approach is fine, but for our purposes all we need are the details in a text and how we get them is not that important to us.&lt;/p&gt;
&lt;p&gt;We can accomplish this task with a little batch programming.&lt;/p&gt;
&lt;p&gt;First, lets use NOTEPAD.EXE as our baseline for establishing a command/batch file that will provide the details we need.&amp;nbsp; Let's not forget the power of the "for loop" batch command.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Let's start by writing a command that will enumerate all occurrences of executables in the "%SystemRoot%\system32\" directory and dumping all dependencies for each executable to individual files.&lt;/p&gt;
&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, 'Courier New', courier, monospace; background-color: #f4f4f4"&gt;
&lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;C:\&amp;gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt; %i &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; (%SystemRoot%\system32\notepad.exe) &lt;span style="color: #0000ff"&gt;do&lt;/span&gt; dumpbin %i /DEPENDENTS   &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;      &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;C:\&amp;gt;dumpbin C:\Windows\system32\notepad.exe /DEPENDENTS   &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;Microsoft (R) COFF/PE Dumper Version 8.00.50727.42   &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;Copyright (C) Microsoft Corporation.  All rights reserved.   &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;        &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;Dump of file C:\Windows\system32\notepad.exe   &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;      &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;  File Type: EXECUTABLE IMAGE  &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;     &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;    Image has the following dependencies:  &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;     &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;      ADVAPI32.dll  &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;      KERNEL32.dll  &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;      GDI32.dll  &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;      USER32.dll  &lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;      ...&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Okay, so the purpose of using a "for loop" should be clear, but in this example I will restrict it by asking for a specific file "notepad.exe".&amp;nbsp; So now that I have a working "for loop" that utilizes "dumpbin.exe" to dump the dependencies, we can more to our next step, which is dumping the results to a file, then parsing each file for the occurrence of "USER32.DLL" and then outputting the executable details to a "RESULTS.TXT" file.&lt;/p&gt;
&lt;p&gt;To boil this down a bit, we really only need two steps.&lt;/p&gt;
&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, 'Courier New', courier, monospace; background-color: #f4f4f4"&gt;
&lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt; %%i &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; (%SystemRoot%\system32\notepad.exe) &lt;span style="color: #0000ff"&gt;do&lt;/span&gt; dumpbin %%i /DEPENDENTS /OUT:%%i.VBTXT&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt; %%i &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; (%SystemRoot%\system32\*.VBTXT) &lt;span style="color: #0000ff"&gt;do&lt;/span&gt; FINDSTR /I &lt;span style="color: #006080"&gt;"USER32.DLL"&lt;/span&gt; %%i  %%i &amp;gt;&amp;gt;RESULTS.TXT&lt;/pre&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;Notepad RESULTS.TXT &lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;Pasting the above commands into a .CMD file and running will result in notepad opening the RESULTS.TXT, which will contain an enumeration of all executables that have a dependency on "USER32.DLL".&amp;nbsp; This approach can easily be used to enumerate all executables that have a dependency on "VBRULL.DLL".&amp;nbsp; Of course you will need to tweak it to make it more useful.&lt;/p&gt;
&lt;p&gt;Regards - Rick&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9185464" width="1" height="1"&gt;</content><author><name>rickcau@microsoft.com</name><uri>http://blogs.msdn.com/members/rickcau%40microsoft.com.aspx</uri></author></entry><entry><title>BIZTALK SERVER 2009 beta and RFID mobile public beta announced today</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/rickcau/archive/2008/12/08/biztalk-server-2009-beta-and-rfid-mobile-public-beta-announced-today.aspx" /><id>http://blogs.msdn.com/rickcau/archive/2008/12/08/biztalk-server-2009-beta-and-rfid-mobile-public-beta-announced-today.aspx</id><published>2008-12-08T23:03:03Z</published><updated>2008-12-08T23:03:03Z</updated><content type="html">&lt;p&gt;This is a huge milestone for the &lt;a href="http://www.microsoft.com/biztalk/en/us/default.aspx"&gt;BizTalk Server Product&lt;/a&gt;, as it's the fist public beta of BizTalk Server 2009 and it's available for &lt;a href="http://connect.microsoft.com/"&gt;download&lt;/a&gt; today!&amp;nbsp; Read more about the features and highlights &lt;a href="http://blogs.msdn.com/stevemar/archive/2008/09/05/biztalk-server-2009.aspx"&gt;here&lt;/a&gt;.&amp;nbsp; The updates in BTS 2009 enable greater scalability and reliability, new Hyper-V vitalization support and lots of advances in the latest developer tools.&amp;nbsp; For all the features, read the following &lt;a href="http://www.microsoft.com/biztalk/en/us/roadmap.aspx"&gt;roadmap&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Also, we release the &lt;a href="http://www.codeplex.com/esb"&gt;Enterprise Service Bus Guidance 2.0&lt;/a&gt; today, which delivers updated prescriptive guidance for applying ESB usage patterns with improved itinerary processing, itinerary modeling using a visual domain-specific language (DSL) tools approach, a pluggable resolver-adapter pack and an enhanced ESB management portal.&amp;nbsp; &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9185350" width="1" height="1"&gt;</content><author><name>rickcau@microsoft.com</name><uri>http://blogs.msdn.com/members/rickcau%40microsoft.com.aspx</uri></author></entry><entry><title>Moss 2007 dispose issues, don't be a the victim</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/rickcau/archive/2008/11/13/moss-2007-dispose-issues-don-t-be-a-the-victim.aspx" /><id>http://blogs.msdn.com/rickcau/archive/2008/11/13/moss-2007-dispose-issues-don-t-be-a-the-victim.aspx</id><published>2008-11-13T21:39:08Z</published><updated>2008-11-13T21:39:08Z</updated><content type="html">&lt;p&gt;&lt;strong&gt;&lt;a href="http://blogs.msdn.com/sharepoint/archive/2008/11/12/announcing-spdisposecheck-tool-for-sharepoint-developers.aspx"&gt;SPDisposeCheck tool officially announced&lt;/a&gt;&lt;/strong&gt; &lt;p&gt;Last year I leveraged a good friend and coworker (Roger Lamb) to help identify and resolve several issues with the recent release of a MOSS Portal for one of the top 4 accounting firms.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;p&gt;We were experiencing frequent IIS recycles and OOM's and memory fragmentation.&amp;nbsp;&amp;nbsp; During our efforts, Roger and Scott Harris pin pointed some of the issues to custom code that where SPSite and SPWeb objects were not being disposed of properly.&amp;nbsp; &lt;p&gt;The work that Roger and Scott put into this effort, lead to Roger's great &lt;a href="http://blogs.msdn.com/rogerla/archive/2008/02/12/sharepoint-2007-and-wss-3-0-dispose-patterns-by-example.aspx"&gt;Dispose Patterns by example guidance&lt;/a&gt;, a must read for any SharePoint Developer.&amp;nbsp; Roger took this a step further by leading a team to create the SPDisposeCheck tool.&amp;nbsp;&amp;nbsp; If you develop any custom code for SharePoint, keeping an eye on &lt;a href="http://blogs.msdn.com/rogerla/archive/2008/11/12/spdisposecheck-spsite-and-spweb-dispose-best-practice-utility-announced.aspx"&gt;Roger's blog&lt;/a&gt; and checking out SPDisposeCheck are a must!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9066978" width="1" height="1"&gt;</content><author><name>rickcau@microsoft.com</name><uri>http://blogs.msdn.com/members/rickcau%40microsoft.com.aspx</uri></author></entry></feed>