Стать владельцем папки, когда приложение работает как локальная система - PullRequest
0 голосов
/ 04 октября 2018

Я хочу, чтобы мое приложение могло владеть папкой, изменять разрешения 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:Строка) [Get-Acl], UnauthorizedAccessException + FullyQualifiedErrorId: ItemExistsUnauthorizedAccessError, Microsoft.PowerShell.Commands.GetAclCommand

Следующий код 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.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...