WPF Browser Application(XBAP)程序利用GAC提升权限的方法
来源:互联网 发布:windows无法访问u盘 编辑:程序博客网 时间:2024/05/19 19:14
WPF Browser Application(XBAP)程序由于运行在Internet Explorer安全沙箱中,因此只能进行被认为是安全的操作,在微软目前实现的WPF Sandbox v1中,在Internet安全区域(Partial Trust)中不能进行的操作主要包括以下内容:
(1)在客户机器安装一个APTCA( AllowPartiallyTrustedCallersAttribute)程序集到GAC(Global Assembly Cache),由于GAC程序集具有FullTrust权限,因此可通过此程序集代理执行XBAP程序中需要超出PartialTrust权限的操作;
(2)在客户机器上安装一证书到用户的“受信任的发行者”存储区,然后用此证书对XBAP程序集进行签名。
今天就讲讲(1)中的方法如何实际操作,事实上这种方法应用在很多场合(例如ASP.NET应用中),对.NET FRAMEWORK安全机制很熟悉的程序员应该早就很清楚了,不过对于像我这样的WPF和.NET FRAMEWORK菜鸟来说,还是费了一番劲才搞清楚到底该怎么做,以下就是详细的步骤。
然后将需要提升权限的操作在GAC程序集中实现,作为公共的方法被其他程序集调用,例如:
注意:此GAC程序集一定要使用证书进行签名(因为GAC中必须是强命名程序集),这使用Visual Studio很容易完成,就不多说了。
用户在通过Internet Explorer浏览XBAP应用之前,需要先下载GAC程序集安装程序并运行,以便将APTCA程序集安装到GAC程序集,然后运行XBAP应用即可。
- 新窗口和对话框
- XAML序列化(使用XamlWriter.Save)
- 保存文件对话框
- 本地文件系统(非隔离存储区域)
- 注册表访问
- Windows Communication Foundation服务
- Bitmap Effects
(1)在客户机器安装一个APTCA( AllowPartiallyTrustedCallersAttribute)程序集到GAC(Global Assembly Cache),由于GAC程序集具有FullTrust权限,因此可通过此程序集代理执行XBAP程序中需要超出PartialTrust权限的操作;
(2)在客户机器上安装一证书到用户的“受信任的发行者”存储区,然后用此证书对XBAP程序集进行签名。
今天就讲讲(1)中的方法如何实际操作,事实上这种方法应用在很多场合(例如ASP.NET应用中),对.NET FRAMEWORK安全机制很熟悉的程序员应该早就很清楚了,不过对于像我这样的WPF和.NET FRAMEWORK菜鸟来说,还是费了一番劲才搞清楚到底该怎么做,以下就是详细的步骤。
一、创建GAC程序集
使用Visual Studio 2005(或Orcas)创建一个类库项目,然后修改项目的属性文件AssemblyInfo.cs文件,只需加上以下两句:using System.Security;
[assembly: AllowPartiallyTrustedCallers]
[assembly: AllowPartiallyTrustedCallers]
然后将需要提升权限的操作在GAC程序集中实现,作为公共的方法被其他程序集调用,例如:
using System.Windows.Markup;
/// <summary>
/// XAML序列化对象。
/// </summary>
/// <param name="o">待序列化对象。</param>
/// <returns>序列化后的结果字符串。</returns>
public static string XamlSave( object o )
{
NamedPermissionSet pset = new NamedPermissionSet("FullTrust");
pset.Assert();
string s = XamlWriter.Save(o);
CodeAccessPermission.RevertAssert();
return s;
}
/// <summary>
/// XAML序列化对象。
/// </summary>
/// <param name="o">待序列化对象。</param>
/// <returns>序列化后的结果字符串。</returns>
public static string XamlSave( object o )
{
NamedPermissionSet pset = new NamedPermissionSet("FullTrust");
pset.Assert();
string s = XamlWriter.Save(o);
CodeAccessPermission.RevertAssert();
return s;
}
注意:此GAC程序集一定要使用证书进行签名(因为GAC中必须是强命名程序集),这使用Visual Studio很容易完成,就不多说了。
二、创建XBAP程序集
使用Visual Studio 2005(或Orcas)创建一个WPF Browser Application,然后将上述创建的的GAC程序集添加到引用中,注意一定要将“复制到本地”属性置为False。然后就可以调用GAC中的公共方法,例如上述的XamlSave来完成需要提升权限的操作。完成之后可将此程序集发布到Web服务器上。三、创建GAC程序集的安装程序
使用Visual Studio 2005(或Orcas)创建一个安装项目,在“目标计算机上的文件系统”上点右键会出现“添加特殊文件夹”菜单,然后选择“Global Assembly Cache文件夹”,然后在此文件夹上点击右键选择添加“项目输出”,设定为第一步创建的GAC程序集的主输出即可,然后编译即可生成安装程序。完成之后可将此程序发布到Web服务器上供用户端下载安装。用户在通过Internet Explorer浏览XBAP应用之前,需要先下载GAC程序集安装程序并运行,以便将APTCA程序集安装到GAC程序集,然后运行XBAP应用即可。
- WPF Browser Application(XBAP)程序利用GAC提升权限的方法
- 让人抓狂的问题:运行WPF Browser Application(XBAP)导致PresentationHost(IE)崩溃
- How to run WPF - XBAP as Full Trust Application(如何运行WPF -作为完全信任的应用XBAP)
- WPF Browser Application
- windows 程序权限的提升方法
- How to run WPF - XBAP as Full Trust Application
- 提升权限的方法
- 给WPF Browser Application创建数字证书
- SharePoint 权限提升的方法
- 进程提升权限的方法
- WPF改成xbap
- WPF XBAP 部署发布
- 存在真正的“提升进程(线程)权限”程序吗?
- 提升ASP.NET程序的权限
- 提升ASP.NET程序的权限
- 为编写的Windows程序提升权限
- 为编写的Windows程序提升权限
- 提升进程/程序权限(C#)
- CSDN 是一种习惯
- 关于软件设计,解偶,测试
- Donet下数据库命名规范
- SAP BC404 课程中文自学笔记
- 一篇关于人生定位和博弈理论的文章(骨头的故事)
- WPF Browser Application(XBAP)程序利用GAC提升权限的方法
- SAP BC405 课程中文自学笔记
- 中国民间艺术品流通站
- SAP BC406 课程中文自学笔记
- IE7每次打开都启动runonce.msn.com地址的解决办法
- 关于Blog日历的做法
- red hat fedora core 4 & ubuntu
- 决定在这里住下来!!!
- 流行音乐演唱方法(howiss的博客)