.NET如何获取文件所有权(GetAccessControl权限不足)

比如现在有个文件,所有者是SYSTEM,权限为Everyone:deny禁止访问

现在我用administrator账户执行代码
可以用IO.FileInfo获取文件信息,但是无法用GetAccessControl的方式打开ACL列表(试图执行未经授权的操作)

在windows资源管理器的安全选项卡,我可以先获取文件所有权为administrator,再设置访问权

在命令行,我可以用windows自带的takeown获取所有权,再用icacls设置访问权

在.net编程谁知道怎么处理,求解

给你的进程过去到admin运行权限。
你尝试把文件粘贴出去。重新粘进你的文件里就行。

需要进程启动的时候使用的令牌里有SeTakeOwnershipPrivilege 然后才可以用AdjustTokenPrivileges启用这个权限。可以用Process Explorer验证令牌。
之后可以用
SetNamedSecurityInfo OWNER_SECURITY_INFORMATION
替换文件的安全信息。

示例代码可以参考
https://gist.github.com/mkht/382911c344dff7b7cd2fe72417491e70
死链接了的话也可以自己搜索SeTakeOwnershipPrivilege: StructLayoutAttribute OWNER_SECURITY_INFORMATION