' Rights
iRights = &H1 + &H2 ' read+change!
aEmpl = Array ("DOMAIN\User1","DOMAIN\User2")
' Get secure object
Set oSecureObj = UserSession.AccessManager.GetSecureCard(CardData.ID)
Set oSD = oSecureObj.ADsSecurityDescriptor
Set oDACL = oSD.DiscretionaryAcl
' remove old ace's
Do
bFlag = False
For Each oACE In oDACL
oDACL.RemoveAce (oACE)
bFlag = True
Next
Loop Until bFlag = False
' Add Rights
For n = 0 To iCount
sEmpl = aEmpl(n)
If CStr(sEmpl) <> "" Then
Set oNewAce = CreateObject("AccessControlEntry")
oNewAce.AccessMask = iRights
oNewAce.AceType = 0 ' allowed
oNewAce.AceFlags = 2 'inherit
oNewAce.Trustee = sEmpl
oDACL.AddAce oNewAce
End If
Next
Set oSecureObj.ADsSecurityDescriptor = oSD
Список прав (все значения являются битовой маской и могут суммироваться):
"000F001F"
Полный доступ
"00000001"
Чтение данных объекта
"00000002"
Изменение данных объекта
"00000004"
Создание дочерних объектов
"00000008"
Удаление дочерних объектов
"00000010"
Копирование объекта
"00010000"
Удаление объекта
"00020000"
Чтение разрешений
"00040000"
Изменение разрешений
"00080000"
Смена владельца
"00020001"
Чтение
"0000001E"
Изменение
"00010000"
Удаление
"000C0000"
Владение
При назначении прав в бизнес-процессе или из .net приложений, нужно пользоваться методами .net framework