回答:
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)
2行目のすべてのものを無視できますが、気にするのは最初の行だけです。をfile1.bin
新しいファイル名に変更して、ファイルfile2.bin
を保存します。
ここで、2番目のファイルのファイル許可を復元する必要があります。今回はファイル名を含めなかったことに注意してください。(「参照されているすべての特権またはグループが呼び出し元に割り当てられているわけではありません。」というエラーが表示された場合は、昇格したコマンドプロンプトでプログラムを再度実行します。)
icacls C:\test\ /restore perms.txt
File.GetAccessControl()
します。File.SetAccessControl()
バッチで作成するには(サブフォルダーまたは1つのドライブのすべてのフォルダーからセキュリティ許可を別のドライブの同じフォルダー/ファイル構造にコピー)、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:\
ます。
宛先フォルダーのフォルダー構造は、ソースフォルダーとして指定したサブフォルダーに依存せず、ルートから取得したソースフォルダーのフォルダー構造と同じである必要があることに注意してください。