Re[14]: Добавление аудита к файлам в Win2K
От: DelpH  
Дата: 17.12.02 13:08
Оценка:
Привожу main() ...

int main()
{

DWORD dwSize;
SECURITY_INFORMATION si = DACL_SECURITY_INFORMATION | SACL_SECURITY_INFORMATION;
PSECURITY_DESCRIPTOR psd;
PACL pAclDacl, pAclSacl;
PTRUSTEE pOwner = NULL, pGroup = NULL;
ULONG cDaclLen, cSaclLen;
PEXPLICIT_ACCESS pDacl = NULL, pSacl = NULL;
BOOL bP, bD;
ACL_SIZE_INFORMATION aclSizeInfo;
int aclSize;
PACL newACL;
BOOL bRes;
PSID user = NULL;
DWORD result;

if(!SetPriv(SE_SECURITY_NAME, true))
{
MessageBox(NULL, "Can't set privilege\n.", "Error", MB_OK);
}

dwSize=0;
psd = 0;

result = GetNamedSecurityInfo( DFILE, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION
| SACL_SECURITY_INFORMATION, NULL, NULL, &pAclDacl, &pAclSacl, &psd );

if(!SetPriv(SE_SECURITY_NAME, false))
{
MessageBox(NULL, "Can't set privilege\n.", "Error", MB_OK);
}

if(!GetAclInformation (pAclSacl, (LPVOID) &aclSizeInfo, (DWORD) sizeof (ACL_SIZE_INFORMATION),
AclSizeInformation))
{
MessageBox(NULL, "Error3!", "Error", MB_OK);
}

GetAccountSid(NULL, "Everyone", &user);

aclSize = aclSizeInfo.AclBytesInUse + sizeof(ACL) +
sizeof (SYSTEM_AUDIT_ACE) + GetLengthSid(user) —
sizeof (DWORD);

newACL = (PACL) new BYTE [aclSize];

if (!InitializeAcl (newACL, aclSize, ACL_REVISION))
{
DWORD er = GetLastError();
DisplayError(er);
}

result = CopyACL(pAclSacl, newACL);

if(result)
{
DisplayError(result);
}

if(!AddAuditAccessAce(newACL, ACL_REVISION, FILE_GENERIC_WRITE, user, TRUE, TRUE))
{
DWORD er = GetLastError();
DisplayError(er);
}

if(!SetPriv(SE_SECURITY_NAME, true))
{
MessageBox(NULL, "Can't set privilege\n.", "Error", MB_OK);
}

if(SetNamedSecurityInfo(DFILE, SE_FILE_OBJECT, SACL_SECURITY_INFORMATION, NULL, NULL, NULL, newACL) != ERROR_SUCCESS)
{
MessageBox(NULL, "SetNamedSecurityInfo Error!", "Error", MB_OK);
}

if(!SetPriv(SE_SECURITY_NAME, false))
{
MessageBox(NULL, "Can't set privilege\n.", "Error", MB_OK);
}

return 0;

}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.