The SetSecurityInfo function sets specified security information in the security descriptor of a specified object. The caller identifies the object by a handle.
DWORD SetSecurityInfo(
| HANDLE handle, | // handle to the object | 
| SE_OBJECT_TYPE ObjectType, | // type of object | 
| SECURITY_INFORMATION SecurityInfo, | // type of security information to set | 
| PSID psidOwner, | // pointer to the new owner SID | 
| PSID psidGroup, | // pointer to the new primary group SID | 
| PACL pDacl, | // pointer to the new DACL | 
| PACL pSacl | // pointer to the new SACL | 
| ); | 
| Value | Meaning | 
| OWNER_SECURITY_INFORMATION | Set the owner security identifier (SID) in the object’s security descriptor. The psidOwner parameter points to the new SID. | 
| GROUP_SECURITY_INFORMATION | Set the primary group SID in the object’s security descriptor. The psidGroup parameter points to the new SID. | 
| DACL_SECURITY_INFORMATION | Set the discretionary access-control list (DACL) in the object’s security descriptor. The pDacl parameter points to the new DACL. | 
| SACL_SECURITY_INFORMATION | Set the system access-control list (SACL) in the object’s security descriptor. The pSacl parameter points to the new 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.
ACL, GetNamedSecurityInfo, GetSecurityInfo, SE_OBJECT_TYPE, SECURITY_DESCRIPTOR, SECURITY_INFORMATION, SetNamedSecurityInfo, SID