安全性和信任
.NET Framework 具有一个安全模型,该模型根据应用程序来源的不同而对其采用不同的处理方式。 来自用户计算机的可执行文件和程序集通常以完全信任方式运行;通过 Internet 运行的相同可执行文件和程序集通常以部分信任方式运行。 这是为了防止恶意代码读取或修改它不应访问的信息,例如本地文件、剪贴板中的项目和其他资源。 如果可执行文件调用程序集,而该程序集又调用另一个需要特定信任级别的程序集,则应用链中所有组件的最低信任级别。 但是,计算机上的管理员可以设置替代默认权限的特定权限。
安全、Light-Weight Client-Side控制中提供了安全模型的概述,可以在代码访问安全实践中深入了解安全模型。 有关库安全性的良好概述 (这对于网页上的 UserControl 对象尤其重要,) 可在 使用部分受信任的代码中的库中找到,而有关托管控件的其他安全信息可在 编写安全托管控件中找到。
权限
Tablet PC 技术 API 中的大多数托管对象和成员都有两个要求:
- 始终需要执行。
- 发生 InheritanceDemand 安全操作时,需要 FullTrust。 这意味着,当派生类继承类或重写 Tablet PC SDK 中的方法时,需要完全信任。
下表列出了需要其他权限的类和成员。 给定类的权限也适用于此表中未列出的所有成员。
注意
对于构造函数,通常最好使用控件而不是 (IntPtr) 句柄,因为控件所需的权限较少。 同样,最好使用 Graphics 对象,而不是 Renderer.Draw、 Renderer.InkSpaceToPixel 和 Renderer.PixelToInkSpace 的句柄。
注意
如果句柄用于Windows 窗体控件,InkCollector.Handle 和 InkOverlay.Handle 属性不需要 SecurityPermissionFlag.UnmanagedCode 权限,但它们对其他窗口也不需要。
注意
对于 PenInputPanel 类,以下方法和属性需要 SecurityPermissionFlag.AllFlags:PenInputPanel (IntPtr) 、 AttachedEditWindow、 Busy、 CommitPendingInput、 CurrentPanel、 DefaultPanel、 EnableTsf、 Factoid、 Height、 HorizontalOffset、 InputFailed、 Left、 MoveTo、 PanelChanged、 PanelMoving、 Refresh、 Top、 VerticalOffset、 Visible、 VisibleChanged 和 Width。
其他注意事项
其他一些已知的安全注意事项包括:
- 需要 Microsoft Internet Explorer 6 或更高版本才能使 Web 控件正常工作。 使用 Internet Explorer 5.5 时,仅加载初始托管控件;无法在运行时动态加载其他控件。
- 如果使用 Windows XP Service Pack 2 (SP2) 和 CLR1.0,则在 Internet Explorer 中拥有 Web 控件需要将站点添加为受信任的站点,即使它们在 Intranet 区域中也是如此。 但是,执行此操作时,它们将不再在受信任的站点区域中运行,尽管它们确实在 Intranet 区域中运行。 此问题已在 CLR1.1 中修复。