2025-04-27 07:49:33 -04:00

54 lines
2.3 KiB
C

#ifndef _WMI_CSE_HEADER_COMPILED_ALREADY_
#define _WMI_CSE_HEADER_COMPILED_ALREADY_
#include <FLEXARRY.H>
#include <containers.h>
// {AAEAE720-0328-4763-8ECB-23422EDE2DB5}
CLSID CLSID_CSE =
{ 0xaaeae720, 0x328, 0x4763, { 0x8e, 0xcb, 0x23, 0x42, 0x2e, 0xde, 0x2d, 0xb5 } };
#define CSE_REG_KEY "Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\GPExtensions\\{AAEAE720-0328-4763-8ECB-23422EDE2DB5}"
#define POLICY_PROC_NAME "ProcessGroupPolicyProc"
#define POLICY_PROC_NAME_EX "ProcessGroupPolicyProcEx"
#define GENREATE_POLICY_PROC "GenerateGroupPolicyProc"
#define WMI_CSE_NAME "WMI Group Policy Extension"
#define WMIGPO_GETOBJECT_TEMPLATE L"MSFT_WMIGPO.DsPath=\"%s\""
#define WMIGPO_GETOBJECT_STRLEN (sizeof(WMIGPO_GETOBJECT_TEMPLATE)/sizeof(WCHAR) +MAX_PATH +1)
HRESULT GetPolicyNamespace(IWbemServices*& pPolicyNamespace);
HRESULT GetPolicyTemplates(IWbemServices* pPolicyNamespace, const WCHAR* pPath, TemplateMap& policies,
IWbemServices* pRSOPNamespace, IWbemClassObject* pRsopWMIGPOClass, IWbemClassObject* pRsopTemplateClass,
IWbemServices* pHistoryNamespace, IWbemClassObject* pMsftWMIGPOClass, IWbemClassObject* pMsftTemplateClass);
HRESULT GetNamespace(BSTR namespaceName, IWbemServices*& pNamespace);
inline void MakeGPOPath(WCHAR* buf);
HRESULT GetPolicyArray(IWbemServices* pPolicyNamespace, PGROUP_POLICY_OBJECT pGPOList,
IWbemServices* pRSOPNamespace,
IWbemServices* pHistoryNamespace, TemplateMap& policies);
HRESULT ApplyPolices(TemplateMap& policies, IWbemServices* pPolicyNamespace, IWbemServices* pRSOPNamespace,
IWbemServices* pHistoryNamespace, bool bDoItForReal);
void EnsureType(IWbemServices* pPolicyNamespace, IWbemClassObject* pTemplate);
// all parameters passed to ProcessGroupPolicy
// used to pass info along to thread start routine
struct PGPStartup
{
DWORD dwFlags;
HANDLE hToken;
HKEY hKeyRoot;
PGROUP_POLICY_OBJECT pDeletedGPOList;
PGROUP_POLICY_OBJECT pChangedGPOList;
ASYNCCOMPLETIONHANDLE pHandle;
BOOL *pbAbort;
PFNSTATUSMESSAGECALLBACK pStatusCallback;
IWbemServices *pWbemServices;
HRESULT *pRsopStatus;
};
#endif // _WMI_CSE_HEADER_COMPILED_ALREADY_