バイナリのデジタル署名に自己署名証明書を使用することは、プログラムでデジタル証明書を使用するという概念にほとんど反します。基本的な考え方は、コードが自分で作成したものであり (真正性)、リリース後に変更されていないことを証明することです (完全性)。これは、信頼できる認証局 (CA) によって署名された署名付き証明書を使用して行う必要があります。
.Net では、バイナリがデジタル署名されると、起動時に整合性と信頼性が自動的に検証されます。個人的にこれをテストしたわけではありませんが、自己署名証明書を使用すると、おそらく多くの問題が発生するでしょう。
プログラムにデジタル署名する場合は、CA からのコード署名証明書に投資する必要があります。このサービスを有料で提供できる会社は数多くあります ( Verisign、Thawte )。
料金は少し極端に思えるかもしれませんが、デジタル証明書を購入するだけでなく、その証明書の 24 時間年中無休の検証も行うことを忘れないでください。誰かがあなたのプログラムを開始するときはいつでも、プログラムがあなたによって書かれたものであり、プログラムがリリースされてから変更されていないことを保証します。
証明書を取得したら、「方法: アプリケーション マニフェストと配置マニフェストに署名する」の手順に従って、プログラムにデジタル署名できます。
更新:このプログラムが厳密に内部アプリケーション (あなたまたはあなたのビジネスに限定される) である場合は、独自の CA を作成できます。それを実行しているのはあなただけなので、検証する必要があるのはあなただけです。CA 証明書は、プログラムを実行するすべてのマシンに信頼されたルート証明書としてインストールする必要があります (または、Windows Server にアクセスできる場合は、実際に機能する CA をセットアップできます)。