この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン | |||
strong_name [2009/02/03 07:47] admin 削除 |
— (現在) | ||
---|---|---|---|
ライン 1: | ライン 1: | ||
- | ====== 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を施すためにはまずキーファイルを作成しなければなりません。このファイルに秘密鍵と公開鍵が格納されています。キーファイルの作成は以下の方法で行います。 | ||
- | |||
- | - スタートメニューから「Visual Studio 2005 コマンド プロンプト」を開く | ||
- | - コマンドプロンプトで"sn -k MyKey.key"を入力するとMyKey.keyが作成されます。このファイルをプロジェクトフォルダに置きます。 | ||
- | - VC2005を開き、プロジェクトのプロパティを開きます。その中のリンクノード下の詳細ノードを開きます。その中の「キーファイル」に先ほど作成したファイルを指定します。 | ||
- | |||
- | これでリンクすると、Strong Nameのついたアセンブリができます。 | ||
- | |||
- | ===== その他 ===== | ||
- | |||
- | * Strong NameのついたアセンブリはStrong Nameのついたアセンブリしか参照できません。 | ||
- | * Strong NameのついたアセンブリはGACとよばれるシステム共通アセンブリにすることができます。 | ||
- | * GACにはside-by-side技術を使って異なるヴァージョンのアセンブリを置くことができます。 |