Стать владельцем папки, когда приложение работает как локальная система

Я хочу, чтобы мое приложение могло владеть папкой, изменять разрешения NTFS, что-то делать, восстанавливать разрешения NTFS и владельца.

Мое приложение работает как локальная СИСТЕМА. Так как мое приложение не имеет разрешений NTFS, даже получение ACL не выполняется:

PS C: \ Users \ Администратор> Get-ACL D:\dir2\dir3 Get-ACL: доступ запрещен В строке:1 символ:1 + Get-ACL D:\dir2\dir3 + ~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: PermissionDenied: (D:\dir2\dir3:String) [Get-Acl], UnauthorizedAccessException + FullyQualifiedErrorId: ItemExistsUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetAclC

Следующий код C# приводит к несанкционированному исключению:

DirectorySecurity directorySecurity = directoryInfo.GetAccessControl();
IdentityReference currentOwner = directorySecurity.GetOwner(typeof(SecurityIdentifier));
IdentityReference systemUser = WindowsIdentity.GetCurrent().User;
haveToTakeOwnership = (currentOwner.Value != systemUser.Value);
if (haveToTakeOwnership) {
    directorySecurity.SetOwner(WindowsIdentity.GetCurrent().User);
    Directory.SetAccessControl(fileShare.Path, directorySecurity);
}

Я прочитал, как стать владельцем файла или папки, и стал владельцем файла C# и использовал Privilege как это:

p = new Privilege(Privilege.TakeOwnership);
p.Enable();

Но оказывается, что это закрытый класс, и я не могу использовать его напрямую. Кроме того, я не могу использовать сторонние программы, такие как ProcessPrivileges, как показано в разделе "Получение права собственности на файл или папку".

Я побежал whoami /priv и понял, что пользователь SYSTEM также не имеет SeTakeOwnershipPrivilege не может это SeRestorePrivilege,

На этом этапе я хочу понять, могу ли я дать повышенным привилегиям локальной системы, чтобы мой код работал?

0 ответов

Другие вопросы по тегам