|
|
//
// Root of the name space
// {8FC0B736-A0E1-11d1-A7D3-0000F87571E3}
//
DEFINE_GUID(NODEID_GPERoot, 0x8fc0b736, 0xa0e1, 0x11d1, 0xa7, 0xd3, 0x0, 0x0, 0xf8, 0x75, 0x71, 0xe3);
//
// Computer Configuration
// {8FC0B739-A0E1-11d1-A7D3-0000F87571E3}
//
DEFINE_GUID(NODEID_MachineRoot, 0x8fc0b739, 0xa0e1, 0x11d1, 0xa7, 0xd3, 0x0, 0x0, 0xf8, 0x75, 0x71, 0xe3);
//
// User Configuration
// {8FC0B73B-A0E1-11d1-A7D3-0000F87571E3}
//
DEFINE_GUID(NODEID_UserRoot, 0x8fc0b73b, 0xa0e1, 0x11d1, 0xa7, 0xd3, 0x0, 0x0, 0xf8, 0x75, 0x71, 0xe3);
//
// Root of the RSOP name space
// {6f13bce5-39fd-45bc-8e9c-2002b409eba5}
//
DEFINE_GUID(NODEID_RSOPRoot, 0x6f13bce5, 0x39fd, 0x45bc, 0x8e, 0x9c, 0x20, 0x02, 0xb4, 0x09, 0xeb, 0xa5);
//
// RSOP Computer Configuration
// {e753a11a-66cc-4816-8dd8-3cbe46717fd3}
//
DEFINE_GUID(NODEID_RSOPMachineRoot, 0xe753a11a, 0x66cc, 0x4816, 0x8d, 0xd8, 0x3c, 0xbe, 0x46, 0x71, 0x7f, 0xd3);
//
// RSOP User Configuration
// {99d5b872-1ad0-4d87-acf1-82125d317653}
//
DEFINE_GUID(NODEID_RSOPUserRoot, 0x99d5b872, 0x1ad0, 0x4d87, 0xac, 0xf1, 0x82, 0x12, 0x5d, 0x31, 0x76, 0x53);
#ifndef _COMPDATA_H_
#define _COMPDATA_H_
//
// CComponentData class
//
class CComponentData: public IComponentData, public IExtendPropertySheet2, public IExtendContextMenu, public IPersistStreamInit, public ISnapinHelp { friend class CDataObject; friend class CSnapIn;
protected: ULONG m_cRef; HWND m_hwndFrame; BOOL m_bOverride; BOOL m_bDirty; BOOL m_bRefocusInit; LPGROUPPOLICYOBJECT m_pGPO; LPCONSOLENAMESPACE m_pScope; LPCONSOLE m_pConsole; HSCOPEITEM m_hRoot; HSCOPEITEM m_hMachine; HSCOPEITEM m_hUser; GROUP_POLICY_HINT_TYPE m_gpHint; LPTSTR m_pDisplayName; LPTSTR m_pDCName;
LPTSTR m_pChoosePath; HBITMAP m_hChooseBitmap; GROUP_POLICY_OBJECT_TYPE m_tChooseGPOType;
public: CComponentData(); ~CComponentData();
// IUnknown methods
STDMETHODIMP QueryInterface(REFIID, LPVOID FAR *); STDMETHODIMP_(ULONG) AddRef(); STDMETHODIMP_(ULONG) Release();
//
// Implemented IComponentData methods
//
STDMETHODIMP Initialize(LPUNKNOWN pUnknown); STDMETHODIMP CreateComponent(LPCOMPONENT* ppComponent); STDMETHODIMP QueryDataObject(MMC_COOKIE cookie, DATA_OBJECT_TYPES type, LPDATAOBJECT* ppDataObject); STDMETHODIMP Destroy(void); STDMETHODIMP Notify(LPDATAOBJECT lpDataObject, MMC_NOTIFY_TYPE event, LPARAM arg, LPARAM param); STDMETHODIMP GetDisplayInfo(LPSCOPEDATAITEM pItem); STDMETHODIMP CompareObjects(LPDATAOBJECT lpDataObjectA, LPDATAOBJECT lpDataObjectB);
//
// Implemented IExtendPropertySheet2 methods
//
STDMETHODIMP CreatePropertyPages(LPPROPERTYSHEETCALLBACK lpProvider, LONG_PTR handle, LPDATAOBJECT lpDataObject); STDMETHODIMP QueryPagesFor(LPDATAOBJECT lpDataObject); STDMETHODIMP GetWatermarks(LPDATAOBJECT lpIDataObject, HBITMAP* lphWatermark, HBITMAP* lphHeader, HPALETTE* lphPalette, BOOL* pbStretch);
//
// Implemented IExtendContextMenu methods
//
STDMETHODIMP AddMenuItems(LPDATAOBJECT piDataObject, LPCONTEXTMENUCALLBACK pCallback, LONG *pInsertionAllowed); STDMETHODIMP Command(LONG lCommandID, LPDATAOBJECT piDataObject);
//
// Implemented IPersistStreamInit interface members
//
STDMETHODIMP GetClassID(CLSID *pClassID); STDMETHODIMP IsDirty(VOID); STDMETHODIMP Load(IStream *pStm); STDMETHODIMP Save(IStream *pStm, BOOL fClearDirty); STDMETHODIMP GetSizeMax(ULARGE_INTEGER *pcbSize); STDMETHODIMP InitNew(VOID);
//
// Implemented ISnapinHelp interface members
//
STDMETHODIMP GetHelpTopic(LPOLESTR *lpCompiledHelpFile);
private: HRESULT InitializeNewGPO(HWND hDlg); HRESULT BuildDisplayName(void); HRESULT IsGPORoot (LPDATAOBJECT lpDataObject); HRESULT IsSnapInManager (LPDATAOBJECT lpDataObject); HRESULT GetDefaultDomain (LPTSTR *lpDomain, HWND hDlg); HRESULT EnumerateScopePane(LPDATAOBJECT lpDataObject, HSCOPEITEM hParent); HRESULT GetOptions (DWORD * pdwOptions);
void SetDirty(VOID) { m_bDirty = TRUE; } void ClearDirty(VOID) { m_bDirty = FALSE; } BOOL ThisIsDirty(VOID) { return m_bDirty; }
static INT_PTR CALLBACK ChooseInitDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam); };
//
// ComponentData class factory
//
class CComponentDataCF : public IClassFactory { protected: ULONG m_cRef;
public: CComponentDataCF(); ~CComponentDataCF();
// IUnknown methods
STDMETHODIMP QueryInterface(REFIID, LPVOID FAR *); STDMETHODIMP_(ULONG) AddRef(); STDMETHODIMP_(ULONG) Release();
// IClassFactory methods
STDMETHODIMP CreateInstance(LPUNKNOWN, REFIID, LPVOID FAR *); STDMETHODIMP LockServer(BOOL); };
//
// Save console defines
//
#define PERSIST_DATA_VERSION 3 // version number in msc file
#define MSC_FLAG_OVERRIDE 0x00000001 // allow command line switches to override msc contents
#define MSC_FLAG_LOCAL_GPO 0x00000002 // open local gpo
#define MSC_FLAG_REMOTE_GPO 0x00000004 // open remote gpo, machine name is stored in msc file
#define MSC_FLAG_DS_GPO 0x00000008 // open ds gpo, ldap path is stored in msc file
//
// Command line switches
//
#define CMD_LINE_START TEXT("/gp") // base to all group policy command line switches
#define CMD_LINE_HINT TEXT("/gphint:") // hint to which DS object (or machine) this gpo is linked to
#define CMD_LINE_GPO TEXT("/gpobject:") // gpo path in quotes
#define CMD_LINE_COMPUTER TEXT("/gpcomputer:") // computer name in quotes
#endif // _COMPDATA_H
|