安全性和信任

.NET Framework 具有一个安全模型,根据应用程序的来源对应用程序进行不同的处理。 来自用户计算机的可执行文件和程序集通常完全信任运行;相同的可执行文件和程序集在 Internet 上运行通常具有部分信任。 这是为了防止恶意代码读取或修改它不应有权访问的信息,例如本地文件、剪贴板中的项和其他资源。 如果可执行文件调用程序集,而该程序集又调用需要特定级别的信任的另一个程序集,则应用链中所有组件的最低信任级别。 但是,计算机上的管理员可以设置替代默认权限的特定权限。

安全模型概述在 安全、Light-Weight Client-Side 控件中提供,你可以更深入地了解 实践中的代码访问安全性的安全模型。 有关库安全性的良好概述(对于网页上的 UserControl 对象尤其重要)可以在 使用部分受信任的代码中的库中找到,有关托管控件的其他安全信息可以在 编写安全托管控件中找到。

权限

平板电脑技术 API 中的大多数托管对象和成员有两个要求:

  • 始终需要执行。
  • InheritanceDemand 安全作发生时,需要 FullTrust。 这意味着当派生类继承类或重写平板电脑 SDK 中的方法时,需要完全信任。

下表列出了需要其他权限的类和成员。 给定类的权限也适用于此表中未列出的所有成员。

类或方法 权限
CanPaste UIPermissionClipboard.AllClipboard
Ink.ClipboardCopy UIPermissionClipboard.OwnClipboard
Ink.ClipboardPaste UIPermissionClipboard.AllClipboard
InkCollector UIPermissionWindow.SafeTopLevelWindows
InkCollector(IntPtr) UIPermissionWindow.SafeTopLevelWindowsSecurityPermissionFlag.UnmanagedCode
InkCollector.Handle UIPermissionWindow.AllWindowsSecurityPermissionFlag.UnmanagedCode(请参阅以下说明)
InkEdit UIPermissionWindow.SafeTopLevelWindows
InkOverlay UIPermissionWindow.SafeTopLevelWindows
InkOverlay(IntPtr) UIPermissionWindow.SafeTopLevelWindows 和 SecurityPermissionFlag.UnmanagedCode
InkOverlay.Handle UIPermissionWindow.AllWindowsSecurityPermissionFlag.UnmanagedCode(请参阅以下说明)
InkPicture UIPermissionWindow.SafeTopLevelWindows
PenInputPanel 请参阅下面的说明。
InkRenderer UIPermissionWindow.SafeTopLevelWindows
绘图DrawStroke UIPermissionWindow.SafeTopLevelWindowsSecurityPermissionFlag.UnmanagedCode
Renderer.InkSpaceToPixel(IntPtr,Point),Renderer.InkSpaceToPixel(IntPtr,Point[]) UIPermissionWindow.SafeTopLevelWindowsSecurityPermissionFlag.UnmanagedCode
Renderer.PixelToInkSpace(IntPtr,Point),Renderer.PixelToInkSpace(IntPtr,Point[]) UIPermissionWindow.SafeTopLevelWindowsSecurityPermissionFlag.UnmanagedCode
DynamicRenderer UIPermissionWindow.SafeTopLevelWindows
DynamicRenderer(IntPtr) UIPermissionWindow.SafeTopLevelWindowsSecurityPermissionFlag.UnmanagedCode
RealTimeStylus UIPermissionWindow.SafeTopLevelWindows
RealTimeStylus(IntPtr)、RealTimeStylus(IntPtr、Boolean)、RealTimeStylus(IntPtr、Tablet) UIPermissionWindow.AllWindowsSecurityPermissionFlag.UnmanagedCode

 

注意

通常最好对构造函数使用控件而不是句柄(IntPtr),因为控件需要更少的权限。 同样,最好使用图形对象,而不是 Renderer.Draw的句柄、Renderer.InkSpaceToPixelRenderer.PixelToInkSpace

 

注意

InkCollector.HandleInkOverlay.Handle 属性不需要 SecurityPermissionFlag.UnmanagedCode 权限(如果句柄适用于 Windows 窗体控件,但它们对其他窗口)。

 

 

其他注意事项

其他一些已知安全注意事项包括:

  • 需要Microsoft Internet Explorer 6 或更高版本才能使 Web 控件正常工作。 使用 Internet Explorer 5.5 时,仅加载初始托管控件;无法在运行时动态加载其他控件。
  • 如果使用 Windows XP Service Pack 2(SP2)和 CLR1.0,则 Internet Explorer 中的 Web 控件需要将站点添加为受信任的站点,即使它们位于 Intranet 区域中也是如此。 但是,当你这样做时,它们将不再在受信任的站点区域中运行,尽管它们确实在 Intranet 区域中运行。 CLR1.1 修复了此问题。