当应用程序作为本地系统运行时,获得文件夹的所有权

时间:2018-10-04 01:02:27

标签: c# windows permissions local-system-account localsystem

我希望我的应用程序能够拥有文件夹的所有权,更改NTFS权限,执行某些操作,还原NTFS权限和所有者。

我的应用程序作为本地SYSTEM运行。由于我的应用程序没有NTFS权限,因此即使获取ACL也会失败:

  

PS C:\ Users \ Administrator> Get-ACL D:\ dir2 \ dir3   Get-ACL:访问被拒绝   在第1行:char:1   + Get-ACL D:\ dir2 \ dir3   + ~~~~~~~~~~~~~~~~~~~~       + CategoryInfo:PermissionDenied:(D:\ dir2 \ dir3:String)[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);
}

我读了Taking ownership of a file or foldertake ownership of a file c#,并像这样使用Privilege

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

但是事实证明这是一个私有类,我不能直接使用它。 另外,我不能像Taking ownership of a file or folder所示使用第三方软件,例如ProcessPrivileges。

我运行了whoami /priv,发现SYSTEM用户既没有SeTakeOwnershipPrivilege也没有SeRestorePrivilege

在这一点上,我想了解是否可以赋予本地系统更高的特权,以便我的代码可以工作?

0 个答案:

没有答案