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;
}
Пока на собственное сообщение не было ответов, его можно удалить.