共用方式為


檔案和登錄機碼上的安全性描述項

Active Directory 服務介面 (ADSI) 可用來管理及保護組織內的文件系統,包括能夠在使用者建立的檔案或檔案共享上設定或修改 ACL。 安全性介面,例如 IADsSecurityDescriptorIADsAccessControlList IADsAccessControlEntry 在 Active Directory、Exchange、檔案、檔案共用或登錄機碼對象上設定 ACL。 使用這些介面之前,如果安全性描述元使用不同於介面的格式,或您沒有安全性描述元 SACL 的訪問許可權,因為您不是安全性系統管理員群組的成員,則可能需要修改安全性描述元。

若要取得、設定或修改安全性描述元,請使用 IADsSecurityUtility 介面。 此介面可讓您從原始格式的各種資源擷取安全性描述元,例如 ADSI 格式 IADsSecurityDescriptor、原始安全性描述元或 Exchange 5.5 中使用的十六進位字串。 擷取時,您可以將它轉換成另一種格式,例如,從原始安全性描述元轉換成 IADsSecurityDescriptor。 然後,您可以將新格式寫回資源。

某些 IADsAccessControlEntry 屬性值,例如 AccessMaskAceFlags,會因為不同的物件類型而有所不同。 例如,Active Directory 物件會針對 IADsAccessControlEntry.AccessMask 屬性使用ADS_RIGHTS_ENUM列舉的ADS_RIGHT_GENERIC_READ成員,但檔案物件的對等訪問許可權FILE_GENERIC_READ。 假設 Active Directory 物件和非 Active Directory 物件的所有屬性值都相同並不安全。 下列清單顯示 非 Active Directory 物件的 IADsAccessControlEntry 屬性,以及可以取得適當值的位置。

AccessMask

如需檔案或檔案共享物件可能值的詳細資訊和清單,請參閱 檔案安全性和訪問許可權

如需登錄物件可能值的詳細資訊和清單,請參閱 登錄機碼安全性和訪問許可權

AceType

如需詳細資訊,請參閱 ACE_HEADER 結構的 AceType 成員

AceFlags

如需詳細資訊,請參閱 ACE_HEADER 結構的 AceFlags 成員

旗標

包含 WinNT.h 中下列一或多個值的零或組合。

ACE_OBJECT_TYPE_PRESENT (1)

ObjectType 包含有效的值。

ACE_INHERITED_OBJECT_TYPE_PRESENT (2)

InheritedObjectType 包含有效的值。

ObjectType

如需詳細資訊,請參閱ACCESS_DENIED_OBJECT_ACEACCESS_ALLOWED_OBJECT_ACE和類似結構的 ObjectType 成員。 不應該為非 Active Directory 物件設定或修改這個屬性。

InheritedObjectType

如需詳細資訊,請參閱ACCESS_DENIED_OBJECT_ACEACCESS_ALLOWED_OBJECT_ACE和類似結構的InheritedObjectType成員。 不應該為非 Active Directory 物件設定或修改這個屬性。

一般而言, IADsSecurityUtility.GetSecurityDescriptor 會擷取安全性描述元的所有部分,例如擁有者、群組、SACL 或 DACL。 同樣地, IADsSecurityUtility.SetSecurityDescriptor 預設會覆寫安全性描述元的所有部分。 您可以使用 IADsSecurityUtility.SecurityMask 屬性來指定要擷取或設定之安全性描述元的個別部分。 例如,您可以在呼叫 GetSecurityDescriptor 之前將 SecurityMask 設定ADS_SECURITY_INFO_DACL,只擷取 DACL,而不擷取安全性描述元的其他部分。

如需詳細資訊和使用 IADsSecurityUtility 介面將 ACE 新增至檔案的程式代碼範例,請參閱將 ACE 新增至檔案的範例程式代碼。

下列範例程式代碼提供 AccessMask、AceType、AceFlags 和 Flags 屬性的檔案、檔案共用和登錄物件的常數標識碼,以搭配 Visual Basic 和 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