Nice programing

모든 사용자에게 내 응용 프로그램에서 만든 파일에 대한 전체 권한을 부여하는 방법은 무엇입니까?

nicepro 2020. 11. 4. 08:28
반응형

모든 사용자에게 내 응용 프로그램에서 만든 파일에 대한 전체 권한을 부여하는 방법은 무엇입니까?


내가 개발 한 도구는 자신이 만든 파일에 "모든 권한"액세스 권한을 부여해야합니다. 모든 Windows 계정 및 향후 가능한 계정에서 읽고 수정하고 삭제해야합니다. 이것이 달성 될 수 있습니까?

SPECIFIC_USER를 위해 이것을 시도 할 수 있다는 것을 알고 있습니다.

FileSystemAccessRule rule = new FileSystemAccessRule(SPECIFIC_USER, FileSystemRights.FullControl, AccessControlType.Allow);
FileSecurity fSecurity = File.GetAccessControl(filePath);
fSecurity.SetAccessRule(rule);
File.SetAccessControl(filePath, fSecurity);

그러나 모든 사용자에게 어떻게 부여합니까? 그리고 가능한 미래 계정? 후자가 불가능한 경우 첫 번째 요구 사항을 어떻게 처리해야합니까?

감사.

편집하다:

이것은 나를 위해 일한 코드입니다. 응답자의 링크에서 가져옵니다.

private bool GrantAccess(string fullPath)
{
    DirectoryInfo dInfo = new DirectoryInfo(fullPath);
    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);
    return true;
}

메모 PropagationFlags.NoPropagateInherit(링크에 마지막으로 언급 된) 요구되는합니다. 미래의 계정에도 권한을 부여합니다.


이것을 사용하는 사람들에게 참고하십시오.

에 리터럴 문자열을 사용할 때는 대신 FileSystemAccessRule이어야합니다 .WellKnownSidType.WorldSid"everyone"

그 이유는 여러 Window 언어가 있고 Everyone은 EN에만 적용되므로 스페인어의 경우 "Todos"(또는 다른 것) 일 수 있습니다.

using System.Security.AccessControl;
using System.Security.Principal;
using System.IO;

private void GrantAccess(string fullPath)
{
    DirectoryInfo dInfo = new DirectoryInfo(fullPath);
    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);
}

컴퓨터의 "Everyone"그룹에 모든 권한을 부여해야합니다. 그것에 대해 이야기하는 MSDN 에서이 게시물을 찾았 습니다.

이것이 당신을 위해 작동하기를 바랍니다.

참고 URL : https://stackoverflow.com/questions/9108399/how-to-grant-full-permission-to-a-file-created-by-my-application-for-all-users

반응형