>I would have done a data driven approach, having a table the extension as a primary/unique key, a column for a description, and a column for the definition, then in your procedure you just loop the table searching for a matching definition, that way you do not need to change the code every time you've got a new extension to work with (still you will need to have code for exceptions like you have for word) and the code would be much shorter and simpler.
It's highly difficult as some file types have more than one signature, there is a major exception for Microsoft Office 2007 files where we have to unzip, XML it and get the specific tag to collect a related signature, and various other formats where the signature may be a combination of startup characters as well as lookup in the binary data for specific hexadecimal sequence and with a possible lookup at the end of the file for another signature as well.