Outlook-Redemption 问题与 Outlook 32 位在 64 位机器上

use*_*752 1 32bit-64bit outlook-redemption

我在兑换时遇到问题,因为 Outlook 32 位可以安装在 64 位机器上。RedemptionLoader 不能确定安装在 64 位机器上的 Outlook 的位版本。有没有人遇到过这个?

小智 5

问题是您不能在 64 位进程中使用 32 位 DLL。但是经过长时间的搜索,我找到了一种解决方法。可以在 32 位 DllHost.exe 进程中运行 32 位 Redemption-DLL。现在您可以通过 x64 或 AnyCPU 应用程序访问此 DllHost.exe*32,因为这是可能的。

这听起来很复杂,但相对简单。

首先在系统上注册您的 Redemption.dll (x86)。我已经通过以下方式做到了:

regsvr32.exe "C:\Program Files (x86)\Redemption\Redemption.dll"
Run Code Online (Sandbox Code Playgroud)

如果您在未注册 Redemption.dll 的情况下启动您的应用程序,您将收到如下异常:

COMException: Retrieving the COM class factory for component with CLSID {29AB7A12-B531-450E-8F7A-EA94C2F3C05F} failed due to the following error: 80040154 Klasse nicht registriert (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
Run Code Online (Sandbox Code Playgroud)

注册 32 位 DLL 后,您需要向注册表添加一些键和值。

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Wow6432Node\AppID\{29AB7A12-B531-450E-8F7A-EA94C2F3C05F}]
"DllSurrogate"=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\{29AB7A12-B531-450E-8F7A-EA94C2F3C05F}]
"AppID"="{29AB7A12-B531-450E-8F7A-EA94C2F3C05F}"

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\AppID\{29AB7A12-B531-450E-8F7A-EA94C2F3C05F}]
"DllSurrogate"=""
Run Code Online (Sandbox Code Playgroud)

启动应用程序时现在发生的情况是系统启动了一个 DllHost 进程,该进程在 x86 环境中加载 Redemption.dll。启动 x64 应用程序后,您将在任务管理器上看到dllhost.exe*32带有COM 代理的描述。现在,对 Redemption.dll 的所有访问都将路由到 DllHost。

当然,您必须仅在带有 x86 Outlook 客户端的 x64 系统上添加这些注册表项;)

希望这会帮助你们中的一些人:)