Visual Studio でアセンブリ署名を作成・登録しようとするとエラーがでる (解決済み)

環境

  • Windows 10 Pro
  • Visual Studio 2015 Community

現象

環境を Windows 10 (新規)に移行して Visual Studio 2015 を入れたのですが、以前のプロジェクトを編集していると一部のプロジェクトでアセンブリ署名がうまく設定されない現象に出くわしました。

原因を探るために新規プロジェクトを作成して試してみました。今回はコンソールアプリケーションです。プロジェクトを作成しただけで特に何も追加していません。

2015-09-16 22_34_37-3D Builder

プロジェクトのプロパティを開き、アセンブリの署名キーを作成します。

2015-09-16 22_35_20-3D Builder

ファイル名とパスワードを入力します。

2015-09-16 22_35_44-厳密な名前キーの作成

しかし、「操作を完了できませんでした。アクセスが拒否されました。」のエラーメッセージが出てしまいました。

2015-09-16 22_36_23-Microsoft Visual Studio

プロジェクトにもキーファイルは追加されていません。

2015-09-16 22_36_36-3D Builder

ただ、エクスプローラーを見るとファイルだけは作成されているようです。

2015-09-16 22_36_46-

試しに、このpfxファイルを参照して設定してみます。

2015-09-16 22_36_57-3D Builder

作成されたpfxファイルを選択します。

2015-09-16 22_37_05-3D Builder

先ほど入力したパスワードを入力します。

2015-09-16 22_37_15-ファイルを開くためのパスワードを入力してください。

しかし今度は「存在しないトークンを参照しようとしました。」というエラーメッセージが表示されました。

2015-09-16 22_37_18-キーのインポート エラーです。

もちろん、キーファイルは設定されていません。

2015-09-16 22_37_26-3D Builder

しかし、今度はプロジェクトには追加されているようです。

2015-09-16 22_37_31-3D Builder

解決方法

正規の解決方法なのかはわかりませんがうまく対応できたので手順を載せておきます。

いろいろ調べてみると「C:ProgramDataMicrosoftCryptoRSAMachineKeys」フォルダに対して更新権限がないために起こっているエラーのようでした。試しに、そのフォルダに対してファイルを作成しようとしても作成できないことが確認できます。

2015-09-16 22_38_56-MachineKeys

ちなみに、正常に動作している環境ではファイルが作成できるようになっていました。

2015-09-16 22_39_42-yuuichi-main_3404 - リモート デスクトップ接続

なぜこのような違いが起こったのかわかりませんが、とりあえずログインしているユーザーでフルコントロールを割り当ててみました。ちなみに正常に動作している環境のセキュリティを確認したところ、「Everyone」「Administrators」のみで、どちらもアクセス許可にはすべてチェックはついていませんでした。

2015-09-16 22_40_20-MachineKeys のアクセス許可

セキュリティの設定を行ったところ、作成したプロジェクトでキーファイルが設定できるようになりました。

2015-09-16 22_41_54-OneNote

もともと正常に動作している環境、動作しなかった環境はいずれも「Windows 10 Pro」「Visual Studio 2015 Community」なのですが、Windows 10 に移行した際の手順によってもしかしたら違いが出たのかもしれません。

Windows 10 新規インストール OK
Windows 8.1 Professional から Windows 10 へアップグレード OK
Windows 8.1 Enterprise から Windows 10 へアプリ以外をアップグレード NG

また、今回は「C:ProgramDataMicrosoftCryptoRSAMachineKeys」フォルダにセキュリティのアクセス許可を追加しましたが、セキュリティ的にリスクがないかどうかはよくわかっていません。試される方はその点を認識したうえで行ってください。

]]>

コメントを残す

メールアドレスが公開されることはありません。