[C#/COMMON] Directory 클래스 : GetAccessControl 정적 메소드를 사용해 디렉토리 쓰기 권한 체크하기
C#/Common 2022. 10. 23. 15:41728x90
반응형
728x170
■ Directory 클래스의 GetAccessControl 정적 메소드를 사용해 디렉토리 쓰기 권한을 체크하는 방법을 보여준다.
▶ Directory 클래스 : GetAccessControl 정적 메소드를 사용해 디렉토리 쓰기 권한 체크하기 예제 (C#)
using System;
using System.Security.Principal;
SecurityIdentifier securityIdentifier = new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid, null);
Console.WriteLine(CheckDirectoryWritePermission("c:\\temp", securityIdentifier));
▶ Directory 클래스 : GetAccessControl 정적 메소드를 사용해 디렉토리 쓰기 권한 체크하기 (C#)
using System.IO;
using System.Security.AccessControl;
using System.Security.Principal;
#region 디렉토리 쓰기 권한 체크하기 - CheckDirectoryWritePermission(directoryPath, securityIdentifier)
/// <summary>
/// 디렉토리 쓰기 권한 체크하기
/// </summary>
/// <param name="directoryPath">디렉토리 경로</param>
/// <param name="securityIdentifier">보안 식별자</param>
/// <returns>쓰기 권한 여부</returns>
public bool CheckDirectoryWritePermission(string directoryPath, SecurityIdentifier securityIdentifier)
{
if(string.IsNullOrEmpty(directoryPath) || !Directory.Exists(directoryPath))
{
return false;
}
try
{
DirectorySecurity directorySecurity = Directory.GetAccessControl(directoryPath);
foreach(AuthorizationRule authorizationRule in directorySecurity.GetAccessRules(true, true, typeof(SecurityIdentifier)))
{
if(authorizationRule.IdentityReference == securityIdentifier)
{
FileSystemAccessRule fileSystemAccessRule = authorizationRule as FileSystemAccessRule;
if(fileSystemAccessRule.AccessControlType == AccessControlType.Allow)
{
if(fileSystemAccessRule.FileSystemRights == (fileSystemAccessRule.FileSystemRights | FileSystemRights.Modify))
{
return true;
}
}
}
}
return false;
}
catch
{
return false;
}
}
#endregion
728x90
반응형
그리드형(광고전용)
'C# > Common' 카테고리의 다른 글
[C#/COMMON/.NET6] MemoryStream 클래스 : Write 메소드를 사용해 스트림에서 바이트 배열 구하기 (0) | 2022.10.24 |
---|---|
[C#/COMMON/.NET6] DateTime 구조체 : ParseExact 정적 메소드를 사용해 ISO 8601 날짜 포맷 문자열에서 DateTime 객체 구하기 (0) | 2022.10.24 |
[C#/COMMON/.NET6] DateTime 구조체 : Parse 정적 메소드를 사용해 ISO 8601 날짜 포맷 문자열에서 DateTime 객체 구하기 (0) | 2022.10.24 |
[C#/COMMON/.NET6] Process 클래스 : 부모 프로세스 종료시 자식 프로세스 종료시키기 (0) | 2022.10.24 |
[C#/COMMON/.NET6] Uri 클래스 : Host 속성을 사용해 도메인 호스트 구하기 (0) | 2022.10.23 |
[C#/COMMON] Directory 클래스 : GetAccessControl 정적 메소드를 사용해 디렉토리 권한 체크하기 (0) | 2022.10.23 |
[C#/COMMON/.NET6] File 클래스 : Create 정적 메소드를 사용해 디렉토리 쓰기 가능 여부 구하기 (0) | 2022.10.23 |
[C#/COMMON/.NET6] 64비트 운영 체제 여부 구하기 (0) | 2022.10.22 |
[C#/COMMON/.NET6] 64비트 운영 체제 여부 구하기 (0) | 2022.10.22 |
[C#/COMMON/.NET6] 64비트 프로세스 여부/64비트 운영 체제 여부 구하기 (0) | 2022.10.21 |
댓글을 달아 주세요