64位计算机上Outlook 32位的Outlook-Redemption问题

时间:2014-01-09 18:37:26

标签: 32bit-64bit outlook-redemption

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

3 个答案:

答案 0 :(得分:4)

问题是您不能在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"

如果您在未注册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)).

注册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"=""

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

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

希望这会对你们中的一些人有所帮助:)。

答案 1 :(得分:1)

RedemptionLoader并不能确定Outlook的位数,因为它对你没有任何好处:它决定了调用进程的位数,并加载了相应版本的Redemption(32 vs 64 bit),但这可能引发如果您的进程/赎回的位数与Outlook位数不同,则会出错。 64位进程无法加载32位dll。

有关详细信息,请参阅http://www.dimastr.com/redemption/faq.htm#ErrorCreatingRedemptionObject

答案 2 :(得分:0)

可以在64位PowerShell会话中加载32位DLL。有关详细信息,请参阅我的answer here

简而言之,您可以使用加载<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" style="@style/ContentBody" > <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:id="@+id/progress" android:layout_gravity="center"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/import_progress_title" style="@style/TxtTitle" /> <TextView android:layout_width="410dp" android:layout_height="wrap_content" android:text="@string/import_progress_text" android:singleLine="false" android:maxLines="4" android:ellipsize="end" style="@style/TxtDefault" /> <ProgressBar style="?android:attr/progressBarStyleHorizontal" android:layout_width="410dp" android:layout_height="wrap_content" android:id="@+id/progress_bar_view" android:progress="2"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/import_progress_start" android:id="@+id/progress_text_view" style="@style/TxtSecondary" /> </LinearLayout> </FrameLayout> 版本

Start-Job -RunAs32