安全性和信任

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

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

权限

Tablet PC 技术 API 中的大多数托管对象和成员都有两个要求:

  • 始终需要执行。
  • 发生 InheritanceDemand 安全操作时,需要 FullTrust。 这意味着,当派生类继承类或重写 Tablet PC 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
DrawDrawStroke 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) 句柄,因为控件所需的权限较少。 同样,最好使用 Graphics 对象,而不是 Renderer.DrawRenderer.InkSpaceToPixelRenderer.PixelToInkSpace 的句柄。

 

注意

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

 

注意

对于 PenInputPanel 类,以下方法和属性需要 SecurityPermissionFlag.AllFlags:PenInputPanel (IntPtr) 、 AttachedEditWindowBusyCommitPendingInputCurrentPanelDefaultPanelEnableTsfFactoidHeightHorizontalOffsetInputFailedLeftMoveToPanelChangedPanelMovingRefreshTopVerticalOffsetVisibleVisibleChangedWidth

 

其他注意事项

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

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