System.IO.Directory.CreateDirectory с разрешениями только для этого текущего пользователя? - PullRequest
2 голосов
/ 17 июня 2009

Я хочу, чтобы приложение asp создавало папку, которая имеет доступ только к той учетной записи, с которой работало приложение (т.е. к учетной записи asp?)

Я на самом деле хочу использовать этот , но я не знаю, как использовать "Computer \ CurrentAccount" динамически.

Я хочу получить текущий рабочий аккаунт.

Спасибо.

1 Ответ

5 голосов
/ 17 июня 2009

Существует пример создания экземпляра 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.

...