So, let’s say there’s an application that you’re running that’s using MSXML, but you’re not sure which version it’s using. You can of course fire a debugger, attach to the process, and take a look at the loaded modules, but that’s a bit overkill for something that should be much simpler.
As I’ve mentioned in the past, the SysInternals tools are available online and you can run them from your computer directly. One such tool is handle, which allows you to look at the file, registry and other object types opened by each process.
So, to figure out which process is using which version of MSXML, you can simply run this from any command prompt:
This will product output such as the following:
Copyright (C) 1997-2008 Mark Russinovich
Sysinternals – www.sysinternals.com
iexplore.exe pid: 5068 40C: C:\Windows\System32\msxml3.dll
This means that Internet Explorer with process ID 5068 is using MSXML3. You can also use the listdlls utility in a similar manner, using the process name as the argument to the command; that will show you all DLLs loaded into the process.