반응형
C # .NET을 사용하여 폴더에 "Everyone"권한 추가
모든 사람이 폴더에 액세스 할 수 있도록 아래 코드를 사용했습니다.
System.Security.AccessControl.DirectorySecurity sec =
System.IO.Directory.GetAccessControl(directory, AccessControlSections.All);
FileSystemAccessRule accRule = new FileSystemAccessRule("Everyone",
FileSystemRights.Modify,
AccessControlType.Allow);
sec.AddAccessRule(accRule); // setACL
sec.ResetAccessRule(accRule);
이제 Everyone 사용자가 폴더에 추가 언어 권한이 할당됩니다. 읽기, 쓰기, 실행 등의 모든 언어가 선택되어 있습니다.
가장 먼저 말씀 드리고 싶은 것이 솔루션을 방법입니다. 이것은 아마도 더 중요 할 것입니다.
먼저 Windows 대화 상자와 사용하여 원하는 권한을 설정했습니다. "모든 사람"에 대한 규칙을 추가하고 "모든 권한"을 모든 상자를 선택했습니다.
그런 다음 Windows 설정을 복제하는 데 필요한 요청 변수를 정확히 알려주기 위해 C # 코드를 작성했습니다.
string path = @"C:\Users\you\Desktop\perms"; // path to directory whose settings you have already correctly configured
DirectorySecurity sec = Directory.GetAccessControl(path);
foreach (FileSystemAccessRule acr in sec.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount))) {
Console.WriteLine("{0} | {1} | {2} | {3} | {4}", acr.IdentityReference.Value, acr.FileSystemRights, acr.InheritanceFlags, acr.PropagationFlags, acr.AccessControlType);
}
이 다음과 같은 출력 라인을 제공했습니다.
Everyone | Modify, Synchronize | ContainerInherit, ObjectInherit | None | Allow
따라서 솔루션은 간단합니다 (찾아야 할 항목을 모르는 경우 제대로 이해하기 어렵습니다!).
DirectorySecurity sec = Directory.GetAccessControl(path);
// Using this instead of the "Everyone" string means we work on non-English systems.
SecurityIdentifier everyone = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
sec.AddAccessRule(new FileSystemAccessRule(everyone, FileSystemRights.Modify | FileSystemRights.Synchronize, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow));
Directory.SetAccessControl(path, sec);
이렇게하면 Windows 보안 대화 상자의 설정이 테스트 디렉터리에 대해 이미 설정 한 것과 일치하게됩니다.
아래 코드는 폴더 존재 여부를 확인하고 생성하지 않은 경우 생성합니다. 그런 다음 전체 권한 (읽기 및 쓰기)으로 해당 폴더의 모든 사용자 권한을 설정합니다.
string file = @"D:\Richi";
private static void GrantAccess(string file)
{
bool exists = System.IO.Directory.Exists(file);
if (!exists)
{
DirectoryInfo di = System.IO.Directory.CreateDirectory(file);
Console.WriteLine("The Folder is created Sucessfully");
}
else
{
Console.WriteLine("The Folder already exists");
}
DirectoryInfo dInfo = new DirectoryInfo(file);
DirectorySecurity dSecurity = dInfo.GetAccessControl();
dSecurity.AddAccessRule(new FileSystemAccessRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null), FileSystemRights.FullControl, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.NoPropagateInherit, AccessControlType.Allow));
dInfo.SetAccessControl(dSecurity);
}
모든 작업 (ACL)을 허용하려는 경우 FileSystemRights.FullControl
대신 사용하십시오 FileSystemRights.Modify
.
참고 URL : https://stackoverflow.com/questions/5298905/add-everyone-privilege-to-folder-using-c-net
반응형
'ProgramingTip' 카테고리의 다른 글
Bash 완성의 맥락에서 $ {array [*]}와 $ {array [@]}에 대한 혼동 (0) | 2020.11.04 |
---|---|
MVC 반환 부분보기를 JSON으로 (0) | 2020.11.04 |
Putty (ssh)를 사용하여 서버에 파일을 업로드하는 방법 (0) | 2020.11.04 |
서블릿 필터에 여러 URL 패턴 제공 (0) | 2020.11.04 |
Google 크롬에서 두 요소 스타일의 차이점 (0) | 2020.11.04 |