xbap优雅地处理缺少权限

时间:2009-08-05 03:50:15

标签: c# xaml permissions xbap

我有一个Xbap应用程序,它是需要文件系统访问的Intranet应用程序的一部分。

我已经完全信任该应用程序,使用有效证书签名并将证书导入ie并且xbap完美运行。

我的问题是,如果用户没有安装证书,即没有文件系统IO访问权限,我想要优雅地处理Permission Denied异常

我认为我可以通过在部分信任模式下运行xbap并使用类似以下内容来测试权限来实现这一目标

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

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

但问题是,如果您没有将FileIOPermissions权限添加到项目属性窗口的安全选项卡中的“应用程序所需的权限”列表中,则上述代码将始终失败...即使从本地运行文件系统,而不是通过Web服务器。

BUT

如果我确实添加了FileIOPermissions权限,并且用户没有安装证书,则我的代码都没有被命中,xbap会抛出一个通用的“Trust Not Granted”错误屏幕...我不想要,我想向我的用户显示一个正确的错误屏幕,说明他们可以采取哪些措施来解决此错误

任何想法?

1 个答案:

答案 0 :(得分:0)

您可以手动编辑app.manifest文件以请求降​​低应用程序的最低权限,然后(理论上)当您要求文件权限时,测试代码并不会总是失败,但是只有当用户需要时才会失败尚未授予您的代码所需的权限。