Tôi cần xử lý một số tệp dll và exe trong một thư mục và xác định loại tệp tôi đang xử lý: .NET, COM, Win32 hoặc một số dạng sống ngoài hành tinh khác.Làm cách nào để phát hiện loại tệp dll? (COM, .NET, WIN32)
Tôi đã cố gắng để xác định cách dễ nhất để phát hiện các loại của một DLL, bạn nghĩ gì về điều này:
COM dll => Tôi làm một LoadLibrary, sau đó GetProcAddress cho "DllRegisterServer". Nếu tôi nhận được trả lại hợp lệ, đó là tệp COM.
NET dll => Nếu dll phụ thuộc vào mscoree.dll nó luôn luôn là một dll NET?
Win32 dll => Nếu cả hai kiểm tra trên đều thất bại, đó là một dll Win32?
Chắc chắn phải có cách tốt hơn để phát hiện loại dll chúng ta đang xử lý. Ở trên là rất clunky, và sẽ không làm việc cho các tập tin EXE? Phải có một số cách khác mà tôi không nghĩ đến. Lý tưởng nhất là tôi muốn có thể làm cho trình phân tích cú pháp xác định trình biên dịch nào được biên dịch, và những tính năng nào nó sử dụng như MFC, Atl, Stl, v.v ... Nhưng tôi nghi ngờ điều đó có thể xảy ra ở phần trước thời đại phản chiếu?
Chấp nhận câu trả lời này do các liên kết tốt đẹp. Cảm ơn các áp phích khác cho những ý kiến quý giá. –