|
|
//
// Structures
//
typedef struct _GPOITEM { DWORD dwOptions; LPTSTR lpDisplayName; LPTSTR lpGPOName; LPTSTR lpDSPath; DWORD dwDisabled; // see GPO_OPTION_DISABLE_* flags in gpedit.h
BOOL bReadOnly; BOOL bLocked; } GPOITEM, *LPGPOITEM;
typedef struct _ADDGPOITEM { LPTSTR lpDSName; BOOL bSpawn; LPTSTR lpName; LPTSTR lpPath; LPTSTR lpImport; } ADDGPOITEM, *LPADDGPOITEM;
//
// CGroupPolicyMgr class
//
class CGroupPolicyMgr: public IExtendPropertySheet, public ISnapinHelp {
protected: UINT m_cRef; LPTSTR m_lpDSObject; LPTSTR m_lpGPODCName; LPTSTR m_lpDSADCName; LPTSTR m_lpDomainName; HFONT m_hDefaultFont; HFONT m_hMarlettFont; BOOL m_bReadOnly; BOOL m_bDirty; GROUP_POLICY_HINT_TYPE m_gpHint;
static unsigned int m_cfDSObjectName; static unsigned int m_cfNodeTypeString;
public: CGroupPolicyMgr(); ~CGroupPolicyMgr();
// IUnknown methods
STDMETHODIMP QueryInterface(REFIID, LPVOID FAR *); STDMETHODIMP_(ULONG) AddRef(); STDMETHODIMP_(ULONG) Release();
//
// Implemented IExtendPropertySheet methods
//
STDMETHODIMP CreatePropertyPages(LPPROPERTYSHEETCALLBACK lpProvider, LONG_PTR handle, LPDATAOBJECT lpDataObject); STDMETHODIMP QueryPagesFor(LPDATAOBJECT lpDataObject);
//
// Implemented ISnapinHelp interface members
//
STDMETHODIMP GetHelpTopic(LPOLESTR *lpCompiledHelpFile);
private:
static UINT CALLBACK PropSheetPageCallback(HWND hwnd, UINT uMsg, LPPROPSHEETPAGE ppsp); static INT_PTR CALLBACK GPMDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); void OnContextMenu(HWND hDlg, LPARAM lParam); void OnProperties(HWND hDlg); void OnNew(HWND hDlg); BOOL RefreshGPM (HWND hDlg, BOOL bInitial); BOOL OnInitDialog (HWND hDlg); BOOL Save (HWND hDlg); BOOL AddGPOs (HWND hDlg, LPTSTR lpGPOList); LPGPOITEM CreateEntry (LPTSTR szName, LPTSTR szGPO, DWORD dwOptions, DWORD dwDisabled, BOOL bReadOnly); BOOL AddGPOToList (HWND hLV, LPTSTR szName, LPTSTR szGPO, DWORD dwOptions, BOOL bHighest, DWORD dwDisabled, BOOL bReadOnly); static BOOL CALLBACK AddGPODlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); static INT_PTR CALLBACK RemoveGPODlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); static INT_PTR CALLBACK DeleteGPODlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); static INT_PTR CALLBACK LinkOptionsDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); static INT_PTR CALLBACK NoDSObjectDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); DWORD IsGPODisabled(LPTSTR lpGPO); void CheckIconStatus (HWND hLV, LPGPOITEM lpGPO); LPTSTR GetFullGPOPath (LPTSTR lpGPO, HWND hParent); BOOL StartGPE (LPTSTR lpGPO, HWND hParent); };
//
// ComponentData class factory
//
class CGroupPolicyMgrCF : public IClassFactory { protected: ULONG m_cRef;
public: CGroupPolicyMgrCF(); ~CGroupPolicyMgrCF();
// IUnknown methods
STDMETHODIMP QueryInterface(REFIID, LPVOID FAR *); STDMETHODIMP_(ULONG) AddRef(); STDMETHODIMP_(ULONG) Release();
// IClassFactory methods
STDMETHODIMP CreateInstance(LPUNKNOWN, REFIID, LPVOID FAR *); STDMETHODIMP LockServer(BOOL); };
//
// Strings
//
#define GPM_NAME_PROPERTY L"name"
#define GPM_OPTIONS_PROPERTY L"gPOptions"
#define GPM_LINK_PROPERTY L"gPLink"
|