RegSpy is a tool to extract the COM (or ActiveX) registration information from:
- COM DLLs (.dll, .ocx)
- COM Exe-Servers (.exe)
- COM Type Libraries
This is the information entered into the registry when the component is registered using RegSvr32 (for DLLs) or by specifying the -regserver command line parameter (for EXE files).
The basic usage is
RegSpy <COM component>
where <COM component>
is the path to the DLL, EXE or TLB file.
RegSpy generates a .Reg File in the format used by the Windows Registry Editor, RegEdit. The output file is generated in the same directory as the input file, with the additional extension .reg.
For example, if the input file is
c:\MyProject\MyComponent.dll
then the output file will be
c:\MyProject\MyComponent.dll.reg
RegSpy requires admin rights to execute.
My experience is that not all of the registration information is generated if RegSpy is exeduted without admin rights. In particular, the class registration (under HKEY_CLASSES_ROOT\CLSID) is generated, but the type library registration (under HKEY_CLASSES_ROOT\TypeLib) is not generated. At least this seems to be true for ATL/C++ components.
If you want to use the .reg file generated by RegSpy in an installation program, you should be aware that the file will contain the path to the COM component on your local machine.
Unless the component is installed on the target machine in exactly the same directory, you will need a strategy to replace the path on the local machine with the appropriate path on the target machine, before entering the information into the registry.
You can download the executable file here.
The original version of RegSpy was written by Phil Wilson.
It was extended to output the .reg format (to stdout) by Justin Buist.
Justin Buist acknowledges that he used the function ConvertToString from a project he refers to as 'regxml', which I believe is the project Import/Export registry sections as XML by Stephane Rodriguez.
This is the version which I downloaded from in the file RegSpy2.zip from Install Site.
In addition, I have used code from the project Registry Symbolic Links by Stefan Kuhr and the CStdString class originally by Joe O'Leary, helped by many people listed in the file.