EventWaitHandleSecurity Classe
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Rappresenta la sicurezza del controllo di accesso di Windows applicata a un handle di attesa del sistema denominato. La classe non può essere ereditata.
public ref class EventWaitHandleSecurity sealed : System::Security::AccessControl::NativeObjectSecurity
public sealed class EventWaitHandleSecurity : System.Security.AccessControl.NativeObjectSecurity
[System.Security.SecurityCritical]
public sealed class EventWaitHandleSecurity : System.Security.AccessControl.NativeObjectSecurity
type EventWaitHandleSecurity = class
inherit NativeObjectSecurity
[<System.Security.SecurityCritical>]
type EventWaitHandleSecurity = class
inherit NativeObjectSecurity
Public NotInheritable Class EventWaitHandleSecurity
Inherits NativeObjectSecurity
- Ereditarietà
- Attributi
Nell'esempio di codice seguente viene illustrata la separazione tra Allow regole e Deny regole e viene illustrata la combinazione di diritti nelle regole compatibili. L'esempio crea un EventWaitHandleSecurity oggetto, aggiunge regole che consentono e negano vari diritti per l'utente corrente e visualizzano la coppia risultante di regole. L'esempio consente quindi nuovi diritti per l'utente corrente e visualizza il risultato, che mostra che i nuovi diritti vengono uniti alla regola esistente Allow .
Nota
In questo esempio l'oggetto di sicurezza non viene associato a un EventWaitHandle oggetto . Esempi che collegano oggetti di sicurezza sono disponibili in EventWaitHandle.GetAccessControl e EventWaitHandle.SetAccessControl.
using System;
using System.Threading;
using System.Security.AccessControl;
using System.Security.Principal;
public class Example
{
public static void Main()
{
// Create a string representing the current user.
string user = Environment.UserDomainName + "\\" +
Environment.UserName;
// Create a security object that grants no access.
EventWaitHandleSecurity mSec = new EventWaitHandleSecurity();
// Add a rule that grants the current user the
// right to wait on or signal the event.
EventWaitHandleAccessRule rule = new EventWaitHandleAccessRule(user,
EventWaitHandleRights.Synchronize | EventWaitHandleRights.Modify,
AccessControlType.Allow);
mSec.AddAccessRule(rule);
// Add a rule that denies the current user the
// right to change permissions on the event.
rule = new EventWaitHandleAccessRule(user,
EventWaitHandleRights.ChangePermissions,
AccessControlType.Deny);
mSec.AddAccessRule(rule);
// Display the rules in the security object.
ShowSecurity(mSec);
// Add a rule that allows the current user the
// right to read permissions on the event. This rule
// is merged with the existing Allow rule.
rule = new EventWaitHandleAccessRule(user,
EventWaitHandleRights.ReadPermissions,
AccessControlType.Allow);
mSec.AddAccessRule(rule);
ShowSecurity(mSec);
}
private static void ShowSecurity(EventWaitHandleSecurity security)
{
Console.WriteLine("\r\nCurrent access rules:\r\n");
foreach(EventWaitHandleAccessRule ar in
security.GetAccessRules(true, true, typeof(NTAccount)))
{
Console.WriteLine(" User: {0}", ar.IdentityReference);
Console.WriteLine(" Type: {0}", ar.AccessControlType);
Console.WriteLine(" Rights: {0}", ar.EventWaitHandleRights);
Console.WriteLine();
}
}
}
/*This code example produces output similar to following:
Current access rules:
User: TestDomain\TestUser
Type: Deny
Rights: ChangePermissions
User: TestDomain\TestUser
Type: Allow
Rights: Modify, Synchronize
Current access rules:
User: TestDomain\TestUser
Type: Deny
Rights: ChangePermissions
User: TestDomain\TestUser
Type: Allow
Rights: Modify, ReadPermissions, Synchronize
*/
Imports System.Threading
Imports System.Security.AccessControl
Imports System.Security.Principal
Public Class Example
Public Shared Sub Main()
' Create a string representing the current user.
Dim user As String = Environment.UserDomainName _
& "\" & Environment.UserName
' Create a security object that grants no access.
Dim mSec As New EventWaitHandleSecurity()
' Add a rule that grants the current user the
' right to wait on or signal the event.
Dim rule As New EventWaitHandleAccessRule(user, _
EventWaitHandleRights.Synchronize _
Or EventWaitHandleRights.Modify, _
AccessControlType.Allow)
mSec.AddAccessRule(rule)
' Add a rule that denies the current user the
' right to change permissions on the event.
rule = New EventWaitHandleAccessRule(user, _
EventWaitHandleRights.ChangePermissions, _
AccessControlType.Deny)
mSec.AddAccessRule(rule)
' Display the rules in the security object.
ShowSecurity(mSec)
' Add a rule that allows the current user the
' right to read permissions on the event. This rule
' is merged with the existing Allow rule.
rule = New EventWaitHandleAccessRule(user, _
EventWaitHandleRights.ReadPermissions, _
AccessControlType.Allow)
mSec.AddAccessRule(rule)
ShowSecurity(mSec)
End Sub
Private Shared Sub ShowSecurity(ByVal security As EventWaitHandleSecurity)
Console.WriteLine(vbCrLf & "Current access rules:" & vbCrLf)
For Each ar As EventWaitHandleAccessRule In _
security.GetAccessRules(True, True, GetType(NTAccount))
Console.WriteLine(" User: {0}", ar.IdentityReference)
Console.WriteLine(" Type: {0}", ar.AccessControlType)
Console.WriteLine(" Rights: {0}", ar.EventWaitHandleRights)
Console.WriteLine()
Next
End Sub
End Class
'This code example produces output similar to following:
'
'Current access rules:
'
' User: TestDomain\TestUser
' Type: Deny
' Rights: ChangePermissions
'
' User: TestDomain\TestUser
' Type: Allow
' Rights: Modify, Synchronize
'
'
'Current access rules:
'
' User: TestDomain\TestUser
' Type: Deny
' Rights: ChangePermissions
'
' User: TestDomain\TestUser
' Type: Allow
' Rights: Modify, ReadPermissions, Synchronize
Un EventWaitHandleSecurity oggetto specifica i diritti di accesso per un handle di attesa di sistema denominato e specifica anche il modo in cui vengono controllati i tentativi di accesso. I diritti di accesso all'handle di attesa vengono espressi come regole, con ogni regola di accesso rappresentata da un EventWaitHandleAccessRule oggetto . Ogni regola di controllo è rappresentata da un EventWaitHandleAuditRule oggetto .
Questo rispecchia il sistema di sicurezza Windows sottostante, in cui ogni oggetto a protezione diretta ha al massimo un elenco di controllo di accesso discrezionale (DACL) che controlla l'accesso all'oggetto protetto e al massimo un elenco di controllo di accesso di sistema (SACL) che specifica quali tentativi di accesso vengono controllati. DACL e SACL sono elenchi ordinati di voci di controllo di accesso (ACE) che specificano l'accesso e il controllo per utenti e gruppi. Un EventWaitHandleAccessRule oggetto o EventWaitHandleAuditRule può rappresentare più ace.
Nota
Un EventWaitHandle oggetto può rappresentare un handle di attesa locale o un handle di attesa di sistema denominato. La sicurezza del controllo di accesso di Windows è significativa solo per gli handle di attesa di sistema denominati.
Le EventWaitHandleSecurityclassi , EventWaitHandleAccessRulee EventWaitHandleAuditRule nascondono i dettagli di implementazione degli ACL e degli ACL. Consentono di ignorare i diciassette tipi ACE diversi e la complessità di mantenere correttamente l'ereditarietà e la propagazione dei diritti di accesso. Questi oggetti sono progettati anche per evitare i seguenti errori comuni di controllo di accesso:
Creazione di un descrittore di sicurezza con un DACL Null. Un riferimento Null a un DACL consente a qualsiasi utente di aggiungere regole di accesso a un oggetto, creando potenzialmente un attacco Denial of Service. Un nuovo EventWaitHandleSecurity oggetto inizia sempre con un DACL vuoto, che nega l'accesso a tutti gli utenti.
Violazione dell'ordinamento canonico degli ACL. Se l'elenco ACE nell'elenco DACL non viene mantenuto nell'ordine canonico, gli utenti potrebbero inavvertitamente avere accesso all'oggetto protetto. Ad esempio, i diritti di accesso negato devono essere sempre visualizzati prima dei diritti di accesso consentiti. EventWaitHandleSecurity gli oggetti mantengono l'ordine corretto internamente.
Modifica dei flag del descrittore di sicurezza, che devono essere solo sotto il controllo di Resource Manager.
Creazione di combinazioni non valide di flag ACE.
Modifica degli ACL ereditati. L'ereditarietà e la propagazione vengono gestite dal gestore risorse, in risposta alle modifiche apportate alle regole di accesso e controllo.
Inserimento di ACL senza significato in ACL.
Le uniche funzionalità non supportate dagli oggetti di sicurezza .NET sono attività pericolose che devono essere evitate dalla maggior parte degli sviluppatori di applicazioni, ad esempio:
Attività di basso livello che vengono normalmente eseguite dal gestore risorse.
Aggiunta o rimozione delle voci di controllo di accesso in modi che non mantengono l'ordinamento canonico.
Per modificare la sicurezza del controllo di accesso di Windows per un handle di attesa denominato, usare il EventWaitHandle.GetAccessControl metodo per ottenere l'oggetto EventWaitHandleSecurity . Modificare l'oggetto di sicurezza aggiungendo e rimuovendo le regole e quindi usare il EventWaitHandle.SetAccessControl metodo per ricollegarlo.
Importante
Le modifiche apportate a un EventWaitHandleSecurity oggetto non influiscono sui livelli di accesso dell'handle di attesa denominato fino a quando non si chiama il EventWaitHandle.SetAccessControl metodo per assegnare l'oggetto di sicurezza modificato all'handle di attesa denominato.
Per copiare la sicurezza del controllo di accesso da un handle di attesa a un altro, usare il EventWaitHandle.GetAccessControl metodo per ottenere un EventWaitHandleSecurity oggetto che rappresenta le regole di accesso e controllo per il primo handle di attesa e quindi usare il EventWaitHandle.SetAccessControl metodo o un costruttore che accetta un EventWaitHandleSecurity oggetto per assegnare tali regole al secondo handle di attesa.
Gli utenti con un investimento nel linguaggio di definizione del descrittore di sicurezza (SDDL) possono usare il SetSecurityDescriptorSddlForm metodo per impostare le regole di accesso per un handle di attesa denominato e il GetSecurityDescriptorSddlForm metodo per ottenere una stringa che rappresenta le regole di accesso in formato SDDL. Questo non è consigliato per il nuovo sviluppo.
Event |
Inizializza una nuova istanza della classe EventWaitHandleSecurity con i valori predefiniti. |
Access |
Ottiene il tipo di enumerazione utilizzato dalla classe EventWaitHandleSecurity per rappresentare i diritti di accesso. |
Access |
Ottiene o imposta un valore booleano che specifica se le regole di accesso associate all'oggetto ObjectSecurity sono state modificate. (Ereditato da ObjectSecurity) |
Access |
Ottiene il tipo utilizzato dalla classe EventWaitHandleSecurity per rappresentare le regole di accesso. |
Are |
Ottiene un valore booleano che specifica se le regole di accesso associate a questo oggetto ObjectSecurity sono in ordinamento canonico. (Ereditato da ObjectSecurity) |
Are |
Ottiene un valore booleano che specifica se l'elenco di controllo di accesso discrezionale (DACL) associato all'oggetto ObjectSecurity è protetto. (Ereditato da ObjectSecurity) |
Are |
Ottiene un valore booleano che specifica se le regole di controllo associate all'oggetto ObjectSecurity sono in ordinamento canonico. (Ereditato da ObjectSecurity) |
Are |
Ottiene un valore booleano che specifica se l'elenco di controllo di accesso di sistema (SACL) associato a questo oggetto ObjectSecurity è protetto. (Ereditato da ObjectSecurity) |
Audit |
Ottiene o imposta un valore booleano che specifica se le regole di controllo associate all'oggetto ObjectSecurity sono state modificate. (Ereditato da ObjectSecurity) |
Audit |
Ottiene il tipo utilizzato dalla classe EventWaitHandleSecurity per rappresentare le regole di controllo. |
Group |
Ottiene o imposta un valore booleano che specifica se il gruppo associato all'oggetto a protezione diretta è stato modificato. (Ereditato da ObjectSecurity) |
Is |
Ottiene un valore booleano che specifica se l'oggetto ObjectSecurity è un oggetto contenitore. (Ereditato da ObjectSecurity) |
IsDS |
Ottiene un valore booleano che specifica se l'oggetto ObjectSecurity è un oggetto directory. (Ereditato da ObjectSecurity) |
Owner |
Ottiene o imposta un valore booleano che specifica se il proprietario dell'oggetto a protezione diretta è stato modificato. (Ereditato da ObjectSecurity) |
Security |
Ottiene il descrittore di sicurezza per questa istanza. (Ereditato da ObjectSecurity) |
Access |
Crea una nuova regola di controllo di accesso per l'utente specificato, con i diritti di accesso, il controllo di accesso e i flag specificati. |
Add |
Aggiunge la regola di accesso specificata al DACL (Discretionary Access Control List, elenco di controllo di accesso discrezionale) associato all'oggetto CommonObjectSecurity. (Ereditato da CommonObjectSecurity) |
Add |
Cerca una regola di controllo di accesso corrispondente a cui è possibile unire la nuova regola. Se non viene trovata alcuna regola, viene aggiunta la nuova regola. |
Add |
Aggiunge la regola di controllo specificata al SACL (System Access Control List, elenco di controllo di accesso di sistema) associato all'oggetto CommonObjectSecurity. (Ereditato da CommonObjectSecurity) |
Add |
Cerca una regola di controllo a cui è possibile unire la nuova regola. Se non viene trovata alcuna regola, viene aggiunta la nuova regola. |
Audit |
Crea una nuova regola di controllo che specifica l'utente a cui viene applicata la regola, i diritti di accesso da controllare e il risultato che attiva la regola di controllo. |
Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
Get |
Ottiene un insieme delle regole di accesso associate all'identificatore di sicurezza specificato. (Ereditato da CommonObjectSecurity) |
Get |
Ottiene un insieme di regole di accesso associate all'identificatore di sicurezza specificato. (Ereditato da CommonObjectSecurity) |
Get |
Ottiene il gruppo primario associato al proprietario specificato. (Ereditato da ObjectSecurity) |
Get |
Funge da funzione hash predefinita. (Ereditato da Object) |
Get |
Ottiene il proprietario associato al gruppo primario specificato. (Ereditato da ObjectSecurity) |
Get |
Restituisce una matrice di valori byte che rappresenta le informazioni del descrittore di sicurezza per questo oggetto ObjectSecurity. (Ereditato da ObjectSecurity) |
Get |
Restituisce la rappresentazione in formato SDDL (Security Descriptor Definition Language) delle sezioni specificate del descrittore di sicurezza associato a questo oggetto ObjectSecurity. (Ereditato da ObjectSecurity) |
Get |
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
Memberwise |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
Modify |
Applica la modifica specificata all'elenco di controllo di accesso discrezionale (DACL) associato all'oggetto CommonObjectSecurity. (Ereditato da CommonObjectSecurity) |
Modify |
Applica la modifica specificata all'elenco di controllo di accesso discrezionale (DACL) associato all'oggetto ObjectSecurity. (Ereditato da ObjectSecurity) |
Modify |
Applica la modifica specificata all'elenco di controllo di accesso di sistema (SACL) associato all'oggetto CommonObjectSecurity. (Ereditato da CommonObjectSecurity) |
Modify |
Applica la modifica specificata all'elenco di controllo di accesso di sistema (SACL) associato all'oggetto ObjectSecurity. (Ereditato da ObjectSecurity) |
Persist(Boolean, String, Access |
Salva le sezioni specificate del descrittore di sicurezza associato a questo oggetto ObjectSecurity in un archivio permanente. Si consiglia di usare valori identici per i parametri |
Persist(Safe |
Salva le sezioni specificate del descrittore di sicurezza associato a questo oggetto NativeObjectSecurity in un archivio permanente. Si consiglia di usare valori identici per i parametri |
Persist(Safe |
Salva le sezioni specificate del descrittore di sicurezza associato a questo oggetto NativeObjectSecurity in un archivio permanente. Si consiglia di usare valori identici per i parametri |
Persist(String, Access |
Salva le sezioni specificate del descrittore di sicurezza associato a questo oggetto NativeObjectSecurity in un archivio permanente. Si consiglia di usare valori identici per i parametri |
Persist(String, Access |
Salva le sezioni specificate del descrittore di sicurezza associato a questo oggetto NativeObjectSecurity in un archivio permanente. Si consiglia di usare valori identici per i parametri |
Purge |
Rimuove tutte le regole di accesso associate all'oggetto IdentityReference specificato. (Ereditato da ObjectSecurity) |
Purge |
Rimuove tutte le regole di controllo associate all'oggetto IdentityReference specificato. (Ereditato da ObjectSecurity) |
Read |
Blocca questo oggetto ObjectSecurity per l'accesso in lettura. (Ereditato da ObjectSecurity) |
Read |
Sblocca l'oggetto ObjectSecurity per l'accesso in lettura. (Ereditato da ObjectSecurity) |
Remove |
Rimuove le regole di accesso che contengono lo stesso ID di sicurezza e la stessa maschera di accesso della regola di accesso specificata dall'elenco di controllo di accesso discrezionale (DACL) associato all'oggetto CommonObjectSecurity. (Ereditato da CommonObjectSecurity) |
Remove |
Cerca una regola di controllo di accesso con lo stesso utente e la stessa classe AccessControlType (consenso o negazione) della regola di accesso specificata e con i flag di ereditarietà e propagazione compatibili. Se viene trovata una regola simile, i diritti contenuti nella regola di accesso specificata vengono rimossi da essa. |
Remove |
Rimuove tutte le regole di accesso che dispongono dello stesso ID di sicurezza della regola di accesso specificata dall'elenco di controllo di accesso discrezionale (DACL) associato all'oggetto CommonObjectSecurity. (Ereditato da CommonObjectSecurity) |
Remove |
Cerca tutte le regole di controllo di accesso con lo stesso utente e la stessa classe AccessControlType (consenso o negazione) della regola specificata e, se trovate, le rimuove. |
Remove |
Rimuove tutte le regole di accesso che corrispondono esattamente alla regola di accesso specificata dall'elenco di controllo di accesso discrezionale (DACL) associato all'oggetto CommonObjectSecurity. (Ereditato da CommonObjectSecurity) |
Remove |
Cerca una regola di controllo di accesso che corrisponde esattamente alla regola specificata e, se trovata, la rimuove. |
Remove |
Rimuove le regole di controllo che contengono lo stesso ID di sicurezza e la stessa maschera di accesso della regola di controllo specificata dall'elenco di controllo di accesso di sistema (SACL) associato all'oggetto CommonObjectSecurity. (Ereditato da CommonObjectSecurity) |
Remove |
Cerca una regola di controllo con lo stesso utente della regola specificata e con i flag di ereditarietà e propagazione compatibili. Se viene trovata una regola simile, i diritti contenuti nella regola specificata vengono rimossi da essa. |
Remove |
Rimuove tutte le regole di controllo che dispongono dello stesso ID di sicurezza della regola di controllo specificata dall'elenco di controllo di accesso di sistema (SACL) associato all'oggetto CommonObjectSecurity. (Ereditato da CommonObjectSecurity) |
Remove |
Cerca tutte le regole di controllo in cui l'utente sia identico a quello della regola specificata e rimuove le regole trovate. |
Remove |
Rimuove tutte le regole di controllo che corrispondono esattamente alla regola di controllo specificata dall'elenco di controllo di accesso di sistema (SACL) associato all'oggetto CommonObjectSecurity. (Ereditato da CommonObjectSecurity) |
Remove |
Cerca una regola di controllo che corrisponde esattamente alla regola specificata e, se trovata, la rimuove. |
Reset |
Rimuove tutte le regole di accesso presenti nell'elenco di controllo di accesso discrezionale (DACL) associate all'oggetto CommonObjectSecurity e aggiunge la regola di accesso specificata. (Ereditato da CommonObjectSecurity) |
Reset |
Rimuove tutte le regole di controllo di accesso con lo stesso utente della regola specificata, a prescindere dalla classe AccessControlType, quindi aggiunge la regola specificata. |
Set |
Rimuove tutte le regole di accesso che contengono lo stesso ID di sicurezza e lo stesso qualificatore della regola di accesso specificata nell'elenco di controllo di accesso discrezionale (DACL) associato all'oggetto CommonObjectSecurity e aggiunge la regola di accesso specificata. (Ereditato da CommonObjectSecurity) |
Set |
Rimuove tutte le regole di controllo di accesso con lo stesso utente e la stessa classe AccessControlType (consenso o negazione) della regola specificata, quindi aggiunge la regola specificata. |
Set |
Imposta o rimuove la protezione delle regole di accesso associate a questo oggetto ObjectSecurity. Le regole di accesso protette non possono essere modificate da oggetti padre mediante l'ereditarietà. (Ereditato da ObjectSecurity) |
Set |
Rimuove tutte le regole di controllo che contengono lo stesso ID di sicurezza e lo stesso qualificatore della regola di controllo specificata nell'elenco di controllo di accesso di sistema (SACL) associato all'oggetto CommonObjectSecurity e aggiunge la regola di controllo specificata. (Ereditato da CommonObjectSecurity) |
Set |
Rimuove tutte le regole di controllo con lo stesso utente della regola specificata, a prescindere dal valore di AuditFlags, quindi aggiunge la regola specificata. |
Set |
Imposta o rimuove la protezione delle regole di controllo associate a questo oggetto ObjectSecurity. Le regole di controllo protette non possono essere modificate da oggetti padre usando l'ereditarietà. (Ereditato da ObjectSecurity) |
Set |
Imposta il gruppo primario per il descrittore di sicurezza associato a questo oggetto ObjectSecurity. (Ereditato da ObjectSecurity) |
Set |
Imposta il proprietario per il descrittore di sicurezza associato all'oggetto ObjectSecurity. (Ereditato da ObjectSecurity) |
Set |
Imposta il descrittore di sicurezza per l'oggetto ObjectSecurity dalla matrice specificata di valori di byte. (Ereditato da ObjectSecurity) |
Set |
Imposta le sezioni specificate del descrittore di sicurezza per l'oggetto ObjectSecurity dalla matrice specificata di valori in byte. (Ereditato da ObjectSecurity) |
Set |
Imposta il descrittore di sicurezza per l'oggetto ObjectSecurity dalla stringa SDDL (Security Descriptor Definition Language) specificata. (Ereditato da ObjectSecurity) |
Set |
Imposta le sezioni specificate del descrittore di sicurezza per questo oggetto ObjectSecurity dalla stringa SDDL (Security Descriptor Definition Language) specificata. (Ereditato da ObjectSecurity) |
To |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
Write |
Blocca l'oggetto ObjectSecurity per l'accesso in scrittura. (Ereditato da ObjectSecurity) |
Write |
Sblocca l'oggetto ObjectSecurity per l'accesso in scrittura. (Ereditato da ObjectSecurity) |
Prodotto | Versioni |
---|---|
.NET | Core 1.0, Core 1.1, 6, 7, 8, 9 |
.NET Framework | 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 2.0 |
Windows Desktop | 3.0, 3.1, 5, 6, 7, 8, 9 |
Feedback su .NET
.NET è un progetto di open source. Selezionare un collegamento per fornire feedback: