Wie ermittelt man, ob DLL COM oder .NET ist?

8

Ich habe ein Updater-Programm, die gezogenen Dateien vom Server hat vb6 dll und .net dll in einem Verzeichnis gemischt. Wie ermittelt man, ob eine DLL eine COM ist? (so kann ich regsvr32 aus dem Updater-Programm aufrufen)

    
Hao 10.06.2010, 03:05
quelle

3 Antworten

6

Ich denke, eine Möglichkeit wäre, die Datei mit System.Reflection.Assembly.LoadFile () zu laden. Wenn Sie eine BadImageFormatException erhalten, handelt es sich nicht um eine gültige .NET-Assembly. Es gibt wahrscheinlich einen besseren Weg, dies zu tun, aber das sollte funktionieren.

Ссылка

    
Daniel Lo Nigro 10.06.2010, 03:13
quelle
5

Um dies formell zu tun, könnten Sie das PE untersuchen, um mehr darüber herauszufinden, welche Art von Zeug jede DLL exportiert. Es gibt einen ziemlich interessanten Artikel auf MSDN , der über die Struktur spricht. Wenn Sie das Setup verstehen, können Sie Links zu .Net identifizieren (und dadurch den Mangel, der eine reine COM-DLL anzeigt).

    
AJ. 10.06.2010 03:22
quelle
2

Warum regsvr nicht einfach alle anrufen? Wenn sie sich registrieren, dann ok, wenn nicht gar keine große Sache.

Es ist jedoch wahrscheinlich am besten, einen Installer zu schreiben, der weiß, welche welche sind und was das Richtige für jeden tut.

BEARBEITEN

Wenn Sie sich Sorgen machen, "Fehler zu senden", machen Sie sich keine Sorgen.

Siehe diese Verwendung

Sie können Nachrichten unterdrücken. (/ s)

    
Tim 10.06.2010 03:20
quelle

Tags und Links