You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
1.8 KiB
92 lines
1.8 KiB
#ifndef _adminacl_h_
|
|
#define _adminacl_h_
|
|
|
|
|
|
class CAdminACL
|
|
{
|
|
private:
|
|
|
|
IADs* m_pADs;
|
|
IADsSecurityDescriptor* m_pSD;
|
|
IADsAccessControlList* m_pDACL;
|
|
|
|
public:
|
|
|
|
CAdminACL();
|
|
~CAdminACL();
|
|
|
|
HRESULT GetObjectAsync(
|
|
IWbemClassObject* pObj,
|
|
ParsedObjectPath* pParsedObject,
|
|
WMI_CLASS* pWMIClass
|
|
);
|
|
|
|
HRESULT PutObjectAsync(
|
|
IWbemClassObject* pObj,
|
|
ParsedObjectPath* pParsedObject,
|
|
WMI_CLASS* pWMIClass
|
|
);
|
|
|
|
HRESULT DeleteObjectAsync(ParsedObjectPath* pParsedObject);
|
|
|
|
HRESULT OpenSD(_bstr_t bstrAdsPath);
|
|
|
|
void CloseSD();
|
|
|
|
HRESULT GetACEEnum(IEnumVARIANT** pEnum);
|
|
|
|
private:
|
|
|
|
HRESULT SetSD();
|
|
|
|
HRESULT GetAdsPath(_bstr_t& bstrAdsPath);
|
|
|
|
HRESULT PingAdminACL(IWbemClassObject* pObj);
|
|
|
|
HRESULT SetAdminACL(
|
|
IWbemClassObject* pObj
|
|
);
|
|
|
|
HRESULT PingACE(
|
|
IWbemClassObject* pObj,
|
|
IADsAccessControlEntry* pACE
|
|
);
|
|
|
|
HRESULT GetACE(
|
|
IWbemClassObject* pObj,
|
|
_bstr_t& bstrTrustee
|
|
);
|
|
|
|
void GetTrustee(
|
|
IWbemClassObject* pObj,
|
|
ParsedObjectPath* pPath,
|
|
_bstr_t& bstrTrustee
|
|
);
|
|
|
|
HRESULT AddACE(
|
|
IWbemClassObject* pObj,
|
|
_bstr_t& bstrTrustee
|
|
);
|
|
|
|
HRESULT NewACE(
|
|
IWbemClassObject* pObj,
|
|
_bstr_t& bstrTrustee,
|
|
IADsAccessControlEntry** ppACE
|
|
);
|
|
|
|
HRESULT RemoveACE(_bstr_t& bstrTrustee);
|
|
|
|
HRESULT SetDataOfACE(
|
|
IWbemClassObject* pObj,
|
|
IADsAccessControlEntry* pACE
|
|
);
|
|
|
|
HRESULT UpdateACE(
|
|
IWbemClassObject* pObj,
|
|
_bstr_t& bstrTrustee,
|
|
BOOL& fAceExisted
|
|
);
|
|
};
|
|
|
|
|
|
#endif
|