첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
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
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요