Necesito procesar una cantidad de archivos dll y exe en una carpeta y determinar con qué tipo de archivo estoy tratando: .NET, COM, Win32 u otro formulario de vida extraterrestre.¿Cómo puedo detectar el tipo de un dll? (COM, .NET, WIN32)
He estado tratando de determinar la mejor manera de detectar el tipo de un archivo DLL, ¿qué opinas de esto:
COM DLL => hago un LoadLibrary, entonces GetProcAddress para "DllRegisterServer". Si obtengo una devolución válida, es un archivo COM.
.NET DLL => Si el archivo DLL depende de MsCorEE.dll siempre es una DLL .NET?
Win32 DLL => Si tanto las pruebas anteriores fallan, es una DLL de Win32?
Seguramente debe haber una mejor manera de detectar qué tipo de dll estamos tratando. Lo anterior es muy torpe, y no funcionará para los archivos EXE? Debe haber alguna otra forma en la que no estoy pensando.
Idealmente, me gustaría poder hacer que el analizador determine con qué compilador se compiló el archivo, y qué características usa, como MFC, Atl, Stl, etc. ... Pero dudo que eso sea posible en el Era de reflexión?
La aceptación de esta respuesta debido a los vínculos agradables. Gracias a los otros carteles por los valiosos comentarios. –