2013-04-25 2 views
0

Я пишу сценарий для копирования и перемещения DLL из папки bin в сопоставленный диск, и мне нужно зарегистрировать/отменить регистрацию DLL во время процесса. Я понял, как все это сделать, но есть улов. Программа, над которой я работаю, использует библиотеки DLL VB6 COM и VB.NET .NET DLL. Я понимаю, что COM DLLs используют regsvr32.exe, а .NET DLL используют regasm.exe, но я заинтересован в программном вызове правильной функции, основанной на DLL, с которой я двигаюсь. Есть ли способ определить, какое время я использую в Powershell?Определить разницу между COM и .NET DLL в Powershell

ответ

1

Вызов

[Reflection.Assembly]::LoadFile(`mydll.dll`) 

Он должен поднять BadImageFormatException, если это не DLL .Net.

По MSDN:

«Это исключение, если формат файла динамической библиотеки (DLL-файл) или исполняемый файл (.exe файл) не соответствует формату, который ожидается в в частности, исключение возникает в следующих условиях: ...

Попытка загрузить неуправляемую библиотеку динамических ссылок или исполняемый файл (например, системную DLL-систему Windows), как если бы это было .NET Framework. Следующий пример иллюстрирует это, используя метод Assembly.LoadFile для загрузки Kernel32.dll. "

Смежные вопросы