方法 : 厳密な名前のバイパス機能を無効にする
更新 : 2010 年 8 月
.NET Framework Version 3.5 Service Pack 1 (SP1) 以降、アセンブリが完全信頼の AppDomain オブジェクト (MyComputer ゾーンに既定の AppDomain など) に読み込まれている場合は、厳密な名前の署名の検証が行われなくなりました。 これは、厳密な名前のバイパス機能と呼ばれます。 完全信頼環境での StrongNameIdentityPermission の要求は、そのシグネチャに関係なく、署名された完全信頼アセンブリであれば常に成功します。 ゾーンは完全に信頼されているため、唯一の制限として、アセンブリは完全に信頼されている必要があります。 このような状況では厳密な名前は決定要因ではないため、これを検証する理由はありません。 厳密な名前の署名の検証をバイパスすることで、パフォーマンスが大幅に向上します。
バイパス機能は、ApplicationBase プロパティで指定されたディレクトリから完全信頼の AppDomain に読み込まれ、遅延署名されていないすべての完全信頼アセンブリに適用されます。
レジストリ キー値を設定することで、コンピューターのすべてのアプリケーションに対するバイパス機能をオーバーライドできます。 アプリケーションの構成ファイルを使用すると、単一アプリケーションの設定をオーバーライドできます。 レジストリ キーを使用して無効にされているアプリケーションでは、個別にバイパス機能を元に戻すことはできません。
バイパス機能をオーバーライドすると、厳密な名前が正しいかどうかだけが検証されます。StrongNameIdentityPermission に対するチェックは行われません。 特定の厳密な名前を確認するには、個別にチェックを実行する必要があります。
重要 |
---|
厳密な名前の検証を強制する機能は、次の手順で説明するように、レジストリ キーに依存します。アプリケーションが、該当のレジストリ キーへのアクセスについてアクセス制御リスト (ACL: Access Control List) アクセス許可を持っていないアカウントで実行されている場合、その設定は無効となります。ACL アクセス許可を構成し、すべてのアセンブリ用に読み取ることができるようにキーを設定する必要があります。 |
すべてのアプリケーションに対して厳密な名前のバイパス機能を無効にするには
32 ビット コンピューターでは、システム レジストリの HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework キーの下に、値が 0 の AllowStrongNameBypass という名前の DWORD エントリを作成します。
64 ビット コンピューターでは、システム レジストリの HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework キーと HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework キーの下に、値が 0 の AllowStrongNameBypass という名前の DWORD エントリを作成します。
単一のアプリケーションに対して厳密な名前のバイパス機能を無効にするには
アプリケーションの構成ファイルを開くか、または作成します。
このファイルの詳細については、「構成ファイル」の「アプリケーション構成ファイル」を参照してください。
次のエントリを追加します。
<configuration> <runtime> < bypassTrustedAppStrongNames enabled="false" /> </runtime> </configuration>
アプリケーションのバイパス機能を元に戻すには、構成ファイル設定を削除するか、属性を "true" に設定します。
メモ |
---|
アプリケーションに対して厳密な名前のバイパス機能の有効/無効を切り替えることができるのは、コンピューターでバイパス機能が有効になっている場合だけです。コンピューターでバイパス機能が無効になっている場合は、すべてのアプリケーションに対して厳密な名前が検証され、単一のアプリケーションに対する検証をバイパスすることはできません。 |
参照
参照
<bypassTrustedAppStrongNames> 要素
概念
履歴の変更
日付 |
履歴 |
理由 |
---|---|---|
2010 年 8 月 |
レジストリ エントリに関する情報を更新。 |
カスタマー フィードバック |