我遇到了兑换问题,因为Outlook 32位可以安装在64位计算机上。 RedemptionLoader不确定64位计算机上安装的Outlook的位版本。有没有人遇到过这个?
答案 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