Answers:
您可以使用icacls和文本编辑器完成以下步骤。
首先,您必须保存原始文件的权限
icacls C:\test\file1.bin /save perms.txt
您将需要perms.txt
在运行的任何文件夹中编辑刚刚创建的文件icacls
。该文件应如下所示:
file1.bin
D:AI(A;;0x1301bf;;;BU)(A;ID;FA;;;BA)(A;ID;FA;;;SY)(A;ID;0x1200a9;;;BU)(A;ID;0x1301bf;;;AU)
您可以忽略第二行中的所有内容,我们只关心第一行。将更file1.bin
改为新的文件名file2.bin
并保存文件。
现在,您只需要恢复第二个文件的文件权限,请注意,这次我们不包括文件名。(如果出现错误消息“ 并非所有引用的特权或组都分配给了调用者。 ”,请在提升的命令提示符下再次运行该程序。)
icacls C:\test\ /restore perms.txt
File.GetAccessControl()
和File.SetAccessControl()
要批量处理(将安全性许可从一个驱动器的子文件夹或所有文件夹复制到另一驱动器上的同一文件夹/文件约束),请创建一个cpdacls.bat
具有以下内容的文件:
@echo off
for /r %1 %%f in (.) do call :icacls_one %%f %2
goto :eof
:icacls_one
icacls %1\*.* /save %TEMP%\perms.txt
icacls %2.%~pnx1 /restore %TEMP%\perms.txt
del /q %TEMP%\perms.txt
然后像这样运行它cpdacls.bat e:\ f:\
。
请注意,目标文件夹中的文件夹结构必须与源文件夹中的文件夹结构相同,并取自其根目录,而不取决于您指定了哪个子文件夹作为源文件夹。
到目前为止,最简单的方法是使用PowerShell并运行:
Get-Acl .\file1 | Set-Acl .\file2