我正在使用[DllImport]加载本机第三方库的进程内wmi提供程序。 dll位置固定为c:\ mydllpath。在加载dll之前,我在提供程序的Bind()方法中将当前目录设置为dll位置。在64位操作系统上的进程内wmi提供程序(32位)中加载本机DLL(32位)
Environment.CurrentDirectory = Environment.ExpandEnvironmentVariables(“%SystemDrive%”)+“\ mydllpath”;
Provider是为'Any CPU'构建的,使用gacutil和installexe安装。
的Gacutil.exe /如果myprovider.dll
installutil.exe myprovider.dll
它在所有32位Windows平台上工作的罚款。但在64位平台(使用Windows 7 64位试用版)时,当我从WMIC进行测试时,它不工作。但是当我使用WMI Code创建器进行测试时,它工作正常。
调试后,我发现它是抛出以下错误。
System.BadImageFormatException 附加信息:试图加载格式不正确的程序。 (来自HRESULT的异常:0x8007000B)
从互联网搜索帮助后,有人建议为x86构建提供程序。但是,供应商,86是给另一个错误,如建...
错误: 代码= 0x80041013 说明=提供程序加载失败 设施= WMI
我也尝试加载机DLL(实际上2名的dll,和一个sys文件)使用/ linkref命令行开关,但因为无法使用/ linkref加载sys文件而失败。
我写了一个测试C#客户端应用程序,并保持所有文件在相同的路径,它工作正常。 我希望我缺少64位安装的一些配置。
任何帮助将非常感激,非常感谢提前!
其他可能性......? :( – Muthukkumaran 2011-03-30 13:45:30