質問
私は商用製品を生産する会社で働いており、現在、大規模な顧客の一部がClickOnceを介してアプリケーションのクライアント側を配布できるようにするソリューションを提供しようとしています。
意図は、お客様がClickOnceインストールをネットワーク共有に展開し、アプリケーションマニフェストへのリンクを電子メールまたはその他の方法でクライアントに送信することです。
ClickOnceインストールのプロダクションを(Mageコマンドラインツールを使用して)自動ビルドに正常に統合することができ、クライアントマシンで実際のインストールを正常に実行できます。ただし、インストールおよび起動後、FileIOPermissionへのアクセスが拒否されているため、アプリケーションは実行時にSecurityExceptionをスローします。このアプリケーションにはFullTrust権限が必要ですが、実行中のアセンブリのCodeBaseの場所がネットワーク共有の場合、LocalIntranet権限(FileIOPermissionを含まない)のみが許可されているようです。
これは非常に一般的な問題であると思われる記事がここにあります: http://blogs.msdn.com/shawnfa/archive/ 2004/12/30 / 344554.aspx
この記事ではCasPolツールを使用して回避策を提供していますが、展開環境内のすべてのクライアントマシンでこれを実行する必要があります。それ自体は問題ではありません。CasPolツールで行われていることを実行するためにクライアントマシンの管理者権限が必要であり、当社のクライアントの大半はお客様の環境にはこれらの権限がありません。
CasPol修正プログラムを実行する必要性が.NET 3.5 SP1のリリースで緩和されたことを示唆していると思われる記事も同じブログに公開されています。 http://blogs.msdn。 com / shawnfa / archive / 2008/05/12 / fulltrust-on-the-localintranet.aspx
ただし、この記事で詳しく説明しているように、フレームワークのSP1リリースをターゲットとするようにアプリケーションを変更しました。 http://msdn.microsoft.com/en-us/library/bb398202 .aspx#
これを行った後、同じSecurityExceptionが発生しました。そこで、記事で詳しく説明されているように、特定のSP1 ClickOnce設定を適用しましたが、それでも喜びはありません。 許可を与えられた公開ネットワーク共有から直接アプリケーションを起動した場合、それらが拒否されるのはClickOnceのコンテキスト内からのみであるようです。
他の誰かがこれらと同様の問題に直面していますか?これらのアクセス許可に関してフレームワークのSP1リリースに問題があった場合、ClickOnceソリューションをまだ出荷していないため、他の誰かが私たちの前に気づいていたと思います。
解決
.NET 4.0でも同様の問題が発生し、昼食時にセキュリティ例外が発生したと思います。私が見つけた解決策は、承認された証明書を使用してマニフェストにデジタル署名することでした(Visual Studioがプロジェクト用に生成するデフォルトではありません)。
既知の「バグ」です。 (または設計上)ClickOnceデプロイされたマニフェストで。
プロジェクトは署名されていますか