ResourcePermissionBase Classe
Definição
Cuidado
Code Access Security is not supported or honored by the runtime.
Permite o controle de permissões de segurança de acesso do código.Allows control of code access security permissions.
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
- Herança
- Derivado
- Atributos
- Implementações
Exemplos
O exemplo a seguir herda da ResourcePermissionBase classe.The following example inherits from the ResourcePermissionBase class. 4 tipos de construtores são implementados.4 kinds of constructors are implemented. O exemplo também fornece uma implementação de uma classe chamada MailslotPermissionEntry
.The example also provides an implementation of a class called MailslotPermissionEntry
. PermissionAccessTypeEm seguida, a propriedade é definida de modo privado como o tipo de MailslotPermissionEntry
.The PermissionAccessType property is then privately set to the type of MailslotPermissionEntry
. A TagNames propriedade é definida de forma privada para "nome" e "máquina".The TagNames property is set privately to "Name" and "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
Comentários
Observação
A ResourcePermissionBase classe compara Cadeias de caracteres usando as regras de classificação Ordinal e ignora o caso das cadeias de caracteres que estão sendo comparadas.The ResourcePermissionBase class compares strings using ordinal sort rules and ignores the case of the strings being compared.
Notas aos Implementadores
Ao herdar do ResourcePermissionBase , você deve fornecer pelo menos três construtores, definir duas propriedades e fornecer uma terceira propriedade.When you inherit from ResourcePermissionBase, you must provide at least three constructors, set two properties, and provide a third property. Os construtores necessários são: um construtor sem parâmetros, um que usa um PermissionState como parâmetro e quantos forem necessários para obter os valores das propriedades.The required constructors are: a parameterless constructor, one that takes a PermissionState as a parameter, and as many as needed that take values for the properties. As propriedades que precisam ser definidas são PermissionAccessType e TagNames .The properties that need to be set are PermissionAccessType and TagNames. A terceira Propriedade necessária é aquela que retorna as entradas de permissão.The third property that is needed is one that returns the permission entries. Para obter um exemplo de uma implementação dessa classe, consulte PerformanceCounterPermission .For an example of an implementation of this class, see PerformanceCounterPermission. No PerformanceCounterPermission , a TagNames propriedade é definida em particular como "Machine" e "category", a PermissionAccessType propriedade é definida de modo privado como o tipo de PerformanceCounterPermissionAccess e a PermissionEntries propriedade retorna as entradas de permissão.In PerformanceCounterPermission, the TagNames property is set privately to "Machine" and "Category", the PermissionAccessType property is privately set to the type of PerformanceCounterPermissionAccess, and the PermissionEntries property returns the permission entries.
Construtores
ResourcePermissionBase() |
Inicializa uma nova instância da classe ResourcePermissionBase.Initializes a new instance of the ResourcePermissionBase class. |
ResourcePermissionBase(PermissionState) |
Inicializa uma nova instância da classe ResourcePermissionBase com o nível especificado de acesso aos recursos na criação.Initializes a new instance of the ResourcePermissionBase class with the specified level of access to resources at creation. |
Campos
Any |
Especifica o caractere a ser usado para representar qualquer caractere curinga.Specifies the character to be used to represent the any wildcard character. |
Local |
Especifica o caractere a ser usado para representar uma referência local.Specifies the character to be used to represent a local reference. |
Propriedades
PermissionAccessType |
Obtém ou define um valor de enumeração que descreve os tipos de acesso que você está dando ao recurso.Gets or sets an enumeration value that describes the types of access that you are giving the resource. |
TagNames |
Obtém ou define uma matriz de cadeias de caracteres que identifica o recurso que está sendo protegido.Gets or sets an array of strings that identify the resource you are protecting. |
Métodos
AddPermissionAccess(ResourcePermissionBaseEntry) |
Adiciona uma entrada de permissão à permissão.Adds a permission entry to the permission. |
Assert() |
Declara que o código de chamada pode acessar o recurso protegido por uma demanda de permissão através do código que chama este método, mesmo que os chamadores na pilha não tenham recebido permissão para acessar o recurso.Declares that the calling code can access the resource protected by a permission demand through the code that calls this method, even if callers higher in the stack have not been granted permission to access the resource. Usar Assert() pode criar problemas de segurança.Using Assert() can create security issues. (Herdado de CodeAccessPermission) |
Clear() |
Limpa a permissão das entradas de permissão adicionadas.Clears the permission of the added permission entries. |
Copy() |
Cria e retorna uma cópia idêntica do objeto de permissão atual.Creates and returns an identical copy of the current permission object. |
Demand() |
Força um SecurityException no tempo de execução se todos os chamadores no topo da pilha de chamadas não receberam as permissões especificadas pela instância atual.Forces a SecurityException at run time if all callers higher in the call stack have not been granted the permission specified by the current instance. (Herdado de CodeAccessPermission) |
Deny() |
Obsoleto.
Obsoleto.
Impede que os chamadores no nível superior da pilha de chamadas usem o código que chama esse método para acessar o recurso especificado pela instância atual.Prevents callers higher in the call stack from using the code that calls this method to access the resource specified by the current instance. (Herdado de CodeAccessPermission) |
Equals(Object) |
Determina se o objeto CodeAccessPermission especificado é igual ao CodeAccessPermission atual.Determines whether the specified CodeAccessPermission object is equal to the current CodeAccessPermission. (Herdado de CodeAccessPermission) |
FromXml(SecurityElement) |
Reconstrói um objeto de segurança com um estado especificado de uma codificação XML.Reconstructs a security object with a specified state from an XML encoding. |
GetHashCode() |
Obtém um código hash para o objeto CodeAccessPermission atual, adequado para algoritmos de hash e estruturas de dados, tais como uma tabela de hash.Gets a hash code for the CodeAccessPermission object that is suitable for use in hashing algorithms and data structures such as a hash table. (Herdado de CodeAccessPermission) |
GetPermissionEntries() |
Retorna uma matriz dos objetos ResourcePermissionBaseEntry adicionados a essa permissão.Returns an array of the ResourcePermissionBaseEntry objects added to this permission. |
GetType() |
Obtém o Type da instância atual.Gets the Type of the current instance. (Herdado de Object) |
Intersect(IPermission) |
Cria e retorna um objeto de permissão que é a interseção do objeto de permissão atual e de um objeto de permissão de destino.Creates and returns a permission object that is the intersection of the current permission object and a target permission object. |
IsSubsetOf(IPermission) |
Determina se o objeto de permissão atual é um subconjunto da permissão especificada.Determines whether the current permission object is a subset of the specified permission. |
IsUnrestricted() |
Obtém um valor que indica se a permissão é irrestrita.Gets a value indicating whether the permission is unrestricted. |
MemberwiseClone() |
Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object. (Herdado de Object) |
PermitOnly() |
Impede que os chamadores no topo da pilha de chamadas usem o código que chama esse método para acessar todos os recursos, com exceção do recurso especificado pela instância atual.Prevents callers higher in the call stack from using the code that calls this method to access all resources except for the resource specified by the current instance. (Herdado de CodeAccessPermission) |
RemovePermissionAccess(ResourcePermissionBaseEntry) |
Remove uma entrada de permissão da permissão.Removes a permission entry from the permission. |
ToString() |
Cria e retorna uma representação de cadeia de caracteres do objeto de permissão atual.Creates and returns a string representation of the current permission object. (Herdado de CodeAccessPermission) |
ToXml() |
Cria e retorna uma codificação XML do objeto de segurança e seu estado atual.Creates and returns an XML encoding of the security object and its current state. |
Union(IPermission) |
Cria um objeto de permissão que combina o objeto de permissão atual e o objeto de permissão de destino.Creates a permission object that combines the current permission object and the target permission object. |
Implantações explícitas de interface
IPermission.Demand() |
Gera um SecurityException em tempo de execução se o requisito de segurança não é atendido.Throws a SecurityException at run time if the security requirement is not met. (Herdado de CodeAccessPermission) |
IStackWalk.Assert() |
Declara que código de chamada pode acessar o recurso identificado pelo objeto de permissão atual, mesmo que os chamadores na pilha não tenham recebido permissão para acessar o recurso.Asserts that the calling code can access the resource identified by the current permission object, even if callers higher in the stack have not been granted permission to access the resource. (Herdado de CodeAccessPermission) |
IStackWalk.Demand() |
Determina em tempo de execução se a permissão especificada pelo objeto de permissão atual foi ou não concedida a todos os chamadores na pilha de chamadas.Determines at run time whether all callers in the call stack have been granted the permission specified by the current permission object. (Herdado de CodeAccessPermission) |
IStackWalk.Deny() |
Faz com que cada Demand() para o objeto atual que passa pelo código de chamada falhe.Causes every Demand() for the current object that passes through the calling code to fail. (Herdado de CodeAccessPermission) |
IStackWalk.PermitOnly() |
Causa a falha de cada Demand() de todos os objetos que passam pelo código de chamada, exceto o atual, mesmo que o código superior na pilha de chamadas tenha recebido permissão para acessar outros recursos.Causes every Demand() for all objects except the current one that pass through the calling code to fail, even if code higher in the call stack has been granted permission to access other resources. (Herdado de CodeAccessPermission) |