Câu trả lời:
Bạn có thể làm điều đó trong một vài bước với icacls và trình soạn thảo văn bản.
Trước tiên, bạn phải lưu quyền của tệp gốc
icacls C:\test\file1.bin /save perms.txt
bạn sẽ cần chỉnh sửa perms.txt
tệp bạn vừa tạo trong bất kỳ thư mục nào bạn đã chạy icacls
. Tệp sẽ trông giống như thế này:
file1.bin
D:AI(A;;0x1301bf;;;BU)(A;ID;FA;;;BA)(A;ID;FA;;;SY)(A;ID;0x1200a9;;;BU)(A;ID;0x1301bf;;;AU)
Bạn có thể bỏ qua tất cả những thứ trên hàng thứ 2, tất cả những gì chúng tôi quan tâm là hàng đầu tiên. Thay đổi file1.bin
tên tệp mới của bạn file2.bin
và lưu tệp.
Bây giờ bạn chỉ cần khôi phục quyền truy cập tệp trên tệp thứ 2, lưu ý rằng lần này chúng tôi không bao gồm tên tệp. (Nếu bạn gặp lỗi thông báo " Không phải tất cả các đặc quyền hoặc nhóm được tham chiếu đều được gán cho người gọi. " Chạy lại chương trình trong dấu nhắc lệnh nâng cao.)
icacls C:\test\ /restore perms.txt
File.GetAccessControl()
vàFile.SetAccessControl()
Để thực hiện theo lô (sao chép các phần mềm bảo mật từ thư mục con hoặc tất cả các thư mục của một ổ đĩa vào cùng một thư mục / tệp nghiêm ngặt trên một ổ đĩa khác), hãy tạo một cpdacls.bat
tệp , giả sử, có nội dung này:
@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
Và sau đó chạy nó như thế nào cpdacls.bat e:\ f:\
.
Lưu ý rằng cấu trúc thư mục trong thư mục đích phải giống với cấu trúc thư mục trong thư mục nguồn, được lấy từ thư mục gốc , không phụ thuộc vào thư mục con nào bạn đã chỉ định làm thư mục nguồn.
Cách dễ nhất, cho đến nay, là sử dụng PowerShell và chạy:
Get-Acl .\file1 | Set-Acl .\file2