.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

現象

次のような状況で問題が発生します。

このシナリオでは、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 の更新プログラムをインストールします。

回避策

この問題を回避するには、.NET Framework 4.7 をアンインストールして再インストールします。 または、影響を受ける WPF タッチ コンポーネントを一時的に無効にします。

.NET Framework 4.7 をアンインストールする

  1. コントロール パネルで、[プログラム] カテゴリの [プログラムのアンインストール] を選択します。

  2. プログラムの一覧で、[Microsoft .NET Framework 4.7] を見つけて選択し、[アンインストール/変更] を選択します。

  3. .NET Framework 4.7 メンテナンス ウィザードで、このコンピューターから [Remove.NET Framework 4.7] を選択し、[次へ] を選択します。

  4. 次の警告ウィンドウが表示されたら、[ 続行] を選択します。

    Microsoft .NET Frameworkをアンインストールすると、一部のアプリケーションが機能しなくなる可能性があることを示す警告ウィンドウのスクリーンショット。

  5. アンインストールが完了するまで待ちます。

.NET Framework 4.7 を再インストールする

Microsoft .NET Framework 4.7 を再インストールするには、次のいずれかの方法を使用します。

方法 1: .NET Framework 4.7 を手動でダウンロードしてインストールする

  1. .NET Framework 4.7 の Web インストーラーをダウンロードします。
  2. .NET Framework 4.7 をインストールします。

方法 2: Windows Updateを使用して.NET Framework 4.7 をインストールする

  1. Windows Updateを開きます。

  2. Windows Updateから [オンラインで更新プログラムを確認する] を選択します。

  3. 更新プログラムの検索が完了したら、[オプション] 更新 [使用可能] を選択します。

    使用可能なオプションの更新プログラムのリンクを示すWindows Update パネルのスクリーンショット。

  4. [Microsoft .NET Framework 4.7 for Windows 7 および Windows Server 2008 R2] を見つけて選択し、[OK] を選択します

    Microsoft .NET Framework 4.7 for Windows 7 と Windows Server 2008 R2 for x64 (KB3186497) が選択されているオプションの更新プログラムを示すスクリーンショット。

  5. インストールが完了するまで待ちます。

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 の既知の問題」を参照してください。