//+------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1993 - 1995. // // File: ACCACC.hxx // // Contents: class encapsulating NT security user ACCACC. // // Classes: CAccountAccess // // History: Nov-93 Created DaveMont // //-------------------------------------------------------------------- #ifndef __ACCACC__ #define __ACCACC__ //+------------------------------------------------------------------- // // Class: CAccountAccess // // Purpose: encapsulation of class Account and NT access masks. Results // in an ACE. This // class interfaces with the security system to get SIDs from // usernames and vis-versa. // //-------------------------------------------------------------------- class CAccountAccess { public: CAccountAccess(); ~CAccountAccess(); void * operator new(size_t size); void operator delete(void * p, size_t size); DWORD Init(LPWSTR name, LPWSTR system, ACCESS_MODE accessmode, ACCESS_MASK accessmask, DWORD aceflags, BOOL fSaveName); DWORD Init(PSID psid, LPWSTR system, ACCESS_MODE accessmode, ACCESS_MASK accessmask, DWORD aceflags, BOOL fSaveSid); DWORD Clone(CAccountAccess **clone); DWORD LookupName(LPWSTR *name); DWORD SetImpersonateSid(PSID psid); DWORD SetImpersonateName(LPWSTR name); inline PSID Sid(); inline LPWSTR Name(); inline LPWSTR Domain(); inline ACCESS_MODE AccessMode(); inline ACCESS_MASK AccessMask(); inline DWORD AceFlags(); inline SID_NAME_USE SidType(); inline VOID SetAccessMask(ACCESS_MASK accessmask); inline VOID SetAccessMode(ACCESS_MODE accessmode); inline VOID SetAceFlags(DWORD aceflags); inline PSID ImpersonateSid(); inline LPWSTR ImpersonateName(); inline MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation(); private: LPWSTR _principal; LPWSTR _system; LPWSTR _domain; PSID _psid; ACCESS_MASK _accessmask; ACCESS_MODE _accessmode; DWORD _aceflags; SID_NAME_USE _esidtype; BOOL _freedomain; BOOL _freename; BOOL _freesid; PSID _pimpersonatesid; LPWSTR _pimpersonatename; MULTIPLE_TRUSTEE_OPERATION _multipletrusteeoperation; }; //+--------------------------------------------------------------------------- // // Member: CAccountAccess::SID, public // // Synopsis: returns the principal for the class // // Arguments: OUT [psid] - address of the principal name // //---------------------------------------------------------------------------- PSID CAccountAccess::Sid() { return(_psid); } //+--------------------------------------------------------------------------- // // Member: CAccountAccess::SID, public // // Synopsis: returns the principal for the class // // Arguments: OUT [psid] - address of the principal name // //---------------------------------------------------------------------------- LPWSTR CAccountAccess::Domain() { return(_domain); } //+--------------------------------------------------------------------------- // // Member: CAccountAccess::SID, public // // Synopsis: returns the principal for the class // // Arguments: OUT [psid] - address of the principal name // //---------------------------------------------------------------------------- LPWSTR CAccountAccess::Name() { return(_principal); } //+--------------------------------------------------------------------------- // // Member: CAccountAccess::AccessMode, public // // Synopsis: returns the accessmode (GRANT, SET = allowed, DENY = denied, REVOKE) // // Arguments: none // //---------------------------------------------------------------------------- ACCESS_MODE CAccountAccess::AccessMode() { return(_accessmode); } //+--------------------------------------------------------------------------- // // Member: CAccountAccess::Mask, public // // Synopsis: returns the access mask // // Arguments: none // //---------------------------------------------------------------------------- ACCESS_MASK CAccountAccess::AccessMask() { return(_accessmask); } //+--------------------------------------------------------------------------- // // Member: CAccountAccess::AceFlags, public // // Synopsis: returns the access mask // // Arguments: none // //---------------------------------------------------------------------------- DWORD CAccountAccess::AceFlags() { return(_aceflags); } //+--------------------------------------------------------------------------- // // Member: CAccountAccess::SidType, public // // Synopsis: returns the sid type // // Arguments: none // //---------------------------------------------------------------------------- SID_NAME_USE CAccountAccess::SidType() { return(_esidtype); } //+--------------------------------------------------------------------------- // // Member: CAccountAccess::SetAccessMask, public // // Synopsis: sets the access mask // // Arguments: IN [am] - the accessmask to set // //---------------------------------------------------------------------------- VOID CAccountAccess::SetAccessMask(ACCESS_MASK accessmask) { _accessmask = accessmask; } //+--------------------------------------------------------------------------- // // Member: CAccountAccess::SetAccessMode, public // // Synopsis: sets the access type // // Arguments: IN [am] - the access type to set // //---------------------------------------------------------------------------- VOID CAccountAccess::SetAccessMode(ACCESS_MODE accessmode) { _accessmode = accessmode; } //+--------------------------------------------------------------------------- // // Member: CAccountAccess::SetAceFlags, public // // Synopsis: sets the access type // // Arguments: IN [am] - the access type to set // //---------------------------------------------------------------------------- VOID CAccountAccess::SetAceFlags(DWORD aceflags) { _aceflags = aceflags; } //+--------------------------------------------------------------------------- // // Member: CAccountAccess::ImpersonateSid, public // // Synopsis: returns the SID for the impersonating server // // Arguments: OUT [psid] - address of the sid // //---------------------------------------------------------------------------- PSID CAccountAccess::ImpersonateSid() { return(_pimpersonatesid); } //+--------------------------------------------------------------------------- // // Member: CAccountAccess::ImpersonateName, public // // Synopsis: returns the name of the impersonating servers' account // // Arguments: OUT [psid] - address of the server's name // //---------------------------------------------------------------------------- LPWSTR CAccountAccess::ImpersonateName() { return(_pimpersonatename); } //+--------------------------------------------------------------------------- // // Member: CAccountAccess::ImpersonateName, public // // Synopsis: returns the name of the impersonating servers' account // // Arguments: OUT [psid] - address of the server's name // //---------------------------------------------------------------------------- MULTIPLE_TRUSTEE_OPERATION CAccountAccess::MultipleTrusteeOperation() { return(_multipletrusteeoperation); } #endif // __ACCACC__