Существует пример создания экземпляра DirectorySecurity
и добавления ACE для именованного пользователя здесь (но используйте конструктор по умолчанию для запуска с пустым ACL).
Чтобы получить SID учетной записи, есть две возможности (требуется тестирование):
Первый подход состоит в том, чтобы полагаться на владельца процесса, являющегося владельцем каталога. Это может привести к поломке, если вы выполняете олицетворение (например, под аутентификацией Windows, чтобы идентификатор клиента использовался для контроля доступа к содержимому файловой системы):
var ds = new DirectorySecurity();
var sid = new SecurityIdentifier(WellKnownSidType.CreatorOwnerSid, null)
var ace = new FileSystemAccessRule(sid,
FileSystemRights.FullControl,
AccessControlType.Allow);
ds.AddAccessRule(ace);
Второй подход к получению владельца процесса из токена процесса - это P / Invoke. Это включает пример: http://www.codeproject.com/KB/cs/processownersid.aspx, после того, как у вас есть SID, создайте для него экземпляр SecurityIdentifier и следуйте приведенным выше инструкциям для создания ACL.