none
ClickOnceで作成したアプリケーションの実行時EXEのデジタル署名について RRS feed

  • 質問

  • ClickOnceで作成したアプリケーションの実行時EXEのデジタル署名について

    お聞きしたいのですが、

    現在Windows10、ViualStudio C#2010 Expressで

    デジタル署名のテストをしております。

    ClickOnceで作成したアプリケーションの実行時EXE(タスクマネージャーなどから確認時)にデジタル署名を

    付ける方法を知っていらっしゃる方がいましたら、教えて頂けないでしょうか?


    インターネットで調べた範囲では、

    ClickOnceで発行した、SetUp.exeにはデジタル署名が付くのですが、


    ExcelのExeの様に実行時のEXEのは付与されないようです。

    VB、VisualStudioの別のバージョンでもこの発行オプションで出来た

    などでも情報ありましたら、教えて頂けないでしょうか?

    発行時に指定したオプションになります。

    一応、アセンブリにも署名を付けました。

    2016年12月19日 0:45

回答

すべての返信

  • Visual Studio 2010、2012、2013、2015で試したところ、2010と2012ではアプリケーション本体EXEのほうには署名は付きませんでしたが、2013、2015では署名が付きました。試した手順は下記です。

    1. C#フォームアプリケーションのプロジェクトを新規作成
    2. プロジェクトのプロパティを開く
    3. 「署名」タブを開く
    4. 「ClickOnce マニフェストに署名する」にチェックを入れる
    5. メニューの「ビルド」→「○○○の発行」を選択
    6. 完了ボタンをクリック

    Visual Studio 2013,2015ではプロジェクトフォルダの「bin\Debug\app.publish」または「bin\Release\app.publish」の中に署名済みのEXEができます。

    2016年12月19日 1:02
  • ありがとうございます。

    4つもバージョンを試して頂いたのですね。

    そうでしたか、2013以降の新しい機能なんでしょうか。

    後付できないかとも思い、

    WindowsSDKのsigntool.exeを利用して

    ¥bin¥Debugの直下のExeに署名をつけることはできたのですが、

    当たり前かもしれませんが、発行時にリビルドされるようで、

    ¥bin¥Debug¥app.publish

    では無くなってしまいました。

    できれば、2010が開発環境なので使いたいのですが、

    機能がないのでは対処のしようがないですかね。

    2016年12月19日 2:13
  • すみません。未検証なのですが、プロジェクトのプロパティ画面に「ビルド イベント」タブがあります。
    その中の「ビルド後に実行するコマンドライン」で本体のEXEに署名するコマンドを記述してみてはどうでしょうか?もしかすると Visual Studio 2010 でも署名を付けられるかもしれません。

    2016年12月19日 2:21
  • kenjinote様

    ご回答ありがとうございます

    すごい、抜け道かと試してみましたが、

    私の方法が悪いのか、ビルド時は¥bin¥ReleaseのExeに署名をつけることはできたのですが、

    発行すると外れてしまいました。

    発行時にも実行されれば、できそうな感じでした。

    2016年12月19日 5:16
  • 発行の際に参照されるEXEは \bin\Release 以下の EXE ではなく、\obj\Release (デバッグ時は\obj\Debug) 以下の EXE のようです。

    署名のついた EXE を obj フォルダの同名の EXE に上書きしてプロジェクトのプロパティ→「発行」→「今すぐ発行」を行うと、発行時にも本体の EXE に署名をつけることができました。「ビルド後に実行するコマンドライン」で obj フォルダの方の本体 EXE にも署名をつけるようにしてもよいかもしれません。

    参考 : https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/781ce213-1ade-43c1-8de2-c3ad1693e573

    2016年12月19日 6:43
  • kenjinote様

    ご回答ありがとうございます

    ご指摘頂いたようにobjフォルダも署名を付けるようにしたら、

    無事実行時のExeに署名を付けることができました。

    同じような回答があったのに見逃していたようで、

    申し訳ありません。

    ということは、みなさん、2010では通常の発行での署名は諦めて、

    後付されているようですね。

    解決して頂きありがとうございました。

    2016年12月19日 8:26