哪个DLL是[DllImport]加载?

Ben*_*nCr 6 .net usb dllimport

我正在使用该[DllImport]属性将本机DLL导入我的应用程序,但它加载的DLL不在本地bin文件夹中.它是从系统的其他地方加载的,但我无法解决问题.

它适用于我的开发机器,但不适用于干净机器.

我启用了Fusion日志记录,只显示了托管程序集.

我已经使用Sysinternals Process Explorer转储了这个进程,并告诉我它已进入C:\Windows\System32但我无法在Windows资源管理器中看到该文件.

值得注意的是,我正在运行64位Windows 7,但DLL只支持x86,所以我不得不强迫我的应用程序做x86.是否有某种重定向会改变从哪里加载x86文件?

DllImport是一款定制的Silicon Labs USB驱动程序.[的DllImport( "SiUSBXp.dll")]

我还使用命令提示符dir si*在System32文件夹中执行a ,文件不存在.

Dam*_*ver 4

文件系统重定向器将启动:

%windir%\System32 目录是为 64 位应用程序保留的。创建 64 位版本的 DLL 时,大多数 DLL 文件名不会更改,因此 32 位版本的 DLL 存储在不同的目录中。WOW64 通过使用文件系统重定向器隐藏了这种差异。

在大多数情况下,每当 32 位应用程序尝试访问 %windir%\System32 时,访问都会重定向到 %windir%\SysWOW64。

因此,即使该进程认为它从 加载 DLL System32,它也可能从 加载SysWOW64。是的,这些数字与您的预期是错误的。