Настройка управления правами на доступ к данным в Visio

Узнайте, как использовать управление правами на доступ к данным (IRM) с документами Visio.

Обзор

Используйте поддержку IRM для Visio, чтобы программными средствами:

  • Защита документа Visio от несанкционированного доступа.

  • Управление отдельным и групповым доступом к документу Visio, защищенному IRM.

  • Изменение разрешений IRM для документа Visio.

Требования

Чтобы использовать IRM для Visio, необходимо установить следующее:

Защита документа Visio

Чтобы защитить активный документ, используйте метод Permission.Add . Чтобы проверить, защищен ли документ, используйте свойство Enabled объекта Permission .

Чтобы удалить защиту активного документа, используйте метод Permission.RemoveAll или метод UserPermission.Remove для каждого пользователя, имеющего доступ.

Управление доступом пользователей к документу, защищенному IRM

Чтобы предоставить разрешения на активный документ указанному пользователю, используйте метод Permission.Add . Свойство Permission может быть одной или комбинацией констант msoPermission из следующей таблицы.


константа msoPermission Смысл
msoPermissionView Доступ на чтение
msoPermissionRead Доступ на чтение
msoPermissionEdit Изменение доступа
msoPermission Save Сохранение доступа
msoPermissionExtract Копирование доступа, если у пользователя также есть доступ на чтение
msoPermissionChange Доступ для просмотра, редактирования, копирования и сохранения, но не для печати документа. Это эквивалентно msoPermissionView + msoPermissionEdit + msoPermissionSave + msoPermissionExtract.
msoPermissionPrint Доступ к печати
msoPermissionObjModel Пользователь может получить доступ к документу программным способом. Это разрешение требуется всем пользователям для работы с защищенным документом или для проверки разрешений на документ.
msoPermissionFullControl Полный контроль над документом. Включены все разрешения.

Чтобы проверить разрешения для пользователя, используйте свойство UserPermission.Permission .

Чтобы применить разрешения с помощью политики администрирования, используйте метод Permission.ApplyPolicy . Используйте свойства PermissionFromPolicy, PolicyName и PolicyDescription для возврата сведений о политике.

Чтобы удалить разрешения для указанного пользователя, используйте метод UserPermission.Remove . Чтобы снять все ограничения активного документа, используйте метод Permission.RemoveAll .

Доступ к документу, защищенному IRM

Для доступа к защищенному документу пользователю требуется следующее:

  • msoPermissionObjModel

  • Конкретные разрешения IRM для любого используемого метода или события.

В следующих таблицах показаны необходимые разрешения. Используйте соответствующие константы msoPermission из предыдущего раздела. Почти для всех API-интерфейсов пользователю требуется разрешение Edit (msoPermissionEdit). Обратите внимание, что если у пользователя есть полный доступ (msoPermissionFullControl), все API включены.

Разрешения IRM для методов

Метод Требуемое разрешение
Copy Чтение и копирование
Copy (объект Selection ) Чтение и копирование
Copy (объект Shape ) Чтение и копирование
GetFilterCommands Чтение
GetFilterObjects Чтение
GetFilterSRC Чтение
GetFormulas[U] Чтение
GetNames[U] Чтение
GetPolylineData Чтение
GetResults Чтение
GetViewRect Чтение
Открыть (коллекция Документов ) Чтение
OpenEx Чтение
Print Чтение и печать
PrintTile Чтение и печать
Для всех остальных событий, не перечисленных здесь Редактирование

Разрешения IRM для событий

Событие Требуемое разрешение
DocumentOpened Чтение
WindowOpened Чтение
WindowTurnedToPage Чтение
Для всех остальных событий, не перечисленных здесь Редактирование

Примеры

Пример применения разрешения пользователя

В этом примере пользователю предоставляется сочетание разрешений на чтение и редактирование для активного документа и устанавливается дата окончания срока действия для этих разрешений.

Dim objPermission As Office.Permission
Dim objUserPerm As Office.UserPermission

Set objPermission = ActiveDocument.Permission
Set objUserPerm = objPermission.Add( _
"<user>@<domain>.com", _
msoPermissionRead + msoPermissionEdit, #12/31/2016#)
MsgBox "Permissions added for " & _
objUserPerm.UserId, _
vbInformation + vbOKOnly, _
"Permissions Added"
Set objUserPerm = Nothing

Пример применения политики разрешений администратора

В этом примере проверяется, защищен ли активный документ, и, если это не так, он защищает документ и применяет политику административных разрешений.

Dim irmPermission As Office.Permission 
 Set irmPermission = ActiveDocument.Permission 
 Dim strIRMInfo As String 
 Select Case irmPermission.Enabled 
 Case True 
 strIRMInfo = "Permissions are already restricted on this document." 
 Case False 
 With irmPermission 
 .Enabled = True 
 .ApplyPolicy ("\\server\share\permissionpolicy.xml") 
 End With 
 strIRMInfo = "Permissions are now restricted on this document " & _ 
 vbCrLf & _ 
 " and the permission policy has been applied." 
 End Select 
 MsgBox strIRMInfo, vbInformation + vbOKOnly, "IRM Information" 
 Set irmPermission = Nothing

Пример списка разрешенных пользователей

В этом примере проверяется, защищен ли активный документ, и, если это так, перечисляются пользователи и назначенные им разрешения.

Dim irmPermission As Office.Permission 
 Dim irmUserPerm As Office.UserPermission 
 Dim strIRMInfo As String 
 Set irmPermission = ActiveDocument.Permission 
 If irmPermission.Enabled Then 
 For Each irmUserPerm In irmPermission 
 strIRMInfo = strIRMInfo & irmUserPerm.UserId & vbCrLf & _ 
 " - Permissions: " & irmUserPerm.Permission & vbCrLf & _ 
 " - Expiration Date: " & irmUserPerm.ExpirationDate & vbCrLf 
 Next 
 MsgBox strIRMInfo, _ 
 vbInformation + vbOKOnly, "IRM Information" 
 Else 
 MsgBox "This document is not restricted.", _ 
 vbInformation + vbOKOnly, "IRM Information" 
 End If 
 Set irmUserPerm = Nothing 
 Set irmPermission = Nothing

Пример удаления разрешений пользователя

В этом примере удаляются разрешения второго пользователя на активный документ из коллекции Permission документа.

Dim irmPermission As Office.Permission 
 Dim irmUserPerm As Office.UserPermission 
 Set irmPermission = ActiveDocument.Permission 
 Set irmUserPerm = irmPermission.Item(2) 
 irmUserPerm.Remove 
 MsgBox "Permission removed.", _ 
 vbInformation + vbOKOnly, "IRM Information" 
 Set irmUserPerm = Nothing 
 Set irmPermission = Nothing

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.