Частый вопрос, который возникает при разработке на платформе DocsVision, как выполнить различные операции с правами. Описание работы с правами приведено в документации "Руководство разработчика на платформе".
По ссылке вы можете скачать небольшой пример работы с правами. Проект на VB.NET для Visual Studio 2008.
Скачать пример.
добрый день. пробовал переписать пример под .Net библиотеки, так почему-то права назначаются только на объект. т.е. вложенные файлы не получают прав от карточки :(
ОтветитьУдалитьВ процедуре назначения прав SetRights обратите внимание на два параметра Inheritance и Propagation. Они отвечают за наследование.
ОтветитьУдалитьЧтобы наследовалось укажите inheritance = InheritanceFlags.ContainerInherit Or InheritanceFlags.ObjectInherit
propagation = PropagationFlags.InheritOnly
Про эти флаги можно почитать в MSDN
именно так я и делал.
ОтветитьУдалитьSetRights(secureCard, CardDataRights.Read, sAccount, InheritanceFlags.ContainerInherit Or InheritanceFlags.ObjectInherit, PropagationFlags.InheritOnly)
Private Sub SetRights(ByRef SecureCard As CardData, ByVal Rights As Integer, ByVal AccountName As String, ByVal Inheritance As InheritanceFlags, ByVal Propagation As PropagationFlags)
Try
' Получение описателя прав карточки
Dim newrights As CardDataSecurity = SecureCard.GetAccessControl()
' Создание нового разрешения – совокупного права чтения
Dim rule As New CardDataAccessRule(AccountName, Rights, AccessControlType.Allow, Inheritance, AccessControlType.Allow)
' Добавление нового разрешения к описателю прав
newrights.AddAccessRule(rule)
' Сохранение измененного описателя прав
SecureCard.SetAccessControl(newrights)
Catch ex As Exception
Dim sMessage As String = "Error in rights assignment: " & AccountName
End Try
End Sub