[DllImport]를 사용하여 원시 타사 라이브러리를로드하는 in-process wmi 공급자에서 작업 중입니다. dll 위치는 c : \ mydllpath로 고정됩니다. dll을로드하기 전에 공급자의 Bind() 메소드에서 현재 디렉토리를 dll loaction으로 설정했습니다.64 비트 OS에서 in-process wmi provider (32 비트)의 native dll (32 비트)로드
Environment.CurrentDirectory = Environment.ExpandEnvironmentVariables ("% SystemDrive %") + "\ mydllpath";
gacutil을 사용하여 설치 한 'Any CPU'및 installexe 용으로 제공됩니다.
하여 gacutil.exe/myprovider.dll
InstallUtil.exe는의 myprovider.dll
그것은 모든 32 비트 Windows 플랫폼에서 잘 작동합니다. 하지만 64 비트 플랫폼 (Windows 7 64 비트 사용)에서는 WMIC에서 테스트 할 때 작동하지 않습니다. 그러나 WMI 코드 작성자로 테스트했을 때 제대로 작동했습니다.
디버깅 후 다음 오류가 발생하는 것으로 나타났습니다.
System.BadImageFormatException 추가 정보 : 잘못된 형식의 프로그램을로드하려고했습니다. (HRESULT 예외 : 0x8007000B)
인터넷에서 도움말을 검색 한 후 x86 용 공급자를 구축하는 것이 좋습니다. 그러나 86 같은 다른 오류를주고있다 빌드 제공 ...
ERROR : 코드 = 0x80041013 설명 = 제공자로드 실패 시설 = WMI
나는 또한 네이티브 DLL을 (실제로이 DLL을로드하려고, sys 파일)을/linkref 명령 줄 스위치를 사용하지만/linkref를 사용하여 sys 파일을로드 할 수 없기 때문에 실패했습니다.
필자는 테스트 C# 클라이언트 응용 프로그램을 작성하고 모든 파일을 동일한 경로에 유지하므로 정상적으로 작동합니다. 64 비트 설치에서 일부 구성이 누락 되었기를 바랍니다.
어떤 도움을 주셔서 감사 드리며 미리 감사드립니다.
다른 가능성은 ...? : – Muthukkumaran