답변:
실제로 깨진 권한을 수정하려면 다음 두 명령을 차례로 실행하는 것이 가장 좋습니다.
takeown /f "C:\path\to\folder" /r
icacls "C:\path\to\folder" /reset /T
첫 번째 파일은 모든 파일에 대한 소유권을 제공하지만 모든 파일에 읽기 / 쓰기 / 실행 권한이 "거부"로 설정된 경우 충분하지 않을 수 있습니다. 파일을 소유하고 있지만 여전히 아무것도 할 수 없습니다.
이 경우 두 번째 명령을 실행하면 깨진 권한이 수정됩니다.
/D Y
매개 변수를 추가하여 takeown
'list directory'권한이없는 재귀 디렉토리를 자동 확인합니다.
/D Y
프랑스어 /D O
, 아마도 스페인어 /D S
등이 될 것입니다 .
경로가 매우 긴 파일 (256 자 이상)에 문제가있었습니다. 두 명령
takeown /f "C:\path\to\really_long_folder_name" /r
icacls "C:\path\to\really_long_folder_name" /reset /T
정말 긴 경로와 이름을 가진 파일을 제외하고는 효과가있었습니다. 나는 이름을 바꾸었다
"C:\path\to\really_long_folder_name"
에
"C:\path\to\r"
그런 다음 실행
takeown /f "C:\path\to\r" /r /D Y
icacls "C:\path\to\r" /grant Everyone:(F) /t /c /q
그 후 폴더 이름을 더 합리적인 것으로 바꿀 수 있습니다. takeown의 / DY는 프롬프트에 yes로 응답합니다. icacls의 경우 하위 폴더와 파일을 처리하는 / t, 자동 모드로 실행하는 / q를 사용하여 / grant를 사용하여 모든 사용자에게 액세스 권한을 부여했습니다 (죽은 PC에서 하드 드라이브의 데이터에 액세스하려고했을 때). 성공) 및 / c를 표시하여 오류를 표시합니다. 모든 파일 권한이 성공적으로 업데이트 될 때까지 폴더 이름을 바꾸면서 프로세스를 반복했습니다.
이 방법은 오래된 하드 드라이브에서 데이터에 액세스하려고 할 때 "컨테이너 액세스에서 개체를 열거하지 못했습니다"오류와 유사한 오류가 발생한 사람에게 도움이되기를 바랍니다.
/ reset 팁에 대해 @ this.lau_에게 감사드립니다. CSC를 소유하고 백업하기 위해 스크립트를 완성하는 데 필요한 것입니다. C : \ Windows \ CSC의 소유권을 얻은 후에는 상속과 관련하여 권한이 매우 일치하지 않는 경향이 있습니다. / reset 스위치는이 문제를 바로 잡았습니다.
Function Copy-CSCData {
$Datetime = Get-Date -Format yyyyMMdd.hhmmss
$LogPath = 'PATH TO LOG'
$CSCSource = 'C:\Windows\CSC\v2.0.6\namespace'
$Dest = 'DESTINATION PATH'
$icaclsource = "\\?\" + $CSCSource
$CSCLogfile = "$LogPath\" + "$Datetime" + "_CSCRobocopy.log"
icacls.exe $icaclsource /reset /T
icacls.exe $icaclsource /grant :r "Everyone:(OI)(CI)F"
Robocopy $CSCSource $Dest /Copy:DATSO /E /XO /Z /LOG+:$CSCLogfile /V /FP /NP /R:2 /W:2 /XF "~$*","*.tmp"
}
@Thesle Williams-위에서 $ icaclsource 변수를 확인하면 소스 경로 앞에 "\? \"가 추가됩니다. 이것을 앞에 추가하면 더 긴 파일 이름을 사용할 수 있습니다. 이것은 또한 내가 가진 문제이지만 이것이 해결되었습니다! 건배.
조롱