共用方式為


強式名稱案例

更新:2007 年 11 月

下列案例概要說明使用強式名稱簽署組件的程序,以及稍後使用該名稱來參考組件。

  1. 組件 A 是以下列其中一個方法來建立強式名稱:

    • 使用支援建立強式名稱的開發環境,例如 Visual Studio 2005。

    • 使用強式名稱工具 (Sn.exe) 建立密碼編譯金鑰組,並使用命令列編譯器或組件連結器 (Al.exe) 將該金鑰組指派給組件。Windows 軟體開發套件 (SDK) 提供 Sn.exe 和 Al.exe。

  2. 開發環境或工具會簽署檔案雜湊,該檔案含有組件資訊清單和開發人員私密金鑰。這個數位簽章將儲存在含有組件 A 資訊清單的可移植執行檔 (PE) 中。

  3. 組件 B 是組件 A 的消費者。組件 B 資訊清單的參考區段包括代表組件 A 公開金鑰的語彙基元 (Token)。語彙基元是完整公開金鑰的一部分,可用來儲存空間 (而非使用金鑰本身)。

  4. Common Language Runtime 會在組件被放入全域組件快取時,驗證強式名稱簽章。在 Run Time 階段使用強式名稱繫結時,Common Language Runtime 會比對儲存在組件 B 資訊清單的金鑰和用來產生組件 A 強式名稱的金鑰。如果通過 .NET Framework 安全性檢查而且成功完成繫結,組件 B 便可確保組件 A 的位元不會被更改,而且這些位元的確是由組件 A 的開發人員撰寫。

注意事項:

這個案例並未處理信任問題。除了強式名稱以外,組件還可帶有完整的 Microsoft Authenticode 簽章。Authenticode 簽章包括建立信任的憑證。請注意,強式名稱不要求使用這種方式來簽署程式碼,這點非常重要。事實上,用來產生強式名稱簽章的金鑰並非一定要使用用來產生 Authenticode 簽章的相同金鑰。

略過信任組件的簽章驗證

從 .NET Framework 3.5 版 Service Pack 1 開始,將組件載入至完全信任的應用程式定義域 (例如 MyComputer 區域的預設應用程式定義域) 時,不會驗證強式名稱簽章。這稱為強式名稱略過功能。在完全信任的環境中,已簽署、完全信任的組件要求 StrongNameIdentityPermission 永遠會成功,不論其簽章為何。強式名稱略過功能在這種情況下可避免完全信任組件進行強式名稱簽章驗證的不必要額外負擔,讓組件更快載入。

略過功能適用於使用強式名稱簽署且具有下列特性的任何組件:

個別應用程式或電腦可停用這項功能。請參閱 HOW TO:停用強式名稱略過功能

請參閱

參考

強式名稱工具 (Sn.exe)

組件連結器 (Al.exe)

其他資源

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