<p>The company I work for makes hardware that communicates to the computer though a serial port. Third party companies write software that communicates with our hardware. </p>

<p>There are times when I need to diagnose our hardware. However, a third party software app connects to the serial port when Windows starts up, blocking any other connection. I don't know the name of this application/service and it's not always the same one.</p>

<p>Is there any way to either:</p>

<ul>
<li>Find the name/pid of the app/service that is currently using a given serial port or</li>
<li>Steal the serial port connection from another app.</li>
</ul>

<p>vb.net preferably, but I'll take a language agnostic answer as well.</p>

Sysinternals
has a slew of utilities I find very useful and educational for tracking down what processes are doing to the system.
They have a utility that does exactly what you need called
Portmon
, and give some information on how it works near the bottom of the page.  That info and a few well-asked questions will probably give you everything you need to implement it yourself if the utility isn't enough.
-Adam