Удаление унаследованных прав на карточку
Сценарий, приведенный в примере, предназначен для удаления унаследованных прав на карточку
Сценарий работает со следующими переменными процесса:
-
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 для карточки. |