1

ファイル システムへのアクセスが必要なイントラネット アプリケーションの一部である Xbap アプリケーションがあります。

アプリを完全に信頼し、有効な証明書で署名し、証明書を ie にインポートすると、xbap は完全に機能します。

私の問題は、ユーザーが証明書をインストールしていない場合、つまりファイル システム IO アクセスがない場合に、アクセス許可が拒否された例外を適切に処理したいということです。

xbapを部分信頼モードで実行し、次のようなものを使用してアクセス許可をテストすることで、これを達成できると思いました

CodeAccessPermission p = new FileIOPermission(FileIOPermissionAccess.Write, @"c:\newfile.txt");

try
{
    p.Demand();
    // Has access
}
catch (Exception ex)
{
    // Does not have access
}

ただし、問題は、プロジェクトのプロパティ ウィンドウの [セキュリティ] タブにある [アプリケーションに必要なアクセス許可] リストに FileIOPermissions アクセス許可を追加していない場合、上記のコードは常に失敗することです...代わりにローカル ファイル システムから実行した場合でも、の Web サーバーを介して。

しかし

FileIOPermissions アクセス許可を追加しても、ユーザーに証明書がインストールされていない場合、コードはヒットせず、xbap は一般的な「Trust Not Granted」エラー画面をスローします...これは望ましくありません。表示したいユーザーに、このエラーを修正するために何ができるかを説明する適切なエラー画面

何か案は?

4

1 に答える 1

0

app.manifest ファイルを手動で編集して、アプリケーションの最小パーミッションを下げるように要求することができます。その後 (理論的には)、ファイルのパーミッションを要求したときにコードのテストが常に失敗するわけではありませんが、ユーザーが許可していない場合にのみ、意図したとおりに失敗します。コードに必要な権限を付与します。

于 2009-09-21T19:56:52.570 に答える