다음을 통해 공유


FileIOPermission 클래스

정의

주의

Code Access Security is not supported or honored by the runtime.

파일 및 폴더에 액세스하는 기능을 제어합니다. 이 클래스는 상속될 수 없습니다.

public ref class FileIOPermission sealed : System::Security::CodeAccessPermission, System::Security::Permissions::IUnrestrictedPermission
[System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public sealed class FileIOPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Serializable]
public sealed class FileIOPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class FileIOPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
public sealed class FileIOPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
[<System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type FileIOPermission = class
    inherit CodeAccessPermission
    interface IUnrestrictedPermission
[<System.Serializable>]
type FileIOPermission = class
    inherit CodeAccessPermission
    interface IUnrestrictedPermission
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type FileIOPermission = class
    inherit CodeAccessPermission
    interface IUnrestrictedPermission
type FileIOPermission = class
    inherit CodeAccessPermission
    interface IUnrestrictedPermission
Public NotInheritable Class FileIOPermission
Inherits CodeAccessPermission
Implements IUnrestrictedPermission
상속
FileIOPermission
특성
구현

예제

다음 예제에서는 를 사용하는 FileIOPermission코드를 보여 줍니다. 다음 두 줄의 코드 후에 개체 f 는 클라이언트 컴퓨터의 로컬 디스크에 있는 모든 파일을 읽을 수 있는 권한을 나타냅니다. 코드 예제에는 다음 애플리케이션에 파일을 읽을 수 있는 권한이 있는지 여부를 결정할 권한을 요구 합니다.

FileIOPermission^ f = gcnew FileIOPermission( PermissionState::None );
f->AllLocalFiles = FileIOPermissionAccess::Read;
try
{
    f->Demand();
}
catch (SecurityException^ s)
{
    Console::WriteLine(s->Message);
}
FileIOPermission f = new FileIOPermission(PermissionState.None);
f.AllLocalFiles = FileIOPermissionAccess.Read;
try
{
    f.Demand();
}
catch (SecurityException s)
{
    Console.WriteLine(s.Message);
}
Dim f As New FileIOPermission(PermissionState.None)
f.AllLocalFiles = FileIOPermissionAccess.Read
Try
    f.Demand()
Catch s As SecurityException
    Console.WriteLine(s.Message)
End Try

다음 두 줄의 코드 후에 개체 f2 는 C:\test_r 읽고 C:\example\out.txt 읽고 쓸 수 있는 권한을 나타냅니다. ReadWrite 는 앞에서 설명한 대로 파일/폴더 권한을 나타냅니다. 사용 권한을 만든 후 애플리케이션을 읽고 파일에 쓸 권한이 있는지 여부를 결정할 권한을 요구 하는 코드입니다.

FileIOPermission^ f2 = gcnew FileIOPermission( FileIOPermissionAccess::Read,"C:\\test_r" );
f2->AddPathList( (FileIOPermissionAccess) (FileIOPermissionAccess::Write | FileIOPermissionAccess::Read), "C:\\example\\out.txt" );
try
{
    f2->Demand();
}
catch (SecurityException^ s)
{
    Console::WriteLine(s->Message);
}
FileIOPermission f2 = new FileIOPermission(FileIOPermissionAccess.Read, "C:\\test_r");
f2.AddPathList(FileIOPermissionAccess.Write | FileIOPermissionAccess.Read, "C:\\example\\out.txt");
try
{
    f2.Demand();
}
catch (SecurityException s)
{
    Console.WriteLine(s.Message);
}
Dim f2 As New FileIOPermission(FileIOPermissionAccess.Read, "C:\test_r")
f2.AddPathList(FileIOPermissionAccess.Write Or FileIOPermissionAccess.Read, "C:\example\out.txt")
Try
    f2.Demand()
Catch s As SecurityException
    Console.WriteLine(s.Message)
End Try

설명

주의

CAS(코드 액세스 보안)는 .NET Framework 및 .NET의 모든 버전에서 더 이상 사용되지 않습니다. 최신 버전의 .NET은 CAS 주석을 준수하지 않으며 CAS 관련 API를 사용하는 경우 오류가 발생합니다. 개발자는 보안 작업을 수행하는 대체 수단을 찾아야 합니다.

이 권한은 에서 제공하는 FileIOPermissionAccess다음 네 가지 유형의 파일 IO 액세스를 구분합니다.

  • Read: 파일의 내용에 대한 액세스 또는 파일의 길이 또는 마지막 수정 시간과 같은 파일에 대한 정보에 대한 액세스를 읽습니다.

  • Write: 파일의 내용에 대한 액세스 권한을 쓰거나 파일에 대한 정보(예: 이름)를 변경하기 위한 액세스 권한을 씁니다. 또한 삭제 및 덮어쓰기를 허용합니다.

  • Append: 파일 끝에만 쓸 수 있습니다. 읽을 수 없습니다.

  • PathDiscovery: 경로 자체의 정보에 액세스합니다. 이렇게 하면 경로의 중요한 정보(예: 사용자 이름)와 경로에 표시되는 디렉터리 구조에 대한 정보를 보호할 수 있습니다. 그러나 이 값이 경로로 표시된 파일이나 폴더에 대한 액세스 권한을 부여하지는 않습니다.

참고

어셈블리에 대한 액세스 권한을 부여하는 Write 것은 완전한 신뢰를 부여하는 것과 비슷합니다. 애플리케이션이 파일 시스템에 쓰지 않아야 하는 경우 액세스 권한이 없어야 Write 합니다.

이러한 모든 권한은 독립적이므로 한 권한에 대한 권한이 다른 권한에 대한 권리를 의미하지는 않습니다. 예를 들어 사용 권한은 Write 또는 AppendRead 대한 권한을 의미하지 않습니다. 둘 이상의 사용 권한이 필요한 경우 다음 코드 예제와 같이 비트 OR을 사용하여 결합할 수 있습니다. 파일 사용 권한은 정식 절대 경로 측면에서 정의됩니다. 호출은 항상 정식 파일 경로로 이루어져야 합니다.

FileIOPermission 는 파일 및 폴더에 대한 보호된 작업을 설명합니다. 클래스는 File 파일 및 폴더에 대한 보안 액세스를 제공하는 데 도움이 됩니다. 검사 보안 액세스는 파일에 대한 핸들을 만들 때 수행됩니다. 생성 시 검사 수행하면 보안 검사 성능 영향이 최소화됩니다. 파일 열기는 한 번 발생하지만 읽기 및 쓰기는 여러 번 발생할 수 있습니다. 파일이 열리면 추가 검사가 수행되지 않습니다. 개체가 신뢰할 수 없는 호출자에게 전달되면 오용될 수 있습니다. 예를 들어 파일 핸들은 권한이 적은 코드가 액세스할 수 있는 퍼블릭 전역 정적에 저장되어서는 안 됩니다.

FileIOPermissionAccess 는 파일 또는 폴더에서 수행할 수 있는 작업을 지정합니다. 또한 이러한 작업은 비트 OR을 사용하여 결합하여 복잡한 인스턴스를 형성할 수 있습니다.

폴더에 대한 액세스는 포함된 모든 파일에 대한 액세스뿐만 아니라 하위 폴더의 모든 파일 및 폴더에 대한 액세스를 의미합니다. 예를 들어 Read C:\folder1\에 대한 액세스는 C:\folder1\file1.txt, C:\folder1\folder2\, C:\folder1\folder2\file2.txt 등에 대한 액세스를 의미 Read 합니다.

참고

.NET Framework 4 이전의 .NET Framework 버전에서는 메서드를 CodeAccessPermission.Deny 사용하여 신뢰할 수 있는 코드로 시스템 리소스에 실수로 액세스하지 못하도록 방지할 수 있습니다. Deny 는 이제 사용되지 않으며 리소스에 대한 액세스는 이제 어셈블리에 대해 부여된 권한 집합에 의해서만 결정됩니다. 파일에 대한 액세스를 제한하려면 샌드박스에서 부분적으로 신뢰할 수 있는 코드를 실행하고 코드가 액세스할 수 있는 리소스에만 권한을 할당해야 합니다. 샌드박스에서 애플리케이션을 실행 하는 방법에 대 한 내용은 방법: 부분적으로 신뢰할 수 있는 코드 실행 샌드박스에서합니다.

생성자

FileIOPermission(FileIOPermissionAccess, AccessControlActions, String)
사용되지 않음.

지정된 파일 또는 디렉터리에 대한 지정된 액세스 권한과 파일 제어 정보에 대한 지정된 액세스 권한을 사용하여 FileIOPermission 클래스의 새 인스턴스를 초기화합니다.

FileIOPermission(FileIOPermissionAccess, AccessControlActions, String[])
사용되지 않음.

지정된 파일 및 디렉터리에 대한 지정된 액세스 권한과 파일 제어 정보에 대한 지정된 액세스 권한을 사용하여 FileIOPermission 클래스의 새 인스턴스를 초기화합니다.

FileIOPermission(FileIOPermissionAccess, String)
사용되지 않음.

지정한 파일 또는 디렉터리를 사용하여 FileIOPermission 클래스의 새 인스턴스를 초기화합니다.

FileIOPermission(FileIOPermissionAccess, String[])
사용되지 않음.

지정한 파일 및 디렉터리를 사용하여 FileIOPermission 클래스의 새 인스턴스를 초기화합니다.

FileIOPermission(PermissionState)
사용되지 않음.

지정된 대로 완전 제한 또는 무제한 권한을 사용하여 FileIOPermission 클래스의 새 인스턴스를 초기화합니다.

속성

AllFiles
사용되지 않음.

모든 파일에 대한 허용된 액세스를 가져오거나 설정합니다.

AllLocalFiles
사용되지 않음.

모든 로컬 파일에 대한 허용된 액세스를 가져오거나 설정합니다.

메서드

AddPathList(FileIOPermissionAccess, String)
사용되지 않음.

지정된 파일 또는 디렉터리에 대한 액세스 권한을 사용 권한의 기존 상태에 추가합니다.

AddPathList(FileIOPermissionAccess, String[])
사용되지 않음.

지정된 파일 및 디렉터리에 대한 액세스 권한을 사용 권한의 기존 상태에 추가합니다.

Assert()
사용되지 않음.

스택의 상위 호출자에게 리소스에 액세스할 수 있는 권한이 부여되지 않더라도 호출 코드가 이 메서드를 호출하는 코드를 통해 사용 권한 요구로 보호되는 리소스에 액세스할 수 있음을 선언합니다. Assert()를 사용하면 보안 문제가 발생할 수 있습니다.

(다음에서 상속됨 CodeAccessPermission)
Copy()
사용되지 않음.

현재 사용 권한의 동일한 복사본을 만들고 반환합니다.

Demand()
사용되지 않음.

현재 인스턴스에서 지정한 사용 권한이 호출 스택의 일부 상위 호출자에만 부여된 경우 런타임에 SecurityException을 강제로 발생시킵니다.

(다음에서 상속됨 CodeAccessPermission)
Deny()
사용되지 않음.
사용되지 않음.

호출 스택의 상위 호출자가 이 메서드를 호출하는 코드를 통해 현재 인스턴스에서 지정한 리소스에 액세스하지 못하게 합니다.

(다음에서 상속됨 CodeAccessPermission)
Equals(Object)
사용되지 않음.

지정한 FileIOPermission 개체가 현재 FileIOPermission과 같은지 여부를 확인합니다.

Equals(Object)
사용되지 않음.

지정한 CodeAccessPermission 개체가 현재 CodeAccessPermission과 같은지 여부를 확인합니다.

(다음에서 상속됨 CodeAccessPermission)
FromXml(SecurityElement)
사용되지 않음.

XML 인코딩의 지정된 상태를 사용하여 사용 권한을 다시 만듭니다.

GetHashCode()
사용되지 않음.

해시 알고리즘과 해시 테이블 같은 데이터 구조에 사용하기 적합한 FileIOPermission 개체에 대한 해시 코드를 가져옵니다.

GetHashCode()
사용되지 않음.

해시 알고리즘과 해시 테이블 같은 데이터 구조에 사용하기 적합한 CodeAccessPermission 개체에 대한 해시 코드를 가져옵니다.

(다음에서 상속됨 CodeAccessPermission)
GetPathList(FileIOPermissionAccess)
사용되지 않음.

지정된 FileIOPermissionAccess의 모든 파일 및 디렉터리를 가져옵니다.

GetType()
사용되지 않음.

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
Intersect(IPermission)
사용되지 않음.

현재 사용 권한 및 지정된 사용 권한의 공통 권한을 만들어 반환합니다.

IsSubsetOf(IPermission)
사용되지 않음.

현재 사용 권한이 지정된 사용 권한의 하위 집합인지를 확인합니다.

IsUnrestricted()
사용되지 않음.

현재 사용 권한이 제한되지 않았는지 여부를 나타내는 값을 반환합니다.

MemberwiseClone()
사용되지 않음.

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
PermitOnly()
사용되지 않음.

호출 스택의 상위 호출자가 이 메서드를 호출하는 코드를 통해 현재 인스턴스에서 지정한 리소스를 제외한 모든 리소스에 액세스할 수 없게 합니다.

(다음에서 상속됨 CodeAccessPermission)
SetPathList(FileIOPermissionAccess, String)
사용되지 않음.

지정된 파일이나 디렉터리에 대한 지정된 액세스를 설정하여 사용 권한의 기존 상태를 바꿉니다.

SetPathList(FileIOPermissionAccess, String[])
사용되지 않음.

지정된 파일 및 디렉터리에 대한 지정된 액세스 권한을 설정하여 지정된 액세스에 대한 현재 상태를 새 경로 집합으로 바꿉니다.

ToString()
사용되지 않음.

현재 권한 개체의 문자열 표현을 만들고 반환합니다.

(다음에서 상속됨 CodeAccessPermission)
ToXml()
사용되지 않음.

사용 권한 및 해당 사용 권한의 현재 상태에 대한 XML 인코딩을 만듭니다.

Union(IPermission)
사용되지 않음.

현재 사용 권한 및 지정한 사용 권한을 합한 사용 권한을 만듭니다.

적용 대상

추가 정보