windows-nt/Source/XPSP1/NT/sdktools/cacls/accacc.cxx
2020-09-26 16:20:57 +08:00

88 lines
2.5 KiB
C++

//+------------------------------------------------------------------
//
// Copyright (C) 1995, Microsoft Corporation.
//
// File: accacc.cxx
//
// Classes: CAccountAccess
//
// History: Nov-93 DaveMont Created.
//
//-------------------------------------------------------------------
#include <accacc.hxx>
#if DBG
extern ULONG Debug;
#endif
//+---------------------------------------------------------------------------
//
// Member: CAccountAccess::CAccountAccess, public
//
// Synopsis: initializes data members, constructor will not throw
//
// Arguments: IN - [Name] - principal
// IN - [System] - server/domain
//
//----------------------------------------------------------------------------
CAccountAccess::CAccountAccess(WCHAR *Name, WCHAR *System)
: _mask(0),
_savemask(0),
_foundinheritance(0),
_acetype(0xff),
CAccount(Name, System)
{
}
//+---------------------------------------------------------------------------
//
// Member: CAccountAccess::Init, public
//
// Synopsis: initializes access mask
//
// Arguments: IN [access] - access mask
//
//----------------------------------------------------------------------------
ULONG CAccountAccess::Init(ULONG access)
{
if (access == 0)
{
_savemask = GENERIC_ALL;
_mask = GENERIC_ALL;
_acetype = ACCESS_DENIED_ACE_TYPE;
} else
{
_acetype = ACCESS_ALLOWED_ACE_TYPE;
_savemask = access;
_mask = access;
}
return(ERROR_SUCCESS);
}
//+---------------------------------------------------------------------------
//
// Member: CAccountAccess::AddInheritance, public
//
// Synopsis: accumulates inheritance of ACEs with matching SIDS
//
// Arguments: inheritance flags
//
//--------------------------------------------------------------------
void CAccountAccess::AddInheritance(BYTE Flags)
{
if (!(Flags & NO_PROPAGATE_INHERIT_ACE))
{
if (Flags & INHERIT_ONLY_ACE)
{
if (Flags & CONTAINER_INHERIT_ACE)
_foundinheritance |= CONTAINER_INHERIT_ACE;
if (Flags & OBJECT_INHERIT_ACE)
_foundinheritance |= OBJECT_INHERIT_ACE;
} else
{
_foundinheritance |= APPLIES_TO_CONTAINER;
if (Flags & CONTAINER_INHERIT_ACE)
_foundinheritance |= CONTAINER_INHERIT_ACE;
if (Flags & OBJECT_INHERIT_ACE)
_foundinheritance |= OBJECT_INHERIT_ACE;
}
}
}