ResourcePermissionBase Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Upozornění
Code Access Security is not supported or honored by the runtime.
Umožňuje řídit oprávnění zabezpečení přístupu kódu.
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
- Dědičnost
- Odvozené
- Atributy
- Implementuje
Příklady
Následující příklad dědí z ResourcePermissionBase třídy. Implementují se 4 druhy konstruktorů. Příklad také poskytuje implementaci třídy s názvem MailslotPermissionEntry
. Vlastnost PermissionAccessType je pak soukromě nastavena na typ MailslotPermissionEntry
. Vlastnost TagNames je soukromě nastavena na "Name" a "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
Poznámky
Upozornění
Zabezpečení přístupu k kódu (CAS) je zastaralé ve všech verzích rozhraní .NET Framework a .NET. Nedávné verze rozhraní .NET nedotknou poznámek CAS a v případě použití rozhraní API souvisejících s CAS se nevygenerují chyby. Vývojáři by měli hledat alternativní způsoby provádění úloh zabezpečení.
Poznámka
Třída ResourcePermissionBase porovnává řetězce pomocí pravidel řazení pořadových řad a ignoruje případ porovnávaných řetězců.
Poznámky pro implementátory
Když dědíte z ResourcePermissionBase, musíte zadat aspoň tři konstruktory, nastavit dvě vlastnosti a zadat třetí vlastnost. Požadované konstruktory jsou: konstruktor bez parametrů, který přebírá PermissionState jako parametr, a tolik, kolik je potřeba, které přebírá hodnoty vlastností. Vlastnosti, které je třeba nastavit, jsou PermissionAccessType a TagNames. Třetí potřebujete vlastnost, která vrací položky oprávnění. Příklad implementace této třídy naleznete v tématu PerformanceCounterPermission. TagNames Vlastnost PerformanceCounterPermissionje nastavena soukromě na "Machine" a "Category", PermissionAccessType vlastnost je soukromě nastavena na typ a PerformanceCounterPermissionAccessPermissionEntries vlastnost vrátí položky oprávnění.
Konstruktory
ResourcePermissionBase() |
Inicializuje novou instanci ResourcePermissionBase třídy. |
ResourcePermissionBase(PermissionState) |
Inicializuje novou instanci ResourcePermissionBase třídy se zadanou úrovní přístupu k prostředkům při vytváření. |
Pole
Any |
Určuje znak, který se má použít k reprezentaci libovolného zástupné znaky. |
Local |
Určuje znak, který se má použít k reprezentaci místního odkazu. |
Vlastnosti
PermissionAccessType |
Získá nebo nastaví hodnotu výčtu, která popisuje typy přístupu, které dáváte prostředku. |
TagNames |
Získá nebo nastaví pole řetězců, které identifikují prostředek, který chráníte. |
Metody
AddPermissionAccess(ResourcePermissionBaseEntry) |
Přidá do oprávnění položku oprávnění. |
Assert() |
Deklaruje, že volající kód má přístup k prostředku chráněnému požadavky na oprávnění prostřednictvím kódu, který volá tuto metodu, i když volajícím vyšší v zásobníku nebyl udělen oprávnění pro přístup k prostředku. Použití může vytvářet problémy se zabezpečením Assert() . (Zděděno od CodeAccessPermission) |
Clear() |
Vymaže oprávnění přidaných položek oprávnění. |
Copy() |
Vytvoří a vrátí identickou kopii aktuálního objektu oprávnění. |
Demand() |
SecurityException Vynutí dobu běhu, pokud všichni volající vyšší v zásobníku volání nebyli udělena oprávnění určená aktuální instancí. (Zděděno od CodeAccessPermission) |
Deny() |
Zastaralé.
Zastaralé.
Zabrání volajícím v zásobníku volání, aby používali kód, který volá tuto metodu pro přístup k prostředku určenému aktuální instancí. (Zděděno od CodeAccessPermission) |
Equals(Object) |
Určuje, zda zadaný CodeAccessPermission objekt je roven aktuálnímu CodeAccessPermission. (Zděděno od CodeAccessPermission) |
FromXml(SecurityElement) |
Rekonstruuje objekt zabezpečení se zadaným stavem z kódování XML. |
GetHashCode() |
Získá hash kód pro CodeAccessPermission objekt, který je vhodný pro použití v hashovací algoritmy a datové struktury, jako je hash tabulka. (Zděděno od CodeAccessPermission) |
GetPermissionEntries() |
Vrátí pole ResourcePermissionBaseEntry objektů přidaných k tomuto oprávnění. |
GetType() |
Type Získá aktuální instanci. (Zděděno od Object) |
Intersect(IPermission) |
Vytvoří a vrátí objekt oprávnění, který je průnikem aktuálního objektu oprávnění a cílového objektu oprávnění. |
IsSubsetOf(IPermission) |
Určuje, zda je aktuální objekt oprávnění podmnožinou zadaného oprávnění. |
IsUnrestricted() |
Získá hodnotu označující, jestli je oprávnění neomezené. |
MemberwiseClone() |
Vytvoří použádnou kopii aktuálního souboru Object. (Zděděno od Object) |
PermitOnly() |
Zabrání volajícím v zásobníku volání, aby používali kód, který volá tuto metodu pro přístup ke všem prostředkům s výjimkou prostředku určeného aktuální instancí. (Zděděno od CodeAccessPermission) |
RemovePermissionAccess(ResourcePermissionBaseEntry) |
Odebere položku oprávnění z oprávnění. |
ToString() |
Vytvoří a vrátí řetězcovou reprezentaci aktuálního objektu oprávnění. (Zděděno od CodeAccessPermission) |
ToXml() |
Vytvoří a vrátí kódování XML objektu zabezpečení a jeho aktuální stav. |
Union(IPermission) |
Vytvoří objekt oprávnění, který kombinuje aktuální objekt oprávnění a cílový objekt oprávnění. |