.NET Framework 4.7 が Windows 7 または Windows Server 2008 R2 にインストールされた後の WPF アプリケーションからの COMException
この記事は、Windows Presentation Framework (WPF) アプリケーションで発生する問題 System.Runtime.InteropServices.COMException
を解決するのに役立ちます。
元の製品バージョン: .NET Framework 4.7、Windows 7 Service Pack 1、Windows Server 2008 R2 Service Pack 1
元の KB 番号: 4033488
現象
次のような状況で問題が発生します。
- Microsoft Windows 7 Service Pack 1 (SP1) または Windows Server 2008 R2 SP1 を実行しているタッチ デバイスがあります。
- 一部の WPF アプリケーションは、デバイス上で実行されています。
- .NET Framework 4.6、4.6.1、4.6.2 (KB 4104606) の品質ロールアップの 2017 年 5 月のプレビューをデバイスにインストールします。
- 次に、.NET Framework 4.7 をデバイスにインストールします。
このシナリオでは、WPF アプリケーションが失敗し、エラー メッセージが生成されます。
例外の種類: System.TypeInitializationException
メッセージ: 'MS の型初期化子。Win32.Penimc.UnsafeNativeMethods' が例外をスローしました。
InnerException: System.Runtime.InteropServices.COMException
内部例外のメッセージ: クラスが登録されていません (HRESULT からの例外: 0x80040154 (REGDB_E_CLASSNOTREG))
解決方法
この問題を解決するには、2017 年 7 月 25 日、Microsoft Update カタログの .NET Framework 4.6、4.6.1、4.6.2、4.7 の更新プログラムをインストールします。
Windows 7 SP1 および Windows Server 2008 R2 SP1
Microsoft Update カタログからスタンドアロン パッケージをダウンロードします。 この更新プログラムの詳細については、「 KB 4035510」を参照してください。
Windows 8.1 and Windows Server 2012 R2
Microsoft Update カタログからスタンドアロン パッケージをダウンロードします。 この更新プログラムの詳細については、「 KB 4035509」を参照してください。
Windows Server 2012
Microsoft Update カタログからスタンドアロン パッケージをダウンロードします。 この更新プログラムの詳細については、「 KB 4035508」を参照してください。
回避策
この問題を回避するには、.NET Framework 4.7 をアンインストールして再インストールします。 または、影響を受ける WPF タッチ コンポーネントを一時的に無効にします。
.NET Framework 4.7 をアンインストールする
コントロール パネルで、[プログラム] カテゴリの [プログラムのアンインストール] を選択します。
プログラムの一覧で、[Microsoft .NET Framework 4.7] を見つけて選択し、[アンインストール/変更] を選択します。
.NET Framework 4.7 メンテナンス ウィザードで、このコンピューターから [Remove.NET Framework 4.7] を選択し、[次へ] を選択します。
次の警告ウィンドウが表示されたら、[ 続行] を選択します。
アンインストールが完了するまで待ちます。
.NET Framework 4.7 を再インストールする
Microsoft .NET Framework 4.7 を再インストールするには、次のいずれかの方法を使用します。
方法 1: .NET Framework 4.7 を手動でダウンロードしてインストールする
- .NET Framework 4.7 の Web インストーラーをダウンロードします。
- .NET Framework 4.7 をインストールします。
方法 2: Windows Updateを使用して.NET Framework 4.7 をインストールする
Windows Updateを開きます。
Windows Updateから [オンラインで更新プログラムを確認する] を選択します。
更新プログラムの検索が完了したら、[オプション] 更新 [使用可能] を選択します。
[Microsoft .NET Framework 4.7 for Windows 7 および Windows Server 2008 R2] を見つけて選択し、[OK] を選択します。
インストールが完了するまで待ちます。
WPF アプリケーションのタッチとスタイラスのサポートを一時的に無効にする
タッチとスタイラスのサポートを一時的に無効にするには、次のいずれかの方法を使用します。
次のエントリを アプリケーション構成 に追加して、WPF アプリケーションのタッチとスタイラスのサポートを無効にします。
<runtime> <AppContextSwitchOverrides value=" Switch.System.Windows.Input.Stylus.DisableStylusAndTouchSupport=true"/> </runtime>
次のレジストリ サブキーを適用して、WPF アプリケーションのタッチとスタイラスのサポートをコンピューター全体で無効にします。
警告
レジストリ エディタや他の方法を使用してレジストリを変更する際、適切に変更しないと重大な問題を引き起こす可能性があります。 場合によっては、オペレーティング システムの再インストールが必要になります。 マイクロソフトは、このような問題の解決に関して、一切責任を負わないものとします。 レジストリの変更はユーザー自身の責任において行ってください。
- 場所:
HKEY_LOCAL_MACHINE\Software\[Wow6432Node\]Microsoft\.NETFramework\AppContext\Switch.System.Windows.Input.Stylus
- 名前:
DisableStylusAndTouchSupport
- 型:String
- 値:
true
- 場所:
関連情報
.NET Framework 4.7 の既知の問題の詳細については、「.NET Framework 4.7 の既知の問題」を参照してください。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示