Descrittori di sicurezza nei file e nelle chiavi del Registro di sistema
È possibile usare Active Directory Service Interfaces (ADSI) per gestire e proteggere i file system all'interno di un'organizzazione, inclusa la possibilità di impostare o modificare elenchi di controllo di accesso in file o condivisioni file create dagli utenti. Le interfacce di sicurezza, ad esempio IADsSecurityDescriptor, IADsAccessControlList e IADsAccessControlEntry impostano ACL in Active Directory, Exchange, file, condivisione file o oggetti chiave del Registro di sistema. Prima di usare queste interfacce, potrebbe essere necessario modificare il descrittore di sicurezza se usa un formato diverso dall'interfaccia o se non si dispone dei diritti di accesso al descrittore di sicurezza del descrittore di sicurezza perché non si è membri del gruppo di amministratori di sicurezza.
Per ottenere, impostare o modificare il descrittore di sicurezza, usare l'interfaccia IADsSecurityUtility . Questa interfaccia consente di recuperare un descrittore di sicurezza da varie risorse nel formato originale, ad esempio IADsSecurityDescriptor in formato ADSI, un descrittore di sicurezza non elaborato o come stringa esadecimale usata in Exchange 5.5. Quando viene recuperato, è possibile convertirlo in un altro formato, ad esempio da un descrittore di sicurezza non elaborato a IADsSecurityDescriptor. È quindi possibile scrivere nuovamente il nuovo formato nella risorsa.
Alcuni valori delle proprietà IADsAccessControlEntry, ad esempio AccessMask e AceFlags, saranno diversi per i diversi tipi di oggetto. Ad esempio, un oggetto Active Directory userà il membro ADS_RIGHT_GENERIC_READ dell'enumerazione ADS_RIGHTS_ENUM per la proprietà IADsAccessControlEntry.AccessMask , ma il diritto di accesso equivalente per un oggetto file è FILE_GENERIC_READ. Non è sicuro presupporre che tutti i valori delle proprietà siano uguali per gli oggetti di Active Directory e gli oggetti non Active Directory. L'elenco seguente mostra le proprietà IADsAccessControlEntry che differiscono per gli oggetti non Active Directory e dove è possibile ottenere i valori appropriati.
-
Per altre informazioni e un elenco dei valori possibili per gli oggetti file o condivisione file, vedere File Security and Access Rights.
Per altre informazioni e un elenco dei possibili valori per gli oggetti del Registro di sistema, vedere Sicurezza della chiave del Registro di sistema e Diritti di accesso.
-
Per altre informazioni, vedere il membro AceType della struttura ACE_HEADER .
-
Per altre informazioni, vedere il membro AceFlags della struttura ACE_HEADER .
-
Contiene zero o una combinazione di uno o più dei valori seguenti di WinNT.h.
-
ACE_OBJECT_TYPE_PREedizione Standard NT (1)
-
ObjectType contiene un valore valido.
-
ACE_INHERITED_OBJECT_TYPE_PREedizione Standard NT (2)
-
InheritedObjectType contiene un valore valido.
-
-
Per altre informazioni, vedere il membro ObjectType del ACCESS_DENIED_OBJECT_ACE, ACCESS_ALLOWED_OBJECT_ACE e strutture simili. Questa proprietà non deve essere impostata o modificata per gli oggetti non Active Directory.
-
Per altre informazioni, vedere il membro InheritedObjectType delle strutture ACCESS_DENIED_OBJECT_ACE, ACCESS_ALLOWED_OBJECT_ACE e simili. Questa proprietà non deve essere impostata o modificata per gli oggetti non Active Directory.
In genere, IADsSecurityUtility.GetSecurityDescriptor recupererà tutte le parti del descrittore di sicurezza, ad esempio proprietario, gruppo, SACL o DACL. Analogamente, IADsSecurityUtility.SetSecurityDescriptor sovrascriverà tutte le parti del descrittore di sicurezza per impostazione predefinita. È possibile utilizzare la proprietà IADsSecurityUtility.SecurityMask per specificare singole parti del descrittore di sicurezza da recuperare o impostare. Ad esempio, è possibile impostare SecurityMask su ADS_edizione StandardCURITY_INFO_DACL prima di chiamare GetSecurityDescriptor per recuperare solo l'DACL senza recuperare le altre parti del descrittore di sicurezza.
Per altre informazioni e un esempio di codice che usa l'interfaccia IADsSecurityUtility per aggiungere un ace a un file, vedere Codice di esempio per l'aggiunta di un ace a un file.
Il codice di esempio seguente fornisce gli identificatori costanti per le proprietà File, Condivisione file e Registro di sistema per le proprietà AccessMask, AceType, AceFlags e Flags da utilizzare con Visual Basic e Microsoft Visual Basic Scripting Edition.
' Identifiers for the IADsAccessControlEntry.AccessMask property for file,
' file share, and registry objects.
Const DELETE = &H10000
Const READ_CONTROL = &H20000
Const WRITE_DAC = &H40000
Const WRITE_OWNER = &H80000
Const SYNCHRONIZE = &H100000
Const STANDARD_RIGHTS_REQUIRED = &HF0000
Const STANDARD_RIGHTS_READ = &H20000
Const STANDARD_RIGHTS_WRITE = &H20000
Const STANDARD_RIGHTS_EXECUTE = &H20000
Const STANDARD_RIGHTS_ALL = &H1F0000
Const SPECIFIC_RIGHTS_ALL = &HFFFF
' Identifiers for the IADsAccessControlEntry.AccessMask property for file and
' file share objects.
Const FILE_READ_DATA = &H1 ' file & pipe
Const FILE_LIST_DIRECTORY = &H1 ' directory
Const FILE_WRITE_DATA = &H2 ' file & pipe
Const FILE_ADD_FILE = &H2 ' directory
Const FILE_APPEND_DATA = &H4 ' file
Const FILE_ADD_SUBDIRECTORY = &H4 ' directory
Const FILE_CREATE_PIPE_INSTANCE = &H4 ' named pipe
Const FILE_READ_EA = &H8 ' file & directory
Const FILE_WRITE_EA = &H10 ' file & directory
Const FILE_EXECUTE = &H20 ' file
Const FILE_TRAVERSE = &H20 ' directory
Const FILE_DELETE_CHILD = &H40 ' directory
Const FILE_READ_ATTRIBUTES = &H80 ' all
Const FILE_WRITE_ATTRIBUTES = &H100 ' all
Const FILE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &H1FF
Const FILE_GENERIC_READ = STANDARD_RIGHTS_READ Or FILE_READ_DATA Or FILE_READ_ATTRIBUTES Or _
FILE_READ_EA Or SYNCHRONIZE
Const FILE_GENERIC_WRITE = STANDARD_RIGHTS_WRITE Or FILE_WRITE_DATA Or FILE_WRITE_ATTRIBUTES Or _
FILE_WRITE_EA Or FILE_APPEND_DATA Or SYNCHRONIZE
Const FILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE Or FILE_READ_ATTRIBUTES Or FILE_EXECUTE Or SYNCHRONIZE
' Identifiers for the IADsAccessControlEntry.AccessMask property for registry
' objects.
Const KEY_QUERY_VALUE = &H1
Const KEY_SET_VALUE = &H2
Const KEY_CREATE_SUB_KEY = &H4
Const KEY_ENUMERATE_SUB_KEYS = &H8
Const KEY_NOTIFY = &H10
Const KEY_CREATE_LINK = &H20
Const KEY_WOW64_32KEY = &H200
Const KEY_WOW64_64KEY = &H100
Const KEY_WOW64_RES = &H300
Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And _
(Not SYNCHRONIZE))
Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))
Const KEY_EXECUTE = ((KEY_READ) And (Not SYNCHRONIZE))
Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or _
KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
' Identifiers for the IADsAccessControlEntry.AceFlags property for file and
' file share objects.
Const OBJECT_INHERIT_ACE = &H1
Const CONTAINER_INHERIT_ACE = &H2
Const NO_PROPAGATE_INHERIT_ACE = &H4
Const INHERIT_ONLY_ACE = &H8
Const INHERITED_ACE = &H10
' Identifiers for the IADsAccessControlEntry.Flags property.
Const ACE_OBJECT_TYPE_PRESENT = 1
Const ACE_INHERITED_OBJECT_TYPE_PRESENT = 2