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」フォルダにセキュリティのアクセス許可を追加しましたが、セキュリティ的にリスクがないかどうかはよくわかっていません。試される方はその点を認識したうえで行ってください。


TVTest, HDUCを使用してWindows 8で地上波テレビを見る

注意

ここに記載しているのはメモ書きです。

説明している手順は途中で必要なものがぬけていたりしていますので、不足分は各自補完してください。また、機材やソフトウェアも限定しているのでご注意ください。

ここで説明した手順を実施してPCに不具合等が発生した場合でも責任は負えませんので自己責任で行ってください。また、不正な扱い等も行わないようにしてください。ここでは視聴が可能になるまでの手順を説明しています。今後の法改正でこれらの操作が違法行為になる可能性も捨てきれませんので、それらを認識したうえでの参考資料としてください。

環境

  • Windows 8 x64 Enterprise

使用するもの

  • TVTest
  • MonsterTV HDUC (HDUSでもほぼ同じ)

手順

まず、Windows 8 でドライバの署名チェックをしないように設定します。詳しい説明は以下のサイトでも説明されているのでそちらをご覧ください。

コマンドプロンプトを「管理者権限」で起動し、以下のコマンドを実行、Windows 8 をテストモードにします。

image

bcdedit /set TESTSIGNING ON

※戻すときはOFFにしてください。

Windowsを再起動してドライバーの署名の強制を無効にします。この時通常の手順で再起動するのではなく、以下の手順で再起動します。

[チャーム] > [設定] > [PCの設定変更] > [全般] > [PCの起動をカスタマイズする] > [今すぐ再起動する] > [トラブルシューティング] > [詳細オプション] > [スタートアップ設定]

※チャームはマウスポインタをデスクトップの右上や右下に移動したときにでてくるアレです。

image

再起動すると、スタートアップ設定の画面が表示されるので「7)ドライバー署名の強制を無効にする」を選択します。(キーボードの7を押す)

デスクトップ右下にテストモードが表示されているか確認します。

image

 

さて、ここからはTV視聴用のデバイスを接続する手順になるため、持っているものによって方法が異なったりします。ここでは「MonsterTV HDUC」について説明していますが、ドライバーの事前準備などについては説明していません。 (よく説明されているのは HDUS なのですが、同じ系列なので問題なく使えると思います)

Webで調べるといくつかサイトがありますのでそちらを参照してください。(参考サイトですが、以前参照していたサイトがなくなったりと浮き沈みが激しい界隈なので自力で探してください。おそらくここら辺が一番面倒だったりします)

関連のありそうなサイト (あまりみてない)

 

ここではドライバーがすでに用意してあるものとして説明しています。一応 Windows Vista (x64), Windows 7 (x64) 用で使用したドライバーでも問題なく動作しています。

ドライバーの準備ができたら HDUC を USB で接続します。自動的にドライバーがインストールされますが、有効なドライバーではないので終わるまでそのまま待ちます。

デバイスマネージャーを開き、ドライバーが正常に認識されていないデバイスを右クリックして「デバイスの更新」を選択します(ここではAUSBDTV)。ここからの手順は環境によって異なるかもしれません。一例として見ておいてください。

image

「コンピューターを参照してドライバー ソフトウェアを検索します」を選択。

image

パス指定で用意したドライバーのあるフォルダを選択します。選択したら「次へ」をクリック。

image

正常にドライバーがインストールされればOKです。もう一度デバイスマネージャーを参照すると下のように「SKNET」が表示されます。これらに対しても同じようにドライバーをインストールしてください。

image

下のようなダイアログが出た場合はそのままインストールを続行してください。

image

これでドライバーのインストールは完了です。

 

続いてMPEG-2コーデックをインストールします。Windows 8 は動作再生のコーデックは基本的なものしか入っておらず、利用料金のかかる MPEG-2 コーデックは入っていません。

ここではフリーで配布されているコーデック「ffdshow」をインストールします。下記のサイトからダウンロードしてください。

ダウンロードしたらインストールしてください。途中 MPEG-2 コーデックをインストールするように設定を忘れないでください。デフォルトでは選択されていません。

 

ここまで完了したら「TVTest.exe」を起動して地上波テレビが見れるか確認してください。TVTest についてはいろんなサイトに説明が載っているのでそちらを参照してください。