Finding out which version of MSXML a program uses

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:

>\\live.sysinternals.com\tools\handle msxml

This will product output such as the following:

Handle v3.41
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.

Enjoy!