我有一个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”错误屏幕...我不想要,我想向我的用户显示一个正确的错误屏幕,说明他们可以采取哪些措施来解决此错误
任何想法?
答案 0 :(得分:0)
您可以手动编辑app.manifest文件以请求降低应用程序的最低权限,然后(理论上)当您要求文件权限时,测试代码并不会总是失败,但是只有当用户需要时才会失败尚未授予您的代码所需的权限。