ObjectSecurity.GetOwner возвращает группу, а не пользователя - PullRequest
3 голосов
/ 16 мая 2011

Я пытаюсь определить пользователя, который создал определенный файл, например:

string path = "C:\\TheFile.dat";
string user = System.IO.File.GetAccessControl(path).GetOwner(typeof(System.Security.Principal.NTAccount)).ToString();

Когда файл был создан пользователем, который был не членом группы пользователей «Администраторы», имя пользователя было возвращено. Однако, когда файл был создан кем-то, кто был членом группы пользователей «Администраторы», было возвращено «Домен \ Администраторы».

Кто-нибудь может подумать, почему это может произойти и как я могу гарантировать, что будет возвращено реальное имя пользователя?

Спасибо.

1 Ответ

6 голосов
/ 16 мая 2011

Это поведение по умолчанию самой операционной системы. Просто создайте новый файл и выполните: «щелкните правой кнопкой мыши> вкладка« Безопасность »>« Дополнительно »>« Владелец »), и вы увидите, что если вы являетесь администратором, на вкладке« Владелец »будет две записи. Первый - «Администраторы», второй - пользователь, создавший файл. Если это компьютер клиента, это всегда будет поведение по умолчанию. Причина: Если пользователь является администратором, то созданные им файлы считаются принадлежащими всей группе администраторов, а не отдельному пользователю.

...