Finding dependencies
As suggested by @DavidMarshall, you could use Dependency Walker:
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. For each module found, it lists all the functions that are exported by that module, and which of those functions are actually being called by other modules.
If you have many programs, however, going through all of them is unfeasible. A different approach is to open an elevated command prompt, and run the following command:
type nul>"%temp%\find.txt" & for /r "%systemdrive%\" %G in (*.exe;*.dll) do @find /i "msxml4.dll" "%~fG" >nul 2>&1 && echo %~fG>>"%temp%\find.txt"
What the command does is to recursively scan the content of every application and library file available in the system drive looking for msxml4.dll
strings, in a case-insensitive way.
The results are stored in a find.txt
file located in the user temporary folder. It's not perfect (see below), but it might give you some hints.
Remarks
The
find
command is designed for text files. While it also works for binary files, certain instances could be overlooked depending how they're stored. File permissions might prevent certain files from being scanned, too.In case you have programs which aren't installed in the system drive you can re-run the command above and specify the corresponding drive letter.
You could include other extensions, such as:
.cpl = Control panel item .ocx = ActiveX control .scr = Screen saver .sys = System file (e.g. device drivers)