4

私は商用製品を製造する会社で働いており、現在、大規模な顧客の一部が ClickOnce を介してアプリケーションのクライアント側を配布できるようにするソリューションを提供しようとしています。

その意図は、お客様が ClickOnce インストールをネットワーク共有に展開し、アプリケーション マニフェストへのリンクを電子メールまたはその他の手段でクライアントに送信することです。

ClickOnce インストールのプロダクションを (Mage コマンド ライン ツールを使用して) 自動ビルドに統合することに成功し、クライアント マシンで実際のインストールを正常に実行できるようになりました。ただし、インストールして起動すると、アプリケーションは実行時に SecurityException をスローします。これは、FileIOPermission へのアクセスが拒否されているためです。私たちのアプリケーションには FullTrust アクセス許可が必要ですが、実行中のアセンブリの CodeBase の場所がネットワーク共有である場合、LocalIntranet アクセス許可のみが付与されるようです (FileIOPermission は含まれません)。

これが非常に一般的な問題であることを示しているように見える記事がここにあります: http://blogs.msdn.com/shawnfa/archive/2004/12/30/344554.aspx

この記事では、CasPol ツールを使用した回避策を提供していますが、展開環境内のすべてのクライアント マシンでこれを実行する必要があります。それ自体は実際には問題ではありません。CasPol ツールで行われていることを実行するには、クライアント マシンで管理者権限が必要であり、お客様の環境のクライアントの大部分にはこれらの権限がありません。

.NET 3.5 SP1 のリリースにより、CasPol 修正プログラムを実行する必要性が軽減されたことを示唆する記事も同じブログで公開されています: http://blogs.msdn.com/shawnfa/archive/2008/ 05/12/fulltrust-on-the-localintranet.aspx

ただし、次の記事で詳しく説明されているように、フレームワークの SP1 リリースを具体的に対象とするようにアプリケーションを変更しました

これを行った後も、同じ SecurityException が発生しました。そのため、この記事で詳しく説明されているように、特定の SP1 ClickOnce 設定をいくつか適用しましたが、それでも満足できませんでした。公開ネットワーク共有から直接アプリケーションを起動すると、アクセス許可が付与されますが、拒否されるのは ClickOnce のコンテキスト内からのみのようです。

他の誰かがこれらに似た問題に遭遇しましたか? フレームワークの SP1 リリースにこれらのアクセス許可に関して問題があった場合、ClickOnce ソリューションをまだ出荷していないため、他の誰かが私たちの前に気付いていたと思います。

4

1 に答える 1

3

.NET 4.0 で同様の問題が発生し、昼食時にセキュリティ例外が発生したと思います。私が見つけた解決策は、承認された証明書を使用してマニフェストにデジタル署名することでした (1 つのビジュアル スタジオがプロジェクト用に生成するデフォルトではありません)。

これは、ClickOnce で展開されたマニフェストの既知の "バグ" (または設計による) です。

プロジェクトは署名されていますか?

于 2011-07-17T11:13:29.157 に答える