.NET Framework 具有一个安全模型,根据应用程序的来源对应用程序进行不同的处理。 来自用户计算机的可执行文件和程序集通常完全信任运行;相同的可执行文件和程序集在 Internet 上运行通常具有部分信任。 这是为了防止恶意代码读取或修改它不应有权访问的信息,例如本地文件、剪贴板中的项和其他资源。 如果可执行文件调用程序集,而该程序集又调用需要特定级别的信任的另一个程序集,则应用链中所有组件的最低信任级别。 但是,计算机上的管理员可以设置替代默认权限的特定权限。
安全模型概述在 安全、Light-Weight Client-Side 控件中提供,你可以更深入地了解 实践中的代码访问安全性的安全模型。 有关库安全性的良好概述(对于网页上的 UserControl 对象尤其重要)可以在 使用部分受信任的代码中的库中找到,有关托管控件的其他安全信息可以在 编写安全托管控件中找到。
权限
平板电脑技术 API 中的大多数托管对象和成员有两个要求:
- 始终需要执行。
- InheritanceDemand 安全作发生时,需要 FullTrust。 这意味着当派生类继承类或重写平板电脑 SDK 中的方法时,需要完全信任。
下表列出了需要其他权限的类和成员。 给定类的权限也适用于此表中未列出的所有成员。
注意
通常最好对构造函数使用控件而不是句柄(IntPtr),因为控件需要更少的权限。 同样,最好使用图形对象,而不是 Renderer.Draw的句柄、Renderer.InkSpaceToPixel 和 Renderer.PixelToInkSpace。
注意
InkCollector.Handle 和 InkOverlay.Handle 属性不需要 SecurityPermissionFlag.UnmanagedCode 权限(如果句柄适用于 Windows 窗体控件,但它们对其他窗口)。
注意
对于 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 修复了此问题。