Platform SDK: Access Control |
The GetSecurityInfo function retrieves a copy of the security descriptor for an object specified by a handle.
DWORD GetSecurityInfo( HANDLE handle, // handle to object SE_OBJECT_TYPE ObjectType, // object type SECURITY_INFORMATION SecurityInfo, // information type PSID *ppsidOwner, // owner SID PSID *ppsidGroup, // primary group SID PACL *ppDacl, // DACL PACL *ppSacl, // SACL PSECURITY_DESCRIPTOR *ppSecurityDescriptor // SD );
Value | Meaning |
---|---|
DACL_SECURITY_INFORMATION | If this flag is set, the ppDacl parameter receives the object's discretionary access-control list (DACL). |
GROUP_SECURITY_INFORMATION | If this flag is set, the ppsidGroup parameter receives the SID of the object's primary group. |
OWNER_SECURITY_INFORMATION | If this flag is set, the ppsidOwner parameter receives the security identifier (SID) of the object's owner. |
SACL_SECURITY_INFORMATION | If this flag is set, the ppSacl parameter receives the object's system access-control list (SACL).. |
If the function succeeds, the return value is ERROR_SUCCESS.
If the function fails, the return value is a nonzero error code defined in WINERROR.H.
If the ppsidOwner, ppsidGroup, ppDacl, ppSacl parameters are non-NULL, and the SecurityInfo parameter specifies that they be retrieved from the object, those parameters will point to the corresponding parameters in the security descriptor returned in ppSecurityDescriptor.
To read the owner, group, or DACL from the object's security descriptor, the calling process must have been granted READ_CONTROL access when the handle was opened. To get READ_CONTROL access, the caller must be the owner of the object or the object's DACL must grant the access.
To read the SACL from the security descriptor, the calling process must have been granted ACCESS_SYSTEM_SECURITY access when the handle was opened. The proper way to get this access is to enable the SE_SECURITY_NAME privilege in the caller's current token, open the handle for ACCESS_SYSTEM_SECURITY access, and then disable the privilege.
You can use the GetSecurityInfo function with the following types of objects:
Windows NT/2000: Requires Windows NT 4.0 or later.
Header: Declared in Aclapi.h.
Library: Use Advapi32.lib.
Access Control Overview, Access Control Functions, ACL, GetNamedSecurityInfo, LocalFree, SE_OBJECT_TYPE, SECURITY_DESCRIPTOR, SECURITY_INFORMATION, SetNamedSecurityInfo, SetSecurityInfo, SID