// // 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