ResourcePermissionBase 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
주의
Code Access Security is not supported or honored by the runtime.
코드 액세스 보안 권한을 제어할 수 있도록 합니다.
public ref class ResourcePermissionBase abstract : System::Security::CodeAccessPermission, System::Security::Permissions::IUnrestrictedPermission
public abstract class ResourcePermissionBase : 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 abstract class ResourcePermissionBase : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Serializable]
public abstract class ResourcePermissionBase : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
type ResourcePermissionBase = class
inherit CodeAccessPermission
interface IUnrestrictedPermission
[<System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type ResourcePermissionBase = class
inherit CodeAccessPermission
interface IUnrestrictedPermission
[<System.Serializable>]
type ResourcePermissionBase = class
inherit CodeAccessPermission
interface IUnrestrictedPermission
Public MustInherit Class ResourcePermissionBase
Inherits CodeAccessPermission
Implements IUnrestrictedPermission
- 상속
- 파생
- 특성
- 구현
예제
다음 예제에서는 클래스에서 ResourcePermissionBase 상속합니다. 4 종류의 생성자가 구현됩니다. 또한 이 예제에서는 라는 MailslotPermissionEntry
클래스의 구현을 제공합니다. 그런 PermissionAccessType 다음 속성이 개인적으로 .의 MailslotPermissionEntry
형식으로 설정됩니다. 이 TagNames 속성은 "Name" 및 "Machine"으로 비공개로 설정됩니다.
#using <System.dll>
using namespace System;
using namespace System::Security::Permissions;
using namespace System::Collections;
[Flags]
public enum class MailslotPermissionAccess
{
None = 0,
Send = 1 << 1,
Receive = 1 << 2 | MailslotPermissionAccess::Send
};
[Serializable]
public ref class MailslotPermissionEntry
{
private:
String^ name;
String^ machineName;
MailslotPermissionAccess permissionAccess;
internal:
MailslotPermissionEntry( ResourcePermissionBaseEntry^ baseEntry )
{
this->permissionAccess = (MailslotPermissionAccess)baseEntry->PermissionAccess;
this->name = baseEntry->PermissionAccessPath[ 0 ]->ToString();
this->machineName = baseEntry->PermissionAccessPath[ 1 ]->ToString();
}
ResourcePermissionBaseEntry^ GetBaseEntry()
{
array<String^>^newStrings = {this->Name,this->MachineName};
ResourcePermissionBaseEntry^ baseEntry = gcnew ResourcePermissionBaseEntry( (int)(this->PermissionAccess),newStrings );
return baseEntry;
}
public:
MailslotPermissionEntry( MailslotPermissionAccess permissionAccess, String^ name, String^ machineName )
{
this->permissionAccess = permissionAccess;
this->name = name;
this->machineName = machineName;
}
property String^ Name
{
String^ get()
{
return this->name;
}
}
property String^ MachineName
{
String^ get()
{
return this->machineName;
}
}
property MailslotPermissionAccess PermissionAccess
{
MailslotPermissionAccess get()
{
return this->permissionAccess;
}
}
};
[Serializable]
public ref class MailslotPermission: public ResourcePermissionBase
{
private:
ArrayList^ innerCollection;
void SetNames()
{
this->PermissionAccessType = MailslotPermissionAccess::typeid;
array<String^>^newStrings = {"Name","Machine"};
this->TagNames = newStrings;
}
internal:
void AddPermissionAccess( MailslotPermissionEntry^ entry )
{
ResourcePermissionBase::AddPermissionAccess( entry->GetBaseEntry() );
}
void Clear()
{
ResourcePermissionBase::Clear();
}
void RemovePermissionAccess( MailslotPermissionEntry^ entry )
{
ResourcePermissionBase::RemovePermissionAccess( entry->GetBaseEntry() );
}
public:
MailslotPermission()
{
SetNames();
}
MailslotPermission( PermissionState state )
: ResourcePermissionBase( state )
{
SetNames();
}
MailslotPermission( MailslotPermissionAccess permissionAccess, String^ name, String^ machineName )
{
SetNames();
this->AddPermissionAccess( gcnew MailslotPermissionEntry( permissionAccess,name,machineName ) );
}
MailslotPermission( array<MailslotPermissionEntry^>^permissionAccessEntries )
{
SetNames();
if ( permissionAccessEntries == nullptr )
throw gcnew ArgumentNullException( "permissionAccessEntries" );
for ( int index = 0; index < permissionAccessEntries->Length; ++index )
this->AddPermissionAccess( permissionAccessEntries[ index ] );
}
property ArrayList^ PermissionEntries
{
ArrayList^ get()
{
if ( this->innerCollection == nullptr )
this->innerCollection = gcnew ArrayList;
this->innerCollection->InsertRange( 0, safe_cast<ICollection^>(ResourcePermissionBase::GetPermissionEntries()) );
return this->innerCollection;
}
}
};
using System;
using System.Security.Permissions;
using System.Collections;
[Serializable()]
public class MailslotPermission: ResourcePermissionBase
{
private ArrayList innerCollection;
public MailslotPermission()
{
SetNames();
}
public MailslotPermission(PermissionState state):base(state)
{
SetNames();
}
public MailslotPermission(MailslotPermissionAccess permissionAccess, string name, string machineName)
{
SetNames();
this.AddPermissionAccess(new MailslotPermissionEntry(permissionAccess, name, machineName));
}
public MailslotPermission(MailslotPermissionEntry[] permissionAccessEntries)
{
SetNames();
if (permissionAccessEntries == null)
throw new ArgumentNullException("permissionAccessEntries");
for (int index = 0; index < permissionAccessEntries.Length; ++index)
this.AddPermissionAccess(permissionAccessEntries[index]);
}
public ArrayList PermissionEntries
{
get
{
if (this.innerCollection == null)
this.innerCollection = new ArrayList();
this.innerCollection.InsertRange(0,base.GetPermissionEntries());
return this.innerCollection;
}
}
internal void AddPermissionAccess(MailslotPermissionEntry entry)
{
base.AddPermissionAccess(entry.GetBaseEntry());
}
internal new void Clear()
{
base.Clear();
}
internal void RemovePermissionAccess(MailslotPermissionEntry entry)
{
base.RemovePermissionAccess(entry.GetBaseEntry());
}
private void SetNames()
{
this.PermissionAccessType = typeof(MailslotPermissionAccess);
this.TagNames = new string[]{"Name","Machine"};
}
}
[Flags]
public enum MailslotPermissionAccess
{
None = 0,
Send = 1 << 1,
Receive = 1 << 2 | Send,
}
[Serializable()]
public class MailslotPermissionEntry
{
private string name;
private string machineName;
private MailslotPermissionAccess permissionAccess;
public MailslotPermissionEntry(MailslotPermissionAccess permissionAccess, string name, string machineName)
{
this.permissionAccess = permissionAccess;
this.name = name;
this.machineName = machineName;
}
internal MailslotPermissionEntry(ResourcePermissionBaseEntry baseEntry)
{
this.permissionAccess = (MailslotPermissionAccess)baseEntry.PermissionAccess;
this.name = baseEntry.PermissionAccessPath[0];
this.machineName = baseEntry.PermissionAccessPath[1];
}
public string Name
{
get
{
return this.name;
}
}
public string MachineName
{
get
{
return this.machineName;
}
}
public MailslotPermissionAccess PermissionAccess
{
get
{
return this.permissionAccess;
}
}
internal ResourcePermissionBaseEntry GetBaseEntry()
{
ResourcePermissionBaseEntry baseEntry = new ResourcePermissionBaseEntry((int)this.PermissionAccess, new string[] {this.Name,this.MachineName});
return baseEntry;
}
}
Imports System.Security.Permissions
Imports System.Collections
<Serializable()> Public Class MailslotPermission
Inherits ResourcePermissionBase
Private innerCollection As ArrayList
Public Sub New()
SetNames()
End Sub
Public Sub New(ByVal state As PermissionState)
MyBase.New(state)
SetNames()
End Sub
Public Sub New(ByVal permissionAccess As MailslotPermissionAccess, ByVal name As String, ByVal machineName1 As String)
SetNames()
Me.AddPermissionAccess(New MailslotPermissionEntry(permissionAccess, name, machineName1))
End Sub
Public Sub New(ByVal permissionAccessEntries() As MailslotPermissionEntry)
SetNames()
If permissionAccessEntries Is Nothing Then
Throw New ArgumentNullException("permissionAccessEntries")
End If
Dim index As Integer
While index < permissionAccessEntries.Length
Me.AddPermissionAccess(permissionAccessEntries(index))
End While
End Sub
Public ReadOnly Property PermissionEntries() As ArrayList
Get
If Me.innerCollection Is Nothing Then
Me.innerCollection = New ArrayList()
End If
Me.innerCollection.InsertRange(0, MyBase.GetPermissionEntries())
Return Me.innerCollection
End Get
End Property
Friend Overloads Sub AddPermissionAccess(ByVal entry As MailslotPermissionEntry)
MyBase.AddPermissionAccess(entry.GetBaseEntry())
End Sub
Friend Shadows Sub Clear()
MyBase.Clear()
End Sub
Friend Overloads Sub RemovePermissionAccess(ByVal entry As MailslotPermissionEntry)
MyBase.RemovePermissionAccess(entry.GetBaseEntry())
End Sub
Private Sub SetNames()
Me.PermissionAccessType = GetType(MailslotPermissionAccess)
Me.TagNames = New String() {"Name", "Machine"}
End Sub
End Class
<Flags()> Public Enum MailslotPermissionAccess
None = 0
Send = 2
Receive = 4 Or Send
End Enum 'MailslotPermissionAccess
<Serializable()> Public Class MailslotPermissionEntry
Private nameVar As String
Private machineNameVar As String
Private permissionAccessVar As MailslotPermissionAccess
Public Sub New(ByVal permissionAccess As MailslotPermissionAccess, ByVal name As String, ByVal machineName1 As String)
Me.permissionAccessVar = permissionAccess
Me.nameVar = name
Me.machineNameVar = machineName1
End Sub
Friend Sub New(ByVal baseEntry As ResourcePermissionBaseEntry)
Me.permissionAccessVar = CType(baseEntry.PermissionAccess, MailslotPermissionAccess)
Me.nameVar = baseEntry.PermissionAccessPath(0)
Me.machineNameVar = baseEntry.PermissionAccessPath(1)
End Sub
Public ReadOnly Property Name() As String
Get
Return Me.nameVar
End Get
End Property
Public ReadOnly Property MachineName() As String
Get
Return Me.machineNameVar
End Get
End Property
Public ReadOnly Property PermissionAccess() As MailslotPermissionAccess
Get
Return Me.permissionAccessVar
End Get
End Property
Friend Function GetBaseEntry() As ResourcePermissionBaseEntry
Dim baseEntry As New ResourcePermissionBaseEntry(CInt(Me.PermissionAccess), New String() {Me.Name, Me.MachineName})
Return baseEntry
End Function 'GetBaseEntry
End Class
설명
주의
CAS(코드 액세스 보안)는 모든 버전의 .NET Framework 및 .NET에서 더 이상 사용되지 않습니다. 최신 버전의 .NET은 CAS 주석을 적용하지 않으며 CAS 관련 API를 사용하는 경우 오류를 생성합니다. 개발자는 보안 작업을 수행하는 대체 방법을 찾아야 합니다.
참고
클래스는 ResourcePermissionBase 서수 정렬 규칙을 사용하여 문자열을 비교하고 비교되는 문자열의 경우를 무시합니다.
구현자 참고
상속 ResourcePermissionBase하는 경우 세 개 이상의 생성자를 제공하고, 두 개의 속성을 설정하고, 세 번째 속성을 제공해야 합니다. 필수 생성자는 매개 변수가 없는 생성자, 매개 변수로 사용하는 PermissionState 생성자 및 속성에 대한 값을 사용하는 필요한 만큼입니다. 설정해야 하는 속성은 다음과 TagNames같습니다PermissionAccessType. 필요한 세 번째 속성은 사용 권한 항목을 반환하는 속성입니다. 이 클래스의 구현 예제는 을 참조하세요 PerformanceCounterPermission. TagNames 에서 PerformanceCounterPermission속성은 "컴퓨터" 및 "범주"로 비공개로 설정되고 속성 PermissionAccessType 은 비공개로 형식PerformanceCounterPermissionAccess으로 설정되며 속성은 PermissionEntries 사용 권한 항목을 반환합니다.
생성자
ResourcePermissionBase() |
ResourcePermissionBase 클래스의 새 인스턴스를 초기화합니다. |
ResourcePermissionBase(PermissionState) |
리소스를 만들 때 리소스에 지정된 액세스 권한 수준을 사용하여 ResourcePermissionBase 클래스의 새 인스턴스를 초기화합니다. |
필드
Any |
와일드카드 문자를 나타내는 데 사용할 문자를 지정합니다. |
Local |
지역 참조를 나타내는 데 사용할 문자를 지정합니다. |
속성
PermissionAccessType |
리소스에 지정한 액세스 형식을 설명하는 열거형 값을 가져오거나 설정합니다. |
TagNames |
보호하는 리소스를 확인하는 문자열의 배열을 가져오거나 설정합니다. |
메서드
AddPermissionAccess(ResourcePermissionBaseEntry) |
사용 권한에 사용 권한 항목을 추가합니다. |
Assert() |
스택의 상위 호출자에게 리소스에 액세스할 수 있는 권한이 부여되지 않더라도 호출 코드가 이 메서드를 호출하는 코드를 통해 사용 권한 요구로 보호되는 리소스에 액세스할 수 있음을 선언합니다. Assert()를 사용하면 보안 문제가 발생할 수 있습니다. (다음에서 상속됨 CodeAccessPermission) |
Clear() |
추가된 사용 권한 항목의 사용 권한을 지웁니다. |
Copy() |
현재 권한 개체의 동일한 복사본을 만들어 반환합니다. |
Demand() |
현재 인스턴스에서 지정한 사용 권한이 호출 스택의 일부 상위 호출자에만 부여된 경우 런타임에 SecurityException을 강제로 발생시킵니다. (다음에서 상속됨 CodeAccessPermission) |
Deny() |
사용되지 않습니다.
사용되지 않습니다.
호출 스택의 상위 호출자가 이 메서드를 호출하는 코드를 통해 현재 인스턴스에서 지정한 리소스에 액세스하지 못하게 합니다. (다음에서 상속됨 CodeAccessPermission) |
Equals(Object) |
지정한 CodeAccessPermission 개체가 현재 CodeAccessPermission과 같은지 여부를 확인합니다. (다음에서 상속됨 CodeAccessPermission) |
FromXml(SecurityElement) |
XML 인코딩의 지정된 상태를 사용하여 보안 개체를 다시 만듭니다. |
GetHashCode() |
해시 알고리즘과 해시 테이블 같은 데이터 구조에 사용하기 적합한 CodeAccessPermission 개체에 대한 해시 코드를 가져옵니다. (다음에서 상속됨 CodeAccessPermission) |
GetPermissionEntries() |
이 사용 권한에 추가된 ResourcePermissionBaseEntry 개체의 배열을 반환합니다. |
GetType() |
현재 인스턴스의 Type을 가져옵니다. (다음에서 상속됨 Object) |
Intersect(IPermission) |
현재 권한 개체와 대상 권한 개체의 교집합에 해당하는 권한 개체를 만들어 반환합니다. |
IsSubsetOf(IPermission) |
현재 권한 개체가 지정된 사용 권한의 하위 집합인지 여부를 확인합니다. |
IsUnrestricted() |
사용 권한이 무제한인지 여부를 나타내는 값을 가져옵니다. |
MemberwiseClone() |
현재 Object의 단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
PermitOnly() |
호출 스택의 상위 호출자가 이 메서드를 호출하는 코드를 통해 현재 인스턴스에서 지정한 리소스를 제외한 모든 리소스에 액세스할 수 없게 합니다. (다음에서 상속됨 CodeAccessPermission) |
RemovePermissionAccess(ResourcePermissionBaseEntry) |
사용 권한에서 사용 권한 항목을 제거합니다. |
ToString() |
현재 권한 개체의 문자열 표현을 만들고 반환합니다. (다음에서 상속됨 CodeAccessPermission) |
ToXml() |
보안 개체 및 해당 보안 개체의 현재 상태에 대한 XML 인코딩을 만들어 반환합니다. |
Union(IPermission) |
현재 권한 개체와 대상 권한 개체를 결합하는 권한 개체를 만듭니다. |