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菜鸟来说,还是费了一番劲才搞清楚到底该怎么做,以下就是详细的步骤。
using
System.Security;

[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;
}
注意:此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]
然后将需要提升权限的操作在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;
}
注意:此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应用即可。

本文详细介绍了如何通过将组件放入全局程序集缓存(GAC)来增强WPF浏览器应用程序(XBAP)的权限。内容包括创建GAC程序集、XBAP程序集以及GAC程序集的安装程序,从而使得XBAP能够访问新窗口、对话框、XAML序列化、文件保存、本地文件系统、注册表以及利用Windows Communication Foundation服务等功能。

被折叠的 条评论
为什么被折叠?



