If you are deployment specialist or responsible for deploying applications AND keeping computers running afterwards, I think you agree that you always want to know what will installer do - therefore you prefer to use copy and paste installations...
Even if that is not applicable and you are like me, you rather build your own script to copy folders\files and register some libraries instead of using some installer (or maybe you are not and I am really, really strange ;)).
If you do so, then you probably encountered situation when you can see tens or hundres of DLLs in one folder and you are not sure which are static and which requires registration through regsvr32. Or you can run into situation when application suddenly stopped working and you are almost sure that it is due missing registration of one file.
I run few times into this situation - and I decided to write small utility that is able to detect libraries that requires registrations... It is called COM Detector ;)
It is really easy to use it - just specify file or folder as input parameter and it will show you if file\files are COM objects (and requires registration prior to use) or they are not.
This is output when scanning System32 folder (only few lines to show you):
bios4.rom:Not DLL or OCX file
bitsprx2.dll:COM
bitsprx3.dll:COM
blackbox.dll:COM
blastcln.exe:Normal library
bootcfg.exe:Normal library
bootok.exe:Normal library
You can see that bisprx2.dll, bitsprx3.dll and blackbox.dll are COM-based so you must register them in order to be able to use them.
To simplify parsing, delimiter is ":" - this is selected due to fact that you can`t use ":" in file\folder name because it is used for alternative data streams.
There are two optional switches available, /Debug and /SkipNoCOM. /Debug is used for debugging and is not really important, when you specify /SkipNoCOM, only COM objects will be displayed.
Also known bug - if you encounter message box like "The application or DLL <File> is not a valid Windows image. Please check this against your installation diskette.", just ignore it - it is displayed by API and (so far) there is nothing I can do about it.