128 lines
2.7 KiB
C
128 lines
2.7 KiB
C
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Microsoft Windows
|
||
|
// Copyright (C) Microsoft Corporation, 2000 - 2000
|
||
|
//
|
||
|
// File: SecUtil.h
|
||
|
//
|
||
|
// Contents: Utility functions for working with the security APIs
|
||
|
//
|
||
|
// History: 15-Sep-2000 JeffJon Created
|
||
|
//
|
||
|
//
|
||
|
//--------------------------------------------------------------------------
|
||
|
|
||
|
#ifndef _SECUTIL_H_
|
||
|
#define _SECUTIL_H_
|
||
|
|
||
|
extern const GUID GUID_CONTROL_UserChangePassword;
|
||
|
|
||
|
//+--------------------------------------------------------------------------
|
||
|
//
|
||
|
// Class: CSimpleSecurityDescriptorHolder
|
||
|
//
|
||
|
// Purpose: Smart wrapper for a SecurityDescriptor
|
||
|
//
|
||
|
// History: 15-Sep-2000 JeffJon Created
|
||
|
//
|
||
|
//---------------------------------------------------------------------------
|
||
|
class CSimpleSecurityDescriptorHolder
|
||
|
{
|
||
|
public:
|
||
|
//
|
||
|
// Constructor and Destructor
|
||
|
//
|
||
|
CSimpleSecurityDescriptorHolder();
|
||
|
~CSimpleSecurityDescriptorHolder();
|
||
|
|
||
|
//
|
||
|
// Public member data
|
||
|
//
|
||
|
PSECURITY_DESCRIPTOR m_pSD;
|
||
|
private:
|
||
|
CSimpleSecurityDescriptorHolder(const CSimpleSecurityDescriptorHolder&) {}
|
||
|
CSimpleSecurityDescriptorHolder& operator=(const CSimpleSecurityDescriptorHolder&) {}
|
||
|
};
|
||
|
|
||
|
|
||
|
//+--------------------------------------------------------------------------
|
||
|
//
|
||
|
// Class: CSimpleAclHolder
|
||
|
//
|
||
|
// Purpose: Smart wrapper for a ACL
|
||
|
//
|
||
|
// History: 15-Sep-2000 JeffJon Created
|
||
|
//
|
||
|
//---------------------------------------------------------------------------
|
||
|
class CSimpleAclHolder
|
||
|
{
|
||
|
public:
|
||
|
CSimpleAclHolder()
|
||
|
{
|
||
|
m_pAcl = NULL;
|
||
|
}
|
||
|
~CSimpleAclHolder()
|
||
|
{
|
||
|
if (m_pAcl != NULL)
|
||
|
::LocalFree(m_pAcl);
|
||
|
}
|
||
|
|
||
|
PACL m_pAcl;
|
||
|
};
|
||
|
|
||
|
//+--------------------------------------------------------------------------
|
||
|
//
|
||
|
// Class: CSidHolder
|
||
|
//
|
||
|
// Purpose: Smart wrapper for a SID
|
||
|
//
|
||
|
// History: 15-Sep-2000 JeffJon Created
|
||
|
//
|
||
|
//---------------------------------------------------------------------------
|
||
|
class CSidHolder
|
||
|
{
|
||
|
public:
|
||
|
//
|
||
|
// Constructor and Destructor
|
||
|
//
|
||
|
CSidHolder();
|
||
|
~CSidHolder();
|
||
|
|
||
|
//
|
||
|
// Public methods
|
||
|
//
|
||
|
PSID Get();
|
||
|
bool Copy(PSID p);
|
||
|
void Attach(PSID p, bool bLocalAlloc);
|
||
|
void Clear();
|
||
|
|
||
|
private:
|
||
|
//
|
||
|
// Private methods
|
||
|
//
|
||
|
void _Init();
|
||
|
void _Free();
|
||
|
bool _Copy(PSID p);
|
||
|
|
||
|
//
|
||
|
// Private member data
|
||
|
//
|
||
|
PSID m_pSID;
|
||
|
bool m_bLocalAlloc;
|
||
|
};
|
||
|
|
||
|
//
|
||
|
//Function for reading and writing acl
|
||
|
//
|
||
|
HRESULT
|
||
|
DSReadObjectSecurity(IN IDirectoryObject *pDsObject,
|
||
|
OUT SECURITY_DESCRIPTOR_CONTROL * psdControl,
|
||
|
OUT PACL *ppDacl);
|
||
|
|
||
|
HRESULT
|
||
|
DSWriteObjectSecurity(IN IDirectoryObject *pDsObject,
|
||
|
IN SECURITY_DESCRIPTOR_CONTROL sdControl,
|
||
|
PACL pDacl);
|
||
|
|
||
|
|
||
|
#endif //_SECUTIL_H_
|