[C#] 파일에 대한 전체 액세스 권한
하고 싶은 일
윈도 PC에서 제작하고 싶은 관리자 사용자, 관리자의 사용자가 모두 접근할 수 있는 파일이 아닙니다.
방법
FileSecurity
사용류,FileSystemAccessRule
류.File.GetAccessControl()
지정된 파일 이름FileSecurity
을 통해FileSystemAccessRule
클래스 제작AddAccessRule()
에서 만든 FileSystemAccess RuleFile.SetAccessControl()
이렇게 하면 지정한 파일에 대한 접근 권한을 설정할 수 있습니다.
코드는 다음과 같습니다.
간은 AddFileSecurity() 방법입니다.
using System;
using System.IO;
using System.Security.AccessControl;
using System.Windows;
namespace FileAccessRightsTest
{
class Program
{
static string TargetStringFilePath = @"C:\ProgramData\MyDebug\TargetString.txt";
static void Main(string[] args)
{
WriteStringToFile(TargetStringFilePath, "AAAAAAA......");
}
/// <summary>
/// アクセス権限セットのありなしを選ばせた後、
/// 指定のファイルを作成し(開き)、
/// 全ユーザーにフルアクセス権限を許可する。
/// ファイルを開けなかったら開けないときの例外のMessageをMessageBoxで表示する
/// </summary>
public static void WriteStringToFile(string path, string data)
{
Console.WriteLine("0:アクセス権限セットなし 1:セットあり");
var acSet = Console.ReadLine();
try
{
var dir = Path.GetDirectoryName(path);
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
using (var fs = new FileStream(path, FileMode.Create))
using (var sw = new StreamWriter(fs))
{
sw.Write(data);
MessageBox.Show("ファイル作成完了");
}
if (acSet != "0")
{
AddFileSecurity(path, @"BUILTIN\Users", FileSystemRights.FullControl, AccessControlType.Allow);
MessageBox.Show("セキュリティセット完了");
}
else
{
MessageBox.Show("セキュリティセットなし");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
// https://docs.microsoft.com/ja-jp/dotnet/api/system.security.accesscontrol.filesecurity?view=windowsdesktop-5.0
// のサンプルそのまま。
public static void AddFileSecurity(string fileName, string account, FileSystemRights rights, AccessControlType controlType)
{
// Get a FileSecurity object that represents the
// current security settings.
FileSecurity fSecurity = File.GetAccessControl(fileName);
// Add the FileSystemAccessRule to the security settings.
fSecurity.AddAccessRule(new FileSystemAccessRule(account, rights, controlType));
// Set the new access settings.
File.SetAccessControl(fileName, fSecurity);
}
}
}
메모지
샘플 코드는 @"C:\ProgramData\MyDebug\TargetString.txt"에서 파일을 만듭니다.
상기 코드를 사용하여 전면적인 접근을 하는 방법은 구체적으로
그렇지 않으면 전체 액세스 권한이 부여되지 않습니다. 예를 들어
되다
향후 ToDo
아시겠지만 일단 권한만 부여되면 방문할 수 있습니다.
MS 공식의 DACL SACL은 잘 모릅니다.
공부가 필요해...
참고 자료
FileSecurity 수준에 대한 공식 설명
@ "BUILTIN\Users"는 모든 사용자가 액세스할 수 있음을 나타냅니다.
WellKnownSidType.BuiltinUsersSid
모든 사용자를 지정할 수 있습니까?(시도되지 않음)파일의 읽기와 쓰기
Reference
이 문제에 관하여([C#] 파일에 대한 전체 액세스 권한), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/tera1707/articles/012a3bf01e598d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)