Удаление унаследованных прав на карточку

Сценарий, приведенный в примере, предназначен для удаления унаследованных прав на карточку

Сценарий работает со следующими переменными процесса:
  • Card — карточка, для которой осуществляется удаление унаследованных прав. Тип "Карточка DV".

using System;
using System.Security.AccessControl;
using System.Xml; (1)

using DocsVision.Workflow.Objects;
using DocsVision.Workflow.Runtime;
using DocsVision.Workflow.Gates;
using DocsVision.Platform.HelperAPI;
using DocsVision.Platform.ObjectManager;
using DocsVision.Platform.Security.AccessControl; (2)

namespace DVScriptHost
{
 class DVScript
 {
  public void Execute(DocsVision.Workflow.Runtime.ProcessInfo process, PassState passInfo)
  {
   try
   {

    ProcessVariable varCard = process.GetVariableByName("Card"); (3)

    DVCard oCard = varCard.Value as DVCard; (4)

    DVGate dvGate = process.Gates[DVGate.GateID] as DVGate;
    CardData card = dvGate.UserSession.CardManager.GetCardData(new Guid(oCard.ID));

    CardDataSecurity cardDataSecurity = card.GetAccessControl(); (5)

    byte[] descBytes = cardDataSecurity.GetSecurityDescriptorBinaryForm();
    CommonSecurityDescriptor desc = new CommonSecurityDescriptor(true, false, descBytes, 0); (6)

    desc.SetDiscretionaryAclProtection(true, false);

    descBytes = new byte[desc.BinaryLength];
    desc.GetBinaryForm(descBytes, 0);
    cardDataSecurity.SetSecurityDescriptorBinaryForm(descBytes); (7)

    card.SetAccessControl(cardDataSecurity); (8)

   } catch (Exception ex)
   {

    process.LogMessage("Ошибка выполнения скрипта:" + ex.Message); (9)
   }
  }
 }
}
1 Подключение системных библиотек.
2 Подключение библиотек СУБП.
3 Получение переменных процесса.
4 Приведение переменной к типу "Карточка DV".
5 Получение ACL для карточки.
6 Получение дескриптора безопасности.
7 Отключение наследования прав.
8 Сохранение дескриптора.
9 Обновление ACL для карточки.