現象
次のような状況で問題が発生します。
-
Microsoft .NET Framework 3.5 Service Pack 1 (SP1) ベースの Windows Presentation Foundation (WPF) アプリケーションを実行します。
-
WPF アプリケーションは、ハードウェア レンダリング パイプラインを使用します。
-
アプリケーションは、1 つ以上のカスタム WPF アドイン コンポーネントを含む多数のアプリケーション ドメインを読み込んでアンロードします。
このシナリオでは、アプリケーションで System.Runtime.InteropServices.COMException 例外が発生し、アプリケーションがクラッシュします。
解決方法
修正プログラムの情報
サポートされている修正プログラムは Microsoft から入手できます。 ただし、この修正プログラムは、この記事で説明されている問題のみを修正することを目的としています。 この修正プログラムは、この特定の問題が発生しているシステムにのみ適用します。 この修正プログラムは、追加のテストを受け取る可能性があります。 したがって、この問題の影響を深刻に受けない場合は、この修正プログラムを含む次のソフトウェア更新プログラムを待機することをお勧めします。 MSDN コード ギャラリーからこの修正プログラムをダウンロードするには、次の Microsoft Web サイトを参照してください。
http://code.msdn.microsoft.com/KB2276690 注 MSDN コード ギャラリーには、修正プログラムが利用可能な言語が表示されます。 言語が一覧に表示されない場合は、コード ギャラリー リソース ページがその言語で使用できないためです。 注 追加の問題が発生した場合、またはトラブルシューティングが必要な場合は、別のサービス要求を作成する必要がある場合があります。 通常のサポート コストは、この特定の修正プログラムに該当しない追加のサポートの質問と問題に適用されます。 Microsoft カスタマー サービスとサポートの電話番号の完全な一覧、または別のサービス要求を作成するには、次の Microsoft Web サイトを参照してください。
http://support.microsoft.com/contactus/?ws=support
必要条件
この修正プログラムを適用するには、.NET Framework 3.5 Service Pack 1 (SP1) がインストールされている必要があります。
再起動の必要性
この修正プログラムを適用した後、コンピューターを再起動する必要はありません。
修正プログラムの置き換えに関する情報
この修正プログラムは、他の修正プログラムを置き換えるものではありません。
ファイル情報
この修正プログラムの英語版には、次の表に示すファイル属性 (またはそれ以降のファイル属性) があります。 これらのファイルの日付と時刻は世界協定時 (UTC) で記載されています。 ファイル情報に表示される時刻は、ローカル時刻に変換されています。 UTC と現地時刻の違いを見つけるには、コントロール パネルの [日付と時刻] 項目の [タイム ゾーン] タブを使用します。
サポートされているすべての x86 ベースバージョンの Windows Server 2003 および Windows XP
|
File name |
ファイル バージョン |
ファイル サイズ |
日付 |
Time |
Platform |
|---|---|---|---|---|---|
|
Presentationcore.dll |
3.0.6920.4033 |
4,218,880 |
2010 年 9 月 2 日 |
01:32 |
x86 |
|
Presentationframework.dll |
3.0.6920.4033 |
5,279,744 |
2010 年 9 月 2 日 |
01:28 |
x86 |
|
Presentationhost.exe |
4.0.40305.0 |
295,264 |
2010 年 9 月 2 日 |
01:28 |
x86 |
|
Presentationhostdll.dll |
3.0.6920.4033 |
130,408 |
2010 年 9 月 2 日 |
01:32 |
x86 |
|
Presentationhostproxy.dll |
4.0.31106.0 |
99,176 |
2010 年 9 月 2 日 |
01:32 |
x86 |
|
Windowsbase.dll |
3.0.6920.4033 |
1,249,280 |
2010 年 9 月 2 日 |
01:32 |
x86 |
サポートされているすべての x64 ベースバージョンの Windows Server 2003 および Windows XP
|
File name |
ファイル バージョン |
ファイル サイズ |
日付 |
Time |
Platform |
|---|---|---|---|---|---|
|
Presentationcore.dll |
3.0.6920.4033 |
3,997,696 |
2010 年 9 月 2 日 |
00:53 |
x64 |
|
Presentationframework.dll |
3.0.6920.4033 |
4,636,672 |
2010 年 9 月 2 日 |
00:48 |
x64 |
|
Presentationhost.exe |
4.0.31106.0 |
320,352 |
2010 年 9 月 2 日 |
00:48 |
x64 |
|
Presentationhostdll.dll |
3.0.6920.4033 |
171,368 |
2010 年 9 月 2 日 |
00:53 |
x64 |
|
Presentationhostproxy.dll |
4.0.31106.0 |
109,928 |
2010 年 9 月 2 日 |
00:53 |
x64 |
|
Windowsbase.dll |
3.0.6920.4033 |
1,110,016 |
2010 年 9 月 2 日 |
00:53 |
x64 |
サポートされているすべての x86 ベースバージョンの Windows Vista Service Pack 2 (SP2) および Windows Server 2008 Service Pack 2 (SP2)
|
File name |
ファイル バージョン |
ファイル サイズ |
日付 |
Time |
Platform |
|---|---|---|---|---|---|
|
Presentationcore.dll |
3.0.6920.4033 |
4,218,880 |
2010 年 9 月 9 日 |
10:52 |
x86 |
|
Presentationfontcache.exe.config |
該当なし |
161 |
2009 年 4 月 3 日 |
2,125 |
該当なし |
|
Wpfgfx_v0300.dll |
3.0.6920.4003 |
1,736,024 |
2009 年 6 月 17 日 |
03:08 |
x86 |
|
Presentationframework.dll |
3.0.6920.4033 |
5,279,744 |
2010 年 9 月 9 日 |
10:52 |
x86 |
|
Presentationhostdll.dll |
3.0.6920.4033 |
130,408 |
2010 年 9 月 9 日 |
10:52 |
x86 |
|
Windowsbase.dll |
3.0.6920.4033 |
1,249,280 |
2010 年 9 月 9 日 |
10:52 |
x86 |
サポートされているすべての x64 ベースバージョンの Windows Vista SP2 および Windows Server 2008 SP2
|
File name |
ファイル バージョン |
ファイル サイズ |
日付 |
Time |
Platform |
|---|---|---|---|---|---|
|
Presentationcore.dll |
3.0.6920.4033 |
3,997,696 |
2010 年 9 月 9 日 |
10:52 |
x64 |
|
Presentationfontcache.exe.config |
該当なし |
161 |
2009 年 4 月 3 日 |
20:58 |
該当なし |
|
Wpfgfx_v0300.dll |
3.0.6920.4003 |
2,254,168 |
2009 年 6 月 17 日 |
03:08 |
x64 |
|
Presentationframework.dll |
3.0.6920.4033 |
4,636,672 |
2010 年 9 月 9 日 |
10:52 |
x64 |
|
Presentationhostdll.dll |
3.0.6920.4033 |
171,368 |
2010 年 9 月 9 日 |
10:52 |
x64 |
|
Windowsbase.dll |
3.0.6920.4033 |
1,110,016 |
2010 年 9 月 9 日 |
10:52 |
x64 |
サポートされているすべての x86 ベースバージョンの Windows 7
|
File name |
ファイル バージョン |
ファイル サイズ |
日付 |
Time |
Platform |
|---|---|---|---|---|---|
|
Presentationcore.dll |
3.0.6920.5012 |
4,218,880 |
2010 年 9 月 11 日 |
01:29 |
x86 |
|
Presentationfontcache.exe.config |
該当なし |
161 |
2009 年 6 月 10 日 |
2,114 |
該当なし |
|
Wpfgfx_v0300.dll |
3.0.6920.4902 |
1,736,536 |
2009 年 6 月 10 日 |
2,114 |
x86 |
|
Presentationframework.dll |
3.0.6920.5012 |
5,279,744 |
2010 年 9 月 11 日 |
01:29 |
x86 |
|
Presentationhostdll.dll |
3.0.6920.5012 |
130,408 |
2010 年 9 月 11 日 |
01:29 |
x86 |
|
Presentationhost.exe |
4.0.31106.0 |
295,264 |
2010 年 9 月 11 日 |
01:29 |
x86 |
|
Presentationhostproxy.dll |
4.0.31106.0 |
99,176 |
2010 年 9 月 11 日 |
01:29 |
x86 |
|
Windowsbase.dll |
3.0.6920.5012 |
1,253,376 |
2010 年 9 月 11 日 |
01:29 |
x86 |
サポートされているすべてのバージョンの Windows 7 および Windows Server 2008 R2 (x64 ベース)
|
File name |
ファイル バージョン |
ファイル サイズ |
日付 |
Time |
Platform |
|---|---|---|---|---|---|
|
Presentationcore.dll |
3.0.6920.5012 |
3,997,696 |
2010 年 9 月 11 日 |
01:28 |
x64 |
|
Presentationfontcache.exe.config |
該当なし |
161 |
2009 年 6 月 10 日 |
20:30 |
該当なし |
|
Wpfgfx_v0300.dll |
3.0.6920.4902 |
2,255,176 |
2009 年 6 月 10 日 |
20:30 |
x64 |
|
Presentationframework.dll |
3.0.6920.5012 |
4,636,672 |
2010 年 9 月 11 日 |
01:28 |
x64 |
|
Presentationhostdll.dll |
3.0.6920.5012 |
171,368 |
2010 年 9 月 11 日 |
01:28 |
x64 |
|
Presentationhost.exe |
4.0.31106.0 |
320,352 |
2010 年 9 月 11 日 |
01:28 |
x64 |
|
Presentationhostproxy.dll |
4.0.31106.0 |
109,928 |
2010 年 9 月 11 日 |
01:28 |
x64 |
|
Windowsbase.dll |
3.0.6920.5012 |
1,114,112 |
2010 年 9 月 11 日 |
01:28 |
x64 |
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
回避策
この問題を回避するには、ハードウェア レンダリング パイプラインを無効にしてから、ソフトウェア レンダリング パイプラインを有効にします。 ハードウェア レンダリング パイプラインを無効にし、ソフトウェア レンダリング パイプラインを有効にするには、次のいずれかの方法を使用します。
-
System.Windows.Interop.RenderMode 列挙型を設定します。WPF ウィンドウが読み込まれるときにソフトウェア レンダリング パイプラインを有効にするために System.Windows.Interop.RenderMode 列挙体を設定するコード例を次に示します。
private void OnLoaded(object sender, EventArgs e){System.Windows.Interop.HwndSource hwndSource = PresentationSource.FromVisual(this) as System.Windows.Interop.HwndSource;System.Windows.Interop.HwndTarget hwndTarget = hwndSource.CompositionTarget; hwndTarget.RenderMode = System.Windows.Interop.RenderMode.SoftwareOnly;}
-
DisableHWAcceleration レジストリ キーを設定します。重要 このセクション、メソッド、またはタスクには、レジストリを変更する方法を示す手順が含まれています。 レジストリを誤って変更すると、深刻な問題が発生することがあります。 レジストリを変更する際には十分に注意してください。 万一に備えて、編集の前にレジストリをバックアップしてください。 問題が発生した場合でも、レジストリを復元できます。 レジストリのバックアップ方法および復元方法の詳細を参照するには、以下のサポート技術情報番号をクリックしてください。
322756 Windows でレジストリをバックアップおよび復元する方法Warning このメソッドは、コンピューター上のすべての WPF アプリケーションのハードウェア レンダリング パイプラインを無効にします。 したがって、このメソッドは通常、お客様が環境を制御し、すべての WPF アプリケーションの効果を気にしない場合を除いて推奨されません。
-
[ スタート] をクリックし、[ 実行] をクリックし、「regedit」と入力し、Enter キーを押します。
-
次のレジストリ サブキーを見つけてクリックします。
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Avalon.Graphics
-
DisableHWAcceleration レジストリ エントリの値を 1 に設定します。注 DisableHWAcceleration レジストリ エントリが存在しない場合は、レジストリ サブキーを右クリックし、[新規] をポイントし、[ 文字列値 ] をクリックして新しいレジストリ エントリを作成します。 新しいレジストリ エントリの名前に「 DisableHWAcceleration 」と入力し、[ DisableHWAcceleration] をダブルクリックし、 DisableHWAcceleration 値データを 1 に変更します。
-
レジストリ エディターを終了します。
-
詳細情報
ソフトウェア レンダリング パイプラインの詳細については、次の Microsoft Developer Network (MSDN) Web サイト:ソフトウェア レンダリング パイプラインに関する全般的な情報を参照してください WPF レンダリングのレジストリ設定の詳細については、次の MSDN Web サイト:WPF レンダリングのレジストリ設定に関する一般的な情報を参照してくださいSystem.Windows.Interop.RenderMode 列挙体の詳細については、次の MSDN web サイトを参照してください:"System.Windows.Interop.RenderMode" 列挙体に関する一般的な情報