檔案和登錄機碼上的安全性描述項
Active Directory 服務介面 (ADSI) 可用來管理及保護組織內的文件系統,包括能夠在使用者建立的檔案或檔案共享上設定或修改 ACL。 安全性介面,例如 IADsSecurityDescriptor、IADsAccessControlList 和 IADsAccessControlEntry 在 Active Directory、Exchange、檔案、檔案共用或登錄機碼對象上設定 ACL。 使用這些介面之前,如果安全性描述元使用不同於介面的格式,或您沒有安全性描述元 SACL 的訪問許可權,因為您不是安全性系統管理員群組的成員,則可能需要修改安全性描述元。
若要取得、設定或修改安全性描述元,請使用 IADsSecurityUtility 介面。 此介面可讓您從原始格式的各種資源擷取安全性描述元,例如 ADSI 格式 IADsSecurityDescriptor、原始安全性描述元或 Exchange 5.5 中使用的十六進位字串。 擷取時,您可以將它轉換成另一種格式,例如,從原始安全性描述元轉換成 IADsSecurityDescriptor。 然後,您可以將新格式寫回資源。
某些 IADsAccessControlEntry 屬性值,例如 AccessMask 和 AceFlags,會因為不同的物件類型而有所不同。 例如,Active Directory 物件會針對 IADsAccessControlEntry.AccessMask 屬性使用ADS_RIGHTS_ENUM列舉的ADS_RIGHT_GENERIC_READ成員,但檔案物件的對等訪問許可權FILE_GENERIC_READ。 假設 Active Directory 物件和非 Active Directory 物件的所有屬性值都相同並不安全。 下列清單顯示 非 Active Directory 物件的 IADsAccessControlEntry 屬性,以及可以取得適當值的位置。
-
如需檔案或檔案共享物件可能值的詳細資訊和清單,請參閱 檔案安全性和訪問許可權。
如需登錄物件可能值的詳細資訊和清單,請參閱 登錄機碼安全性和訪問許可權。
-
如需詳細資訊,請參閱 ACE_HEADER 結構的 AceType 成員。
-
如需詳細資訊,請參閱 ACE_HEADER 結構的 AceFlags 成員。
-
包含 WinNT.h 中下列一或多個值的零或組合。
-
ACE_OBJECT_TYPE_PRESENT (1)
-
ObjectType 包含有效的值。
-
ACE_INHERITED_OBJECT_TYPE_PRESENT (2)
-
InheritedObjectType 包含有效的值。
-
-
如需詳細資訊,請參閱ACCESS_DENIED_OBJECT_ACE、ACCESS_ALLOWED_OBJECT_ACE和類似結構的 ObjectType 成員。 不應該為非 Active Directory 物件設定或修改這個屬性。
-
如需詳細資訊,請參閱ACCESS_DENIED_OBJECT_ACE、ACCESS_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