반응형
백오피스 운영 중 발생한 오류로
NAS 권한이 없는 직원이 NAS 에 파일 업로드하는 기능을 사용하여 오류가 발생했습니다.
NAS 권한은 없다보니 이미지는 옮겨지지 않고, DB만 서비스 DB 로 업데이트되어 대참사가 발생했습니다.
폴더 권한을 미리 체크하는 로직을 추가하여 오류를 해결했습니다.
샘플 코드는 아래와 같습니다.
공통함수로 만들어서 사용하였습니다.
실제 사용해보니 권한 체크 분기에서 걸리지는 않고 대부분 try catch 구문에서 예외가 발생해서 false로 리턴되네요.
using System;
using System.IO;
using System.Security.AccessControl;
class Program
{
static void Main()
{
string folderPath = "경로\\폴더명"; // 확인하려는 폴더의 경로로 수정하세요
if (CheckFolderPermissions(folderPath))
{
Console.WriteLine("폴더에 쓰기 권한이 있습니다.");
}
else
{
Console.WriteLine("폴더에 쓰기 권한이 없거나 확인할 수 없습니다.");
}
}
static bool CheckFolderPermissions(string folderPath)
{
try
{
DirectorySecurity directorySecurity = Directory.GetAccessControl(folderPath);
AuthorizationRuleCollection rules = directorySecurity.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount));
foreach (AuthorizationRule rule in rules)
{
FileSystemAccessRule fileSystemRule = rule as FileSystemAccessRule;
if (fileSystemRule != null && (fileSystemRule.FileSystemRights & FileSystemRights.WriteData) != 0)
{
return true; // 쓰기 권한이 있는 경우
}
}
return false; // 쓰기 권한이 없는 경우
}
catch (UnauthorizedAccessException)
{
return false; // 예외가 발생하면 권한이 없는 것으로 간주
}
}
}
감사합니다.
반응형
'C#' 카테고리의 다른 글
C# 파일 확장자 타입 체크 시 실수 (0) | 2024.05.14 |
---|---|
C# Winform 반짝이는 버튼 컨트롤 만들기 (0) | 2021.12.19 |
c# Devexpress gridcontrol 특정 셀 버튼 표시 방법 (0) | 2021.12.19 |
C# 폴더 파일 구분 (0) | 2021.04.13 |
c# 숨김 폴더(디렉토리) 체크 방법 (0) | 2021.04.13 |