Как определить, является ли DLL COM или.NET?

У меня есть updater программа, вытянутые файлы с сервера смешал vb6 dll и .net DLLs в одном каталоге.

Как определить, является ли dll COM один? (таким образом, я могу вызвать regsvr32 к нему из updater программы)

8
задан DaveInCaz 1 April 2019 в 15:49
поделиться

3 ответа

Думаю, один из способов сделать это - попробовать загрузить файл с помощью System.Reflection.Assembly.LoadFile (). Если вы получили исключение BadImageFormatException, это недействительная сборка .NET. Возможно, есть более изящный способ сделать это, но он должен работать.

http://msdn.microsoft.com/en-us/library/b61s44e8.aspx

6
ответ дан 5 December 2019 в 12:07
поделиться

Чтобы сделать это формально, вы можете проинспектировать PE, чтобы узнать больше о том, какой тип материала экспортирует каждая dll. На MSDN есть довольно интересная статья, в которой рассказывается об этой структуре. Если вы понимаете структуру, вы можете определить связи с .Net (и, следовательно, отсутствие указания на чистую COM dll).

5
ответ дан 5 December 2019 в 12:07
поделиться

Почему бы просто не позвонить в регсвр всем им. Если они зарегистрируются, то хорошо, если нет - ничего страшного.

Хотя, наверное, лучше написать программу установки, которая будет знать, какие из них какие, и делать правильные действия для каждой.

EDIT

Если вы беспокоитесь о "выдаче ошибок", не волнуйтесь.

Смотрите это использование

Вы можете подавлять сообщения. (/s)

3
ответ дан 5 December 2019 в 12:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: