Я работаю с внутрипроцессным wmi-провайдером, который загружает собственную стороннюю библиотеку, используя [DllImport].Расположение dll фиксируется в c: \ mydllpath.Перед загрузкой dll я устанавливаю текущий каталог в dll loaction, в методе провайдера Bind ().
Environment.CurrentDirectory = Environment.ExpandEnvironmentVariables ("% SystemDrive%") + "\ mydllpath";
Поставщик построен для «Любого ЦП», установлен с использованием gacutil и installexe.
gacutil.exe / if myprovider.dll
installutil.exe myprovider.dll
Работает нормально на всех 32-битных платформах Windows.Но на 64-битной платформе (пробовал с Windows 7 64-битной) она не работает, когда я тестирую из WMIC.Но когда я тестировал с помощью WMI Code Creator, он работал нормально.
После отладки я обнаружил, что выдает следующее сообщение об ошибке.
System.BadImageFormatException Дополнительная информация: Была предпринята попытка загрузить программус неверным форматом.(Исключение из HRESULT: 0x8007000B)
После поиска справки из Интернета было предложено создать провайдер для x86.Но провайдер, построенный на x86, выдает еще одну ошибку, например ...
ОШИБКА: Код = 0x80041013 Описание = Ошибка загрузки провайдера. Средство = WMI
Я также пытался загрузить собственные библиотеки DLL (фактически 2 библиотеки DLL).и файл sys) с использованием параметра командной строки / linkref, но не удалось из-за невозможности загрузить файл sys с помощью /linkref.
Я написал тестовое клиентское приложение C # и сохранил все файлы по одному пути, это былоработает нормально.Я надеюсь, что мне не хватает некоторых конфигураций для 64-битной установки.
Любая помощь будет очень признательна и очень благодарна заранее!