답변:
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:\
.
대상 폴더의 폴더 구조는 소스 폴더 로 지정한 하위 폴더에 관계없이 루트에서 가져온 소스 폴더의 폴더 구조와 같아야 합니다.