共用方式為


如何停用強名繞過功能

從 .NET Framework 3.5 Service Pack 1(SP1)版本開始,當組件載入至全信任AppDomain物件(例如MyComputer區域的預設AppDomain值)時,強名稱簽章不會被驗證。 這被稱為強名繞過功能。 在完全信任的環境中,對於已簽署的完全信任元件,StrongNameIdentityPermission 的要求都一定會成功,無論其簽署為何。 唯一的限制是該組件必須被完全信任,因為其所在的區域是完全信任的。 因為強名在這些條件下並非決定性因素,因此沒有理由去驗證。 繞過強名稱簽名的驗證,能帶來顯著的效能提升。

繞過功能適用於任何未延遲簽署且從其ApplicationBase屬性指定的目錄載入至任何全信任AppDomain的全信任組件。

你可以透過設定登錄檔鍵值來覆蓋電腦上所有應用程式的繞過功能。 你可以透過應用程式設定檔來覆蓋單一應用程式的設定。 如果註冊表金鑰已經停用了繞過功能,你就無法為單一應用程式恢復該功能。

當您覆寫繞過功能時,強名稱只會被驗證其正確性,並不檢查是否符合其他條件,例如 StrongNameIdentityPermission。 如果你想確認某個強名,必須另外進行該檢查。

這很重要

強制強名稱驗證的能力依賴於登錄檔金鑰,詳述如下程序。 如果應用程式使用的帳號沒有存取控制清單(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 鍵下,建立一個 DWORD 條目,名稱為 AllowStrongNameBypass,並將其值設為 0。

關閉單一應用程式的強名稱繞過功能

  1. 打開或建立應用程式設定檔。

    欲了解更多關於此檔案的資訊,請參閱 「配置應用程式」中的應用程式組態檔案(Application Configuration Files)章節。

  2. 請補充以下條目:

    <configuration>
      <runtime>
        <bypassTrustedAppStrongNames enabled="false" />
      </runtime>
    </configuration>
    

你可以透過移除設定檔設定或將屬性 true設為 來恢復應用程式的繞過功能。

備註

只有當電腦啟用繞過功能時,才能為應用程式開啟或關閉強名稱驗證。 如果電腦的繞過功能已被關閉,所有應用程式的強式名稱都必須經過驗證,且無法單獨繞過某一應用程式的驗證。

另請參閱