Теоретически это должно быть довольно просто. Вы должны иметь возможность сделать что-то подобное, чтобы изменить владельца существующего файла:
string domain = "domain";
string user = "username";
FileInfo info = new FileInfo(@"c:\test.txt");
FileSecurity security = info.GetAccessControl();
System.Security.Principal.NTAccount newOwner =
new System.Security.Principal.NTAccount(domain, user);
security.AddAccessRule(
new FileSystemAccessRule(newOwner, FileSystemRights.FullControl,
AccessControlType.Allow));
security.SetAccessRuleProtection(true, false);
security.SetOwner(newOwner);
info.SetAccessControl(security);
Однако на практике это не работает из-за ограничений, накладываемых Windows. Windows не позволит вам изменить владельца файла на что-либо, кроме текущего пользователя или группы администраторов.
Когда он попадает в последнюю строку, вы получите исключение «Идентификатор безопасности не может быть владельцем этого объекта».
Гугл предполагает, что, возможно, можно обойти эту проблему, но я не смог заставить работать обходные пути, когда пытался в прошлом. Мне было бы очень интересно узнать, удалось ли кому-нибудь успешно справиться с этой задачей.