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.

Accessmask

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.

AceType

Per altre informazioni, vedere il membro AceType della struttura ACE_HEADER .

AceFlags

Per altre informazioni, vedere il membro AceFlags della struttura ACE_HEADER .

Flag

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.

ObjectType

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.

InheritedObjectType

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