使用信息权限管理设置

Microsoft InfoPath 中提供了两种信息权限管理 (IRM) 设置:一种用于保护对 InfoPath 表单模板的访问,另一种用于控制对已填好表单中包含的表单数据的访问和操作。

注意

[!注释] 权限限制只能用于与 InfoPath 编辑器兼容的表单模板。 与浏览器兼容的表单模板不支持 IRM。

将"管理凭据"命令添加到快速访问工具栏中

默认情况下,用于处理 IRM 设置的“管理凭据”命令在设计表单模板时不可用。 可使用以下步骤将其添加到“快速访问工具栏”中。

将"管理凭据"命令添加到快速访问工具栏中

  1. 单击“快速访问工具栏”右侧的箭头,以打开“自定义快速访问工具栏”菜单,然后单击“更多命令”

  2. 在“从下列位置选择命令”列表中,选择“所有命令”

  3. 将列表向下滚动到“管理凭据”,然后单击“添加”

  4. Click OK.

有关使用 InfoPath 中的“管理凭据”命令和“权限”对话框的详细信息,请参阅 InfoPath 帮助中的“创建具有受限权限的表单模板”主题。

IRM 对象模型

使用 Permission 类可访问 UserPermissionCollection 和可应用于表单的 IRM 权限设置。 要访问与表单模板关联的 Permission 对象,请使用 XmlForm 类的 Permission 属性。 返回的 Permission 对象提供对与表单模板以及用该模板创建的每个表单实例关联的 UserPermission 对象集合的访问。

不论权限是否仅限于活动的表单模板, Permission 对象及其属性和成员都可用。 使用 Enabled 属性可以确定表单是否具有受限的权限。

通过使用 Permission 类的属性和方法按以下方式之一来启用表单的权限:

Enabled 属性设置为 true

设置 DocumentAuthor 属性。

设置 RequestPermissionUrl 属性。

StoreLicenses 属性设置为 truefalse

调用 ApplyPolicy 方法。

注意

如果用户计算机上未安装 Windows 权限管理客户端,则使用 Permission 类将引发异常。

要以编程方式使用表单中各个用户的 IRM 设置,请使用 UserPermissionCollectionUserPermission 类。

UserPermission 对象将当前表单的一组权限与单一用户和一个可选的到期日期关联。 使用 UserPermissionCollection 类的 Add 方法在当前表单上添加并授予用户一组权限。 使用 UserPermissionCollection 类的 Remove 方法删除用户和用户的权限。 虽然通过用户界面授予的某些权限(如打印和到期日期)适用于所有用户,但可以使用 UserPermissionUserPermissionCollection 类为各个用户单独指定权限及到期日期。 对象模型允许开发人员枚举表单中的权限设置,并提供允许表单用户向表单添加权限的功能,而无需使用“表单权限”任务窗格或“权限”对话框。

注意

[!注释] 在表单处于预览模式时,无法应用权限。 因此,在预览表单时, Permission 类的所有属性都是只读的。 在预览模式下, Enabled 属性将始终返回 false,如果代码尝试更改此设置,则会引发 System.Runtime.InteropServices.COMException,并返回"该属性/方法在预览模式下不可用"错误。 同样,当在预览模式下使用时,与 UserPermissionUserPermissionCollection 类关联的方法也将返回此错误消息。

Permission 类概述

UserPermissionCollection 类提供下列属性和一个方法。

名称 说明
ApplyPolicy 方法
使用策略模板文件将策略应用于表单。
DocumentAuthor 属性
获取或设置当前表单作者的电子邮件地址。
Enabled 属性
获取或设置一个值,指示是否对当前表单启用了 Permission 对象所代表的权限设置。
PermissionFromPolicy 属性
获取或设置一个值,指示是否对当前表单应用了权限策略。
PolicyDescription 属性
获取应用于当前表单的策略的说明。
PolicyName 属性
获取应用于当前表单的策略的名称。
RequestPermissionUrl 属性
获取或设置供需要当前表单的额外权限的用户联系之用的文件、URL 或电子邮件地址。
StoreLicenses 属性
获取或设置一个值,指示是否缓存用户查看当前表单的许可,以允许在用户无法连接到权限管理服务器时脱机查看。
UserPermissions 属性
获取当前表单的 UserPermissionCollection 对象。

UserPermissionCollection 类概述

UserPermissionCollection 类提供下列属性和方法。

名称 说明
Add 方法(+3 重载)
向当前表单添加一个新用户,可以选择指定权限和到期日期。
Remove 方法
从集合中删除具有指定 UserIdUserPermission 对象。
RemoveAll 方法
从集合中删除所有 UserPermission 对象。
Count 属性
获取集合中 UserPermission 对象的数目。
Item 属性(+1 重载)
获取一个 UserPermission 对象。

UserPermission 类概述

UserPermission 类提供下列属性和一个方法。

名称 说明
Remove 方法
从表单的权限中删除当前的 UserPermission 对象。
ExpirationDate 属性
获取或设置当前表单的权限的到期日期(可选),这些权限已分配给与 UserPermission 类的实例关联的用户。
Permission 属性
获取或设置代表当前表单的权限的值,这些权限已分配给与 UserPermission 类的实例关联的用户。
UserId 属性
获取用户的电子邮件地址,该用户对当前表单的权限由指定的 UserPermission 对象确定。

PermissionType 枚举

使用 PermissionType 枚举值来设置或读取用户权限。

名称 说明
PermissionType.Change
允许用户查看、编辑、复制和保存表单,但不允许打印表单。 效果与 ReadEditSaveExtract 权限组合相同。
PermissionType.Edit
允许用户编辑表单。
PermissionType.Extract
允许具有 Read 权限的用户复制表单中的内容。
PermissionType.FullControl
允许用户添加、更改和删除表单的其他用户的权限。
PermissionType.ObjectModel
允许用户通过表单文档的对象模型以编程方式访问表单文档。 不具有 ObjectModel 权限的用户不能使用对象模型来确定他们自己的权限。
PermissionType.Print
允许用户打印表单。
PermissionType.Read
允许用户) 窗体读取 (视图。 (“读取 ”和“ 查看 ”权限等效。)
PermissionType.Save
允许用户保存表单。
PermissionType.View
允许用户在窗体) 查看 (读取。 (“读取 ”和“ 查看 ”权限等效。)

示例

在以下示例中,单击“按钮”控件将获取当前表单的 UserPermissionsCollection,添加用户并为用户指定“更改”访问级别,以及设置从当前日期向后推算两天的到期日期。

public void CTRL1_Clicked(object sender, ClickedEventArgs e)
{
   string strExpirationDate = DateTime.Today.AddDays(2).ToString();
   DateTime dtExpirationDate = DateTime.Parse(strExpirationDate);
   this.Permission.UserPermissions.Add("someone@example.com", 
      PermissionType.Change, dtExpirationDate);
}
Public Sub CTRL1_Clicked(ByVal sender As Object, _
   ByVal e As ClickedEventArgs)
   Dim strExpirationDate As String = _
      DateTime.Today.AddDays(2).ToString()
   dtExpirationDate As DateTime = DateTime.Parse(strExpirationDate)
   Me.Permission.UserPermissions.Add("someone@example.com", _
      PermissionType.Change, dtExpirationDate)
End Sub