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

2

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

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

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

Спасибо.

Теги:
filesystems

1 ответ

5
Лучший ответ

Существует пример создания экземпляра DirectorySecurity и добавления ACE для именованного пользователя здесь (но используйте конструктор по умолчанию для начните с пустого ACL).

Чтобы получить SID учетной записи, есть две возможности (это требует тестирования):

Первый подход заключается в том, чтобы полагаться на владельца процесса, являющегося владельцем каталога. Вероятно, это будет нарушено, если вы выполняете олицетворение (например, под Windows Authentication, чтобы иметь идентификатор клиента, используемый для контроля доступа к содержимому файловой системы):

var ds = new DirectorySecurity();
var sid = new SecurityIdentifier(WellKnownSidType.CreatorOwnerSid, null)
var ace = new FileSystemAccessRule(sid,
                                   FileSystemRights.FullControl,
                                   AccessControlType.Allow);
ds.AddAccessRule(ace);

Второй подход, чтобы получить владельца процесса от Token процесса, для этого потребуется P/Invoke. Это включает в себя пример: http://www.codeproject.com/KB/cs/processownersid.aspx, как только у вас есть SID, создайте для него экземпляр SecurityIdentifier и следуйте приведенному выше, чтобы создать ACL.

  • 0
    Я хочу, чтобы «Компьютер \ Пользователь» был динамичным.
  • 0
    @Shimmy: я думал, что вы могли бы :-) ... расширяется.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню