3
C# 응용 프로그램을 개발 중입니다.존재하지 않는 사용자가 소유 한 폴더에서 ACL을 제거하는 방법
관리자 권한으로 내 프로그램을 실행하고 있으므로 모든 항목이 올바르게 작동하도록 폴더의 ACL을 변경해야합니다.
문제는 폴더를 소유 한 사용자가 시스템에서 삭제 된 경우 폴더에 대한 소유권을 가져 오려고 할 때 승인되지 않은 예외가 발생한다는 것입니다. 예외가 발생
라인using (new PrivilegeEnabler(Process.GetCurrentProcess(), Privilege.TakeOwnership))
{
var directorySecurity = directoryInfo.GetAccessControl();
directorySecurity.SetOwner(WindowsIdentity.GetCurrent().User);
Directory.SetAccessControl(directoryInfo.FullName, directorySecurity);
}
:
이
은 실패 코드를 directoryInfo.GetAccessControl();PrivilegeEnabler는 Process Privileges에 정의 된 클래스이며 파일에 대한 소유권을 가져 오는 데 사용됩니다.
stacktrace 및 전체 예외 메시지를 게시 할 수 있습니까? – Luxspes
[설명] (http://stackoverflow.com/questions/11384220/getnamedsecurityinfo-returns-error-access-denied5-when-writting-owner-of-a-rem/11385551#11385551). 즉, 권한을 읽을 수있는 권한이 없으면 소유권을 얻을 수 있습니다. 따라서 소유권을 가져와 ACL을 읽고 업데이트해야합니다. 내가 C#에서 편리하게 이것을 할 수 있다면 나는 모른다. – arx
[이 질문에 대한 답변] (http://stackoverflow.com/questions/5241718/taking-ownership-of-files-with-broken-permissions)이 방법에 대해 설명합니다. – arx