我们可以打开这些XML文件看看里面有些什么。

从中我们看到,每一项权限都是一个IPermission节点,这个IPermission是不是有点熟悉?对的,上面我们说过的一个接口,与权限配置有关的类都实现该接口。也就是说,自定义应用程序的权限,就是编写相应的XML节点。
从MSDN的参考文档(参考地址:(v=vs.110).aspx)我们知道,权限集的配置在trustInfo元素下的security/applicationRequestMinimum/PermissionSet节点下,层次结构我们可以参考文档。

好,我们来实战一下,这样讲还是觉得很抽象,再次打开项目属性,切换到"安全性"选项卡。选择部分信任选项,在"将要从中安装应用程序的区域"下面的下拉列表框中选择"自定义",这时候,右边的"编辑权限XML"按钮变为可用状态。如下图:

我们不妨单击这个按钮,来查看XML文件,结合XML文件上的注释和文档说明,基础较好的朋友估计已经明白怎么用了。
现在呢,不对XML文件进行任何修改,然后我们发布并安装应用程序。结果我们发现,应用程序没运行,手动到"开始"组中启动它也没有运行,这是很多朋友都遇到的问题,clickonce应用安装后不能运行。其实问题就出在权限上。刚才我们使用自定义权限集来发布应用程序,而我们又没有配置任何权限,就等于应用程序不具有任何权限,当然没法运行。
回到项目属性窗口的"安全性"选项卡,点击"编辑权限XML"按钮。
这时候就打开应用程序清单文件,我们找到trustinfo节点。找到PermissionSet节。如下图:

注意PermissionSet节的ID要与defaultAssemblyRequest.permissionSetReference的一致,这里已经为我们生成了Custom。
我们要做的就是在PermissionSet下添加IPermission元素,这个元素怎么写呢?看文档。Version属性为1,我们只需设置class即可,需要赋给应用程序什么权限,就写上类的完整标识符,包括程序集和版本,公钥等。
前面我为什么要介绍在对象浏览器中查看IPermission派生的类,就是为这里打下伏笔的。
IPermission元素所属性并不只是class、version这几个,它可以和对应的类的属性进行合并,即XXXPermission和XXXPermissionAttribute的属性可以进行合并,如FileIOPermission类有个AllFiles属性,FileIOPermissionAttribute类有个Read属性,我们就可以把它们合起来用,即:
以上就是关于clickonce的全部内容,相信你一定会非常满意。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-2227-2.html
产品价高质次