将所有管理员的读取权限添加到复制的文件中

时间:2019-07-11 15:47:29

标签: windows security winapi acl

问题很简单,我的应用程序将某个文件从一个位置复制到另一个位置。
所有管理员都应读取目标文件夹中的文件,而无需提升特权。

我找到了应该使用的API:

但是我不太会使用Windows API,并且此安全API相当复杂,因此我需要使用该API的帮助。 我的主要问题是如何获得$ds=GCI "C:\Users\Personal\Documents\Misc"|?{$_.PSIsContainer}|Select -Exp FullName ForEach($f In $ds){ $gs=GCI $f|?{(!($_.PSIsContainer))}|Group Extension ForEach($g In $gs){ $n=Join-Path $f($g.Name.Substring(1,($g.Name.Length-1))) If(-Not(Test-Path $n)){[Void](MD $n)} $g.Group|Move -Dest $n } } ?其他内容很明显,或者我只能提供psidGroup

还是有更好的API,以便在复制文件时可以为管理员添加此读取权限?

1 个答案:

答案 0 :(得分:0)

psidGroup中的

SetNamedSecurityInfo用于更改文件的所有者或组。 msdn上有an example,请先获取旧的安全信息,然后再修改(SetEntriesInAcl)并提交(SetNamedSecurityInfo)。如果要设置组的权限,请将EXPLICIT_ACCESS.Trustee.TrusteeType设置为TRUSTEE_IS_GROUP,则可以设置组的权限。