ユーザ用ツール

サイト用ツール


サイドバー

C++/CLI

CLR

実用編

その他

clr:strong_name

以前のリビジョンの文書です


Strong Name

Strong Name(SN)はアセンブリの一意性と信頼性を保証する仕組みです。

Win32のライブラリabc.dllを配布する場合に、このファイルをそのまま配布したとすると、使う側はLoadLibraryなどを使って実行します。この場合abc.dllが本物のdllである保証はありません。他の人が作った物である可能性もあります。

COMを使ってabc.dllを配布する場合、インストールプロセスに於いて、abc.dllのRegsterServerを実行し、 abc.dllがもつGUIDをレジストリに登録します。使う側はCoCreateInstanceなどを使ってそのGUIDを指定し利用します。しかしそのGUIDはオープンであって他の人が同じGUIDを使ってそのライブラリに偽装することを防ぐことはできません。

SNは上記の問題を解決するためのしくみです。abc.dllのハッシュを秘密鍵で暗号化し、abc.dllの内部に公開鍵と電子署名(暗号化したハッシュ)を持たせます。そしてabc.dllを使うアプリapp.exeをビルドする際、abc.dllから公開鍵と電子署名を得てその情報を app.exeに埋め込みます。

VC2005でアセンブリにStrong Nameを施す

Strong Nameを施すためにはまずキーファイルを作成しなければなりません。このファイルに秘密鍵と公開鍵が格納されています。キーファイルの作成は以下の方法で行います。

  1. スタートメニューから「Visual Studio 2005 コマンド プロンプト」を開く
  2. コマンドプロンプトで“sn -k MyKey.key”を入力するとMyKey.keyが作成されます。このファイルをプロジェクトフォルダに置きます。
  3. VC2005を開き、プロジェクトのプロパティを開きます。その中のリンクノード下の詳細ノードを開きます。その中の「キーファイル」に先ほど作成したファイルを指定します。

これでリンクすると、Strong Nameのついたアセンブリができます。

その他

  • Strong NameのついたアセンブリはStrong Nameのついたアセンブリしか参照できません。
  • Strong NameのついたアセンブリはGACとよばれるシステム共通アセンブリにすることができます。
  • GACにはside-by-side技術を使って異なるヴァージョンのアセンブリを置くことができます。



/var/www/html/virtual/cppcli/data/attic/clr/strong_name.1233614725.txt.gz · 最終更新: 2013/12/23 09:07 (外部編集)