共用方式為


HOW TO:停用強式名稱略過功能

更新: 2008 年 7 月

從 .NET Framework 3.5 版 Service Pack 1 (SP1) 開始,將組件載入至完全信任的 AppDomain 物件 (例如 MyComputer 區域的預設 AppDomain) 時,不會驗證強式名稱 (Strong Name) 簽章。這稱為強式名稱略過功能。在完全信任的環境中,已簽署、完全信任的組件 (Assembly) 要求 StrongNameIdentityPermission 永遠會成功,不論其簽章為何。唯一的限制是組件必須完全受信任,因為它的區域是完全受信任的。在這些情況下,由於強式名稱並非決定性因素,因此沒有必要進行驗證。略過強式名稱簽章的驗證可大幅提升效能。

略過功能會套用至任何未延遲簽署的完全信任組件,以及從其 ApplicationBase 屬性所指定之目錄載入至任何完全信任 AppDomain 的完全信任組件。

您可以設定登錄機碼值,為電腦上的所有應用程式覆寫略過功能。若要覆寫單一應用程式的設定,則可以使用應用程式的組態檔。如果已經透過登錄機碼停用略過功能,則無法為單一應用程式重新啟用略過功能。

當您覆寫略過功能時,系統只會驗證強式名稱是否正確,而不會檢查 StrongNameIdentityPermission。如果您要確認特定的強式名稱,則必須另外執行檢查。

重要事項:

強制強式名稱驗證的能力會根據登錄機碼而定,如下列程序所述。如果執行應用程式的帳戶沒有存取控制清單 (ACL) 使用權限來存取該登錄機碼,設定就無效。您必須確定此機碼已經設定 ACL 權限,所有組件都可以讀取它。

若要停用所有應用程式的強式名稱略過功能

  • 在 32 位元電腦上,在系統登錄的 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework 機碼底下建立子機碼。使用機碼名稱 AllowStrongNameBypass,並將 DWORD 值設為 0。

    -或-

  • 在 64 位元電腦上,在系統登錄的 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework 機碼底下建立子機碼。使用機碼名稱 AllowStrongNameBypass,並將 DWORD 值設為 0。在 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework 機碼底下建立相同的子機碼。

若要停用單一應用程式的強式名稱略過功能

  1. 開啟或建立應用程式組態檔。

    如需這個檔案的詳細資訊,請參閱應用程式組態檔

  2. 加入下列項目:

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

您可以移除組態檔設定或將屬性 (Attribute) 設定為 "true",藉此還原應用程式的略過功能。

注意事項:

只有在電腦啟用略過功能時,您才能開啟和關閉應用程式的強式名稱驗證。如果電腦關閉略過功能,則所有應用程式都必須驗證強式名稱,並且您無法設定單一應用程式略過驗證。

請參閱

參考

強式名稱工具 (Sn.exe)

<bypassTrustedAppStrongNames> 項目

其他資源

建立和使用強式名稱的組件

變更記錄

日期

記錄

原因

2008 年 7 月

加入主題。

SP1 功能變更。