x86 Assembly in x64 Appdomain - x86 exe工作,x86 dll失败

本文关键字:x86 工作 dll 失败 exe Assembly in x64 Appdomain | 更新日期: 2023-09-27 18:01:15

我正在开发一个使用插件机制加载库的应用程序。通常托管应用程序作为64位应用程序运行。

到目前为止一切正常。x64程序集可以加载,AnyCPU可以加载,x86程序集失败。也就是说——直到有人想出这个主意并创建了一个x86控制台应用程序——它也可以被加载。

为什么可以从64位主机进程加载x86控制台应用程序程序集(exe),但无法加载x86库(dll)?只是为了澄清-我不是试图加载x86的dll,也不打算-只是好奇为什么它被允许加载x86应用程序。

(如果有人感兴趣,我可以附上我使用的样例代码)

x86 Assembly in x64 Appdomain - x86 exe工作,x86 dll失败

对此的回应是在不久前Microsoft Connect中给出的…但是我似乎找不到链接。

但是,我确实找到了一个线程,他们在这里用响应引用了它。

引用:

嗨。谢谢你报告这个问题。看起来你无意中发现了一个实现细节——我们没有对可执行文件使用LoadLibrary,看起来在这种情况下,它做了一个我们没有做的验证。我不能说这种差异是预期的行为,但是如果我们现在要添加一个额外的检查,我们可能会破坏某人,并且这个问题似乎没有严重到足以承担风险。