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 系统上添加这些注册表项;)
希望这会帮助你们中的一些人:)
| 归档时间: |
|
| 查看次数: |
4230 次 |
| 最近记录: |