关于C#:如何检查文件是否为DLL?

How to check if a file is a DLL?

给出一个文件,我要检查这是一个DLL还是共享对象(Linux)或dylib(Mac OS X)或其他东西。我的主要兴趣是区分Linux和Mac OS X上的可执行文件和DLL。对于Windows,扩展名足以解决我的问题。

我已经检查了魔术数字技术在Linux上不起作用,因为可执行文件和共享对象都具有相同的数字。


Unix(Linux和Mac OS X)命令file知道如何识别文件类型。

man file告诉您用于执行此操作的"魔术"信息,尤其是在哪里可以找到具有该信息的文件。

man 5 magic详细描述了文件,还应告诉您文件的位置。您可以在那里查看并从中拉出所需的任何东西。和/或仅来自file源的婴儿床代码。

更新:
请注意,在Linux上,文件可以同时是可执行文件和共享库。
一个示例是/lib/libc.so.6(可以执行的共享库)。
另一个示例:任何使用-pie标志构建的可执行文件都可以用作共享库。有关详细信息,请参见此答案。


使用file工具(对于Linux和Mac OS)。


编写一个程序,尝试加载DLL-如果成功,则为一个:)

编辑:好吧,这对于可执行文件也可能成功:-/