.NET Framework バージョン 3.5 Service Pack 1 (SP1) 以降では、アセンブリが完全信頼AppDomain オブジェクト (AppDomain ゾーンの既定のMyComputerなど) に読み込まれると、厳密な名前の署名は検証されません。 これは、強名バイパス機能と呼ばれます。 完全信頼環境では、署名に関係なく、署名された完全信頼アセンブリに対する StrongNameIdentityPermission の要求は常に成功します。 そのゾーンが完全に信頼されているため、アセンブリ自体も完全に信頼されている必要があります。 厳密な名前はこれらの条件下では決定要因ではないため、検証する理由はありません。 厳密な名前の署名の検証をバイパスすると、パフォーマンスが大幅に向上します。
バイパス機能は、遅延署名されていない完全信頼アセンブリに適用され、AppDomain プロパティで指定されたディレクトリから完全信頼ApplicationBaseに読み込まれます。
レジストリ キーの値を設定することで、コンピューター上のすべてのアプリケーションのバイパス機能をオーバーライドできます。 アプリケーション構成ファイルを使用して、1 つのアプリケーションの設定をオーバーライドできます。 レジストリ キーによって無効にされている場合、1 つのアプリケーションのバイパス機能を元に戻すことはできません。
バイパス機能をオーバーライドすると、厳密な名前は正確さについてのみ検証されます。 StrongNameIdentityPermissionのチェックは行われません。 特定の厳密な名前を確認する場合は、そのチェックを個別に実行する必要があります。
Important
厳密な名前の検証を強制する機能は、次の手順で説明するようにレジストリ キーによって異なります。 アプリケーションが、そのレジストリ キーにアクセスするためのアクセス制御リスト (ACL) アクセス許可を持たないアカウントで実行されている場合、この設定は無効です。 すべてのアセンブリで読み取ることができるように、このキーに対して ACL 権限が構成されていることを確認する必要があります。
すべてのアプリケーションでストロングネームのバイパス機能を無効にする
32 ビット コンピューターでは、システム レジストリで、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework キーの下に
AllowStrongNameBypassという名前の値が 0 の DWORD エントリを作成します。64 ビット コンピューターのシステム レジストリで、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework と HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework キーの下に
AllowStrongNameBypassという名前の値を持つ DWORD エントリを作成します。
1 つのアプリケーションに対してストロングネーム バイパス機能を無効にする
アプリケーション構成ファイルを開くか作成します。
このファイルの詳細については、「 アプリの構成」の「アプリケーション構成ファイル」セクションを参照してください。
次のエントリを追加します。
<configuration> <runtime> <bypassTrustedAppStrongNames enabled="false" /> </runtime> </configuration>
構成ファイルの設定を削除するか、属性を true に設定することで、アプリケーションのバイパス機能を復元できます。
注
コンピューターでバイパス機能が有効になっている場合にのみ、アプリケーションの厳密な名前の検証を有効または無効にすることができます。 コンピューターのバイパス機能がオフになっている場合、すべてのアプリケーションに対して厳密な名前が検証され、1 つのアプリケーションの検証をバイパスすることはできません。
こちらも参照ください
.NET