Source code of Windows XP (NT5)
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.

568 lines
20 KiB

  1. //+---------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. // Copyright (C) Microsoft Corporation, 1997-2001.
  5. //
  6. // File: compdata.h
  7. //
  8. // Contents:
  9. //
  10. //----------------------------------------------------------------------------
  11. #ifndef __COMPDATA_H_INCLUDED__
  12. #define __COMPDATA_H_INCLUDED__
  13. #include "cmponent.h" // LoadIconsIntoImageList
  14. #include "certifct.h"
  15. #include "CTL.h"
  16. #include "CRL.h"
  17. #include "AutoCert.h"
  18. #include "certmgrd.h"
  19. #include "options.h"
  20. #include "cookie.h" // Added by ClassView
  21. #include "StoreRSOP.h"
  22. #include "RSOPObject.h"
  23. #include "SaferLevel.h"
  24. #include "SaferEntryCertificatePropertyPage.h"
  25. #include "SaferEntryPathPropertyPage.h"
  26. #include "SaferEntryHashPropertyPage.h"
  27. #include "SaferEntryInternetZonePropertyPage.h"
  28. #define HINT_CHANGE_VIEW_TYPE 0x00000001
  29. #define HINT_CHANGE_STORE_TYPE 0x00000002
  30. #define HINT_SHOW_ARCHIVE_CERTS 0x00000004
  31. #define HINT_PASTE_COOKIE 0x00000008
  32. #define HINT_EFS_ADD_DEL_POLICY 0x00000010
  33. #define HINT_IMPORT 0x00000020
  34. #define HINT_CHANGE_COMPUTER 0x00000040
  35. #define HINT_REFRESH_STORES 0x00000080
  36. #define HINT_CERT_ENROLLED_USAGE_MODE 0x00000100
  37. class CCertStoreGPE; // forward declaration
  38. class CFindDialog; // forward declaration
  39. class CCertMgrComponentData:
  40. public CComponentData,
  41. public IExtendContextMenu,
  42. public IExtendPropertySheet,
  43. public PersistStream,
  44. public CHasMachineName
  45. {
  46. friend CCertMgrComponent;
  47. friend CViewOptionsDlg;
  48. friend CFindDialog;
  49. friend CSaferEntryCertificatePropertyPage;
  50. friend CSaferEntryPathPropertyPage;
  51. friend CSaferEntryHashPropertyPage;
  52. friend CSaferEntryInternetZonePropertyPage;
  53. public:
  54. IGPEInformation* GetGPEInformation ()
  55. {
  56. if ( m_pGPEInformation )
  57. m_pGPEInformation->AddRef ();
  58. return m_pGPEInformation;
  59. }
  60. IRSOPInformation* GetRSOPInformation (bool bIsComputer)
  61. {
  62. if ( bIsComputer )
  63. {
  64. if ( m_pRSOPInformationComputer )
  65. m_pRSOPInformationComputer->AddRef ();
  66. return m_pRSOPInformationComputer;
  67. }
  68. else
  69. {
  70. if ( m_pRSOPInformationUser )
  71. m_pRSOPInformationUser->AddRef ();
  72. return m_pRSOPInformationUser;
  73. }
  74. }
  75. CertificateManagerObjectType GetObjectType (LPDATAOBJECT pDataObject);
  76. // Use DECLARE_NOT_AGGREGATABLE(CCertMgrComponentData)
  77. // if you don't want your object to support aggregation
  78. //DECLARE_AGGREGATABLE(CCertMgrComponentData)
  79. //DECLARE_REGISTRY(CCertMgrComponentData, _T("CERTMGR.CertMgrObject.1"), _T("CERTMGR.CertMgrObject.1"), IDS_CERTMGR_DESC, THREADFLAGS_BOTH)
  80. CCertMgrComponentData();
  81. virtual ~CCertMgrComponentData();
  82. BEGIN_COM_MAP(CCertMgrComponentData)
  83. COM_INTERFACE_ENTRY(IExtendPropertySheet)
  84. COM_INTERFACE_ENTRY(IPersistStream)
  85. COM_INTERFACE_ENTRY_CHAIN(CComponentData)
  86. COM_INTERFACE_ENTRY(IExtendContextMenu)
  87. END_COM_MAP()
  88. #if DBG==1
  89. ULONG InternalAddRef()
  90. {
  91. return CComObjectRoot::InternalAddRef();
  92. }
  93. ULONG InternalRelease()
  94. {
  95. return CComObjectRoot::InternalRelease();
  96. }
  97. int dbg_InstID;
  98. #endif // DBG==1
  99. // IComponentData
  100. STDMETHOD(CreateComponent)(LPCOMPONENT* ppComponent);
  101. STDMETHOD(QueryDataObject)(MMC_COOKIE cookie, DATA_OBJECT_TYPES type, LPDATAOBJECT* ppDataObject);
  102. // IExtendPropertySheet
  103. STDMETHOD(CreatePropertyPages)(LPPROPERTYSHEETCALLBACK pCall, LONG_PTR handle, LPDATAOBJECT pDataObject);
  104. STDMETHOD(QueryPagesFor)(LPDATAOBJECT pDataObject);
  105. // IExtendContextMenu
  106. public:
  107. const CRSOPObjectArray* GetRSOPObjectArrayComputer () const
  108. {
  109. return &m_rsopObjectArrayComputer;
  110. }
  111. const CRSOPObjectArray* GetRSOPObjectArrayUser () const
  112. {
  113. return &m_rsopObjectArrayUser;
  114. }
  115. CCertMgrCookie* GetRootCookie ()
  116. {
  117. return m_pRootCookie;
  118. }
  119. void RemoveResultCookies (LPRESULTDATA pResultData);
  120. bool ShowArchivedCerts () const;
  121. HRESULT CreateContainers (
  122. HSCOPEITEM hScopeItem,
  123. CCertStore& rTargetStore);
  124. HRESULT EnumerateLogicalStores (CTypedPtrList<CPtrList, CCertStore*>* pStoreList);
  125. CString GetThisComputer() const;
  126. void SetResultData (LPRESULTDATA pResultData);
  127. CUsageCookie* FindDuplicateUsage (HSCOPEITEM hParent, LPCWSTR pszName);
  128. LPCONSOLENAMESPACE GetConsoleNameSpace () const;
  129. DWORD GetLocation () const;
  130. CString GetManagedComputer () const;
  131. CString GetManagedService () const;
  132. CString GetCommandLineFileName () const;
  133. HRESULT RefreshScopePane (LPDATAOBJECT pDataObject);
  134. STDMETHOD(AddMenuItems)(LPDATAOBJECT pDataObject,
  135. LPCONTEXTMENUCALLBACK pCallbackUnknown,
  136. long *pInsertionAllowed);
  137. STDMETHOD(Command)(long nCommandID, LPDATAOBJECT pDataObject);
  138. HRESULT STDMETHODCALLTYPE Load(IStream __RPC_FAR *pStg);
  139. HRESULT STDMETHODCALLTYPE Save(IStream __RPC_FAR *pStgSave, BOOL fSameAsLoad);
  140. // needed for Initialize()
  141. virtual HRESULT LoadIcons(LPIMAGELIST pImageList, BOOL fLoadLargeIcons);
  142. // needed for Notify()
  143. virtual HRESULT OnNotifyExpand(LPDATAOBJECT pDataObject, BOOL bExpanding, HSCOPEITEM hParent);
  144. // needed for GetDisplayInfo(), must be defined by subclass
  145. virtual BSTR QueryResultColumnText(CCookie& basecookieref, int nCol );
  146. virtual int QueryImage(CCookie& basecookieref, BOOL fOpenImage);
  147. virtual CCookie& QueryBaseRootCookie();
  148. inline CCertMgrCookie* ActiveCookie( CCookie* pBaseCookie )
  149. {
  150. return (CCertMgrCookie*)ActiveBaseCookie( pBaseCookie );
  151. }
  152. inline CCertMgrCookie& QueryRootCookie()
  153. {
  154. ASSERT (m_pRootCookie);
  155. return *m_pRootCookie;
  156. }
  157. virtual HRESULT OnNotifyRelease(LPDATAOBJECT pDataObject, HSCOPEITEM hItem);
  158. // CHasMachineName
  159. DECLARE_FORWARDS_MACHINE_NAME( (m_pRootCookie) )
  160. // ISnapinHelp2
  161. STDMETHOD(GetLinkedTopics)(LPOLESTR* lpCompiledHelpFiles);
  162. STDMETHOD(GetHelpTopic)(LPOLESTR* lpCompiledHelpFile);
  163. bool ComputerIsStandAlone () const
  164. {
  165. return m_bMachineIsStandAlone;
  166. }
  167. protected:
  168. bool m_bSaferSupported;
  169. DWORD* m_pdwSaferLevels;
  170. DWORD m_dwDefaultSaferLevel;
  171. CRSOPObjectArray m_rsopObjectArrayComputer;
  172. CRSOPObjectArray m_rsopObjectArrayUser;
  173. LPCONSOLE m_pComponentConsole;
  174. IGPEInformation* m_pGPEInformation;
  175. HRESULT AddSaferCreateNewPolicyMenuItems (
  176. LPCONTEXTMENUCALLBACK pContextMenuCallback,
  177. LONG lInsertionPointID);
  178. HRESULT AddACRSNewMenuItem(
  179. LPCONTEXTMENUCALLBACK pContextMenuCallback,
  180. LONG lInsertionPointID,
  181. bool bIsReadOnly);
  182. HRESULT AddACRSCTLPropPages (
  183. CAutoCertRequest* pACR,
  184. LPPROPERTYSHEETCALLBACK pCallBack);
  185. HRESULT AddAutoenrollmentSettingsPropPages (
  186. LPPROPERTYSHEETCALLBACK pCallBack,
  187. bool fIsComputerType);
  188. HRESULT AddAddDomainEncryptedRecoveryAgentMenuItem(
  189. LPCONTEXTMENUCALLBACK pContextMenuCallback,
  190. LONG lInsertionPointID,
  191. bool bIsReadOnly);
  192. HRESULT AddCertChainToPolicy (
  193. PCCERT_CONTEXT pCertContext);
  194. HRESULT AddCertPropPages (
  195. CCertificate* pCert,
  196. LPPROPERTYSHEETCALLBACK pCallBack,
  197. LPDATAOBJECT pDataObject,
  198. LONG_PTR lNotifyHandle);
  199. HRESULT AddCreateDomainEncryptedRecoveryAgentMenuItem(
  200. LPCONTEXTMENUCALLBACK pContextMenuCallback,
  201. LONG lInsertionPointID,
  202. bool bIsReadOnly);
  203. HRESULT AddCRLExportMenuItem(
  204. LPCONTEXTMENUCALLBACK pContextMenuCallback);
  205. HRESULT AddCTLExportMenuItem(
  206. LPCONTEXTMENUCALLBACK pContextMenuCallback);
  207. HRESULT AddCTLNewMenuItem (
  208. LPCONTEXTMENUCALLBACK pContextMenuCallback,
  209. LONG lInsertionPointID,
  210. bool bIsReadOnly);
  211. HRESULT AddDeletePolicyMenuItem (
  212. LPCONTEXTMENUCALLBACK pContextMenuCallback,
  213. LONG lInsertionPointID);
  214. HRESULT AddEFSSettingsPropPages (
  215. LPPROPERTYSHEETCALLBACK pCallback,
  216. bool fIsComputerType);
  217. HRESULT AddExportMenuItem(
  218. LPCONTEXTMENUCALLBACK pContextMenuCallback);
  219. HRESULT AddExportStoreMenuItem(
  220. LPCONTEXTMENUCALLBACK pContextMenuCallback);
  221. HRESULT AddGPEStorePropPages(
  222. LPPROPERTYSHEETCALLBACK pCallBack,
  223. CCertStore* pStore);
  224. HRESULT AddImportMenuItem(
  225. LPCONTEXTMENUCALLBACK pContextMenuCallback,
  226. bool bIsReadOnly,
  227. LONG lInsertionPointID);
  228. HRESULT AddInitPolicyMenuItem (
  229. LPCONTEXTMENUCALLBACK pContextMenuCallback,
  230. LONG lInsertionPointID);
  231. HRESULT AddOptionsMenuItem (
  232. LPCONTEXTMENUCALLBACK pContextMenuCallBack);
  233. HRESULT AddSaferEnforcementPropPages (
  234. LPPROPERTYSHEETCALLBACK pCallBack,
  235. bool bIsComputerType);
  236. HRESULT AddSaferDefinedFileTypesPropPages (
  237. LPPROPERTYSHEETCALLBACK pCallBack,
  238. bool bIsComputerType);
  239. HRESULT AddSaferEntryPropertyPage (
  240. LPPROPERTYSHEETCALLBACK pCallback,
  241. CCertMgrCookie* pCookie,
  242. LPDATAOBJECT pDataObject,
  243. LONG_PTR lNotifyHandle);
  244. HRESULT AddSaferNewEntryMenuItems (
  245. LPCONTEXTMENUCALLBACK pContextMenuCallback,
  246. LONG lInsertionPointID);
  247. HRESULT AddSaferTrustedPublisherPropPages (
  248. LPPROPERTYSHEETCALLBACK pCallBack,
  249. bool fIsMachineType);
  250. HRESULT AddScopeNode (
  251. CCertMgrCookie* pCookie,
  252. const CString& strServerName,
  253. HSCOPEITEM hParent);
  254. HRESULT AddSeparator (
  255. LPCONTEXTMENUCALLBACK pContextMenuCallback);
  256. HRESULT AddSnapMgrPropPages (
  257. LPPROPERTYSHEETCALLBACK pCallBack);
  258. HRESULT BuildWMIList (LPDATAOBJECT pDataObject, bool bIsComputer);
  259. HRESULT ChangeRootNodeName (
  260. const CString& newName);
  261. HRESULT CompleteEFSRecoveryAgent (
  262. CCertStoreGPE* pStore,
  263. PCCERT_CONTEXT pCertContext);
  264. bool ContainerExists (
  265. HSCOPEITEM hParent,
  266. CertificateManagerObjectType objectType);
  267. CCertMgrCookie* ConvertCookie (
  268. LPDATAOBJECT pDataObject);
  269. HRESULT DeleteChildren (
  270. HSCOPEITEM hParent);
  271. HRESULT DeleteCTLFromResultPane (
  272. CCTL* pCTL,
  273. LPDATAOBJECT pDataObject);
  274. HRESULT DeleteKeyFromRSABASE (
  275. PCCERT_CONTEXT pCertContext);
  276. HRESULT DeleteScopeItems (HSCOPEITEM hScopeItem = 0);
  277. void DisplayAccessDenied();
  278. void DisplaySystemError (
  279. DWORD dwErr);
  280. HRESULT ExpandScopeNodes (
  281. CCertMgrCookie* pParentCookie,
  282. HSCOPEITEM hParent,
  283. const CString& strServerName,
  284. DWORD dwLocation,
  285. const GUID& guidObjectType);
  286. virtual bool FoundInRSOPFilter (BSTR /*bstrKey*/) const
  287. {
  288. return false;
  289. }
  290. HRESULT GetResultData (LPRESULTDATA* ppResultData);
  291. bool IsSecurityConfigurationEditorNodetype (
  292. const GUID& refguid) const;
  293. HRESULT IsUserAdministrator (
  294. BOOL& bIsAdministrator);
  295. HRESULT OnACRSEdit (
  296. LPDATAOBJECT pDataObject);
  297. HRESULT OnAddDomainEncryptedDataRecoveryAgent(
  298. LPDATAOBJECT pDataObject);
  299. HRESULT OnCTLEdit (
  300. LPDATAOBJECT pDataObject);
  301. HRESULT OnDeleteEFSPolicy (
  302. LPDATAOBJECT pDataObject,
  303. bool bCommitChanges);
  304. HRESULT OnEnroll (
  305. LPDATAOBJECT pDataObject,
  306. bool bNewKey);
  307. HRESULT OnExport (
  308. LPDATAOBJECT pDataObject);
  309. HRESULT OnPulseAutoEnroll();
  310. HRESULT OnFind (
  311. LPDATAOBJECT pDataObject);
  312. HRESULT OnChangeComputer (
  313. LPDATAOBJECT pDataObject);
  314. HRESULT OnImport (
  315. LPDATAOBJECT pDataObject);
  316. HRESULT OnInitEFSPolicy (
  317. LPDATAOBJECT pDataObject);
  318. HRESULT OnNewACRS (
  319. LPDATAOBJECT pDataObject);
  320. HRESULT OnNewCTL (
  321. LPDATAOBJECT pDataObject);
  322. HRESULT OnCreateNewSaferPolicy (
  323. LPDATAOBJECT pDataObject);
  324. HRESULT OnNewSaferEntry (
  325. long nCommandID,
  326. LPDATAOBJECT pDataObject);
  327. HRESULT OnNotifyPreload(
  328. LPDATAOBJECT pDataObject,
  329. HSCOPEITEM hRootScopeItem);
  330. HRESULT OnOptions (LPDATAOBJECT pDataObject);
  331. virtual HRESULT OnPropertyChange (LPARAM param);
  332. HRESULT OnRenew (
  333. LPDATAOBJECT pDataObject,
  334. bool bNewKey);
  335. HRESULT OnSetAsRecoveryCert (
  336. LPDATAOBJECT pDataObject);
  337. HRESULT QueryMultiSelectDataObject(
  338. MMC_COOKIE cookie,
  339. DATA_OBJECT_TYPES type,
  340. LPDATAOBJECT* ppDataObject);
  341. HRESULT ReleaseResultCookie (
  342. CBaseCookieBlock * pResultCookie,
  343. CCookie& rootCookie,
  344. HCERTSTORE hStoreHandle,
  345. POSITION pos2);
  346. // The following members are used to support Command Line override.
  347. // This code was copied from ..\mmcfmgmt\compdata.h.
  348. enum // Bit fields for m_dwFlagsPersist
  349. {
  350. mskfAllowOverrideMachineName = 0x0001
  351. };
  352. DWORD m_dwFlagsPersist; // General-purpose flags to be persisted into .msc file
  353. CString m_strMachineNamePersist; // Machine name to persist into .msc file
  354. BOOL m_fAllowOverrideMachineName; // TRUE => Allow the machine name to be overriden by the command line
  355. CString m_strLinkedHelpFile; // Return in GetLinkedTopic ()
  356. void SetPersistentFlags(DWORD dwFlags)
  357. {
  358. m_dwFlagsPersist = dwFlags;
  359. m_fAllowOverrideMachineName = !!(m_dwFlagsPersist & mskfAllowOverrideMachineName);
  360. }
  361. DWORD GetPersistentFlags()
  362. {
  363. if (m_fAllowOverrideMachineName)
  364. m_dwFlagsPersist |= mskfAllowOverrideMachineName;
  365. else
  366. m_dwFlagsPersist &= ~mskfAllowOverrideMachineName;
  367. return m_dwFlagsPersist;
  368. }
  369. LPHEADERCTRL m_pHeader;
  370. private:
  371. DWORD m_dwRSOPFlagsComputer;
  372. DWORD m_dwRSOPFlagsUser;
  373. bool m_bIsRSOP;
  374. bool m_bMachineIsStandAlone;
  375. bool m_fInvalidComputer;
  376. CCertStore* m_pFileBasedStore;
  377. CCertStore* m_pGPERootStore;
  378. CCertStore* m_pGPETrustStore;
  379. CCertStore* m_pGPEACRSUserStore;
  380. CCertStore* m_pGPEACRSComputerStore;
  381. PCRYPTUI_MMCCALLBACK_STRUCT m_pCryptUIMMCCallbackStruct;
  382. bool m_bMultipleObjectsSelected;
  383. HRESULT AddOpenMenuItem(LPCONTEXTMENUCALLBACK pContextMenuCallback, LONG lInsertionPointID);
  384. HRESULT AddCTLOpenMenuItem(LPCONTEXTMENUCALLBACK pContextMenuCallback, LONG lInsertionPointID);
  385. HRESULT AddCRLOpenMenuItem(LPCONTEXTMENUCALLBACK pContextMenuCallback, LONG lInsertionPointID);
  386. HRESULT AddFindMenuItem (LPCONTEXTMENUCALLBACK pContextMenuCallback, LONG lInsertionPointID);
  387. HRESULT AddPulseAutoEnrollMenuItem (LPCONTEXTMENUCALLBACK pContextMenuCallback, LONG lInsertionPointID);
  388. HRESULT AddChangeComputerMenuItem (LPCONTEXTMENUCALLBACK pContextMenuCallback, LONG lInsertionPointID);
  389. HRESULT AddEnrollMenuItem (LPCONTEXTMENUCALLBACK pContextMenuCallback, bool bIsReadOnly);
  390. HRESULT AddCertificateTaskMenuItems (LPCONTEXTMENUCALLBACK pContextMenuCallback,
  391. const bool bIsMyStore, bool bIsReadOnly, CCertificate* pCert);
  392. HRESULT AddCTLTaskMenuItems (LPCONTEXTMENUCALLBACK pContextMenuCallback, bool bIsReadOnly);
  393. HRESULT AddACRTaskMenuItems (LPCONTEXTMENUCALLBACK pContextMenuCallback, bool bIsReadOnly);
  394. HRESULT AddContainersToScopePane (
  395. HSCOPEITEM hParent,
  396. CCertMgrCookie& parentCookie,
  397. bool bDeleteAndExpand);
  398. HRESULT AddPhysicalStoresToScopePane (HSCOPEITEM hParent, CCertMgrCookie& parentCookie, const SPECIAL_STORE_TYPE storeType);
  399. HRESULT AddLogicalStoresToScopePane (HSCOPEITEM hParent, CCertMgrCookie& parentCookie);
  400. HRESULT AddSaferLevelPropPage (
  401. LPPROPERTYSHEETCALLBACK pCallback,
  402. CSaferLevel* pSaferLevel,
  403. LONG_PTR lNotifyHandle,
  404. LPDATAOBJECT pDataObject);
  405. HRESULT AddSaferLevelSetAsDefaultMenuItem (LPCONTEXTMENUCALLBACK pContextMenuCallback, LONG lInsertionPointID);
  406. HRESULT AddUsagesToScopePane (HSCOPEITEM hParent, CCertMgrCookie& parentCookie);
  407. HRESULT GetValuesAndInsertInRSOPObjectList (
  408. IWbemClassObject* pObject,
  409. CRSOPObjectArray& rRsopObjectArray,
  410. bool bIsComputer);
  411. HRESULT GetGPOFriendlyName (PWSTR lpGPOID, PWSTR *pGPOName, bool bIsComputer);
  412. HRESULT OnSetSaferLevelDefault (LPDATAOBJECT pDataObject);
  413. HRESULT SaferEnumerateLevels (bool bIsMachine);
  414. DWORD m_dwSCEMode;
  415. CString m_szManagedServiceDisplayName;
  416. BOOL m_bIsUserAdministrator;
  417. CString m_szManagedServicePersist;
  418. CString m_szFileName;
  419. BOOL m_bShowPhysicalStoresPersist;
  420. BOOL m_bShowArchivedCertsPersist;
  421. CString m_szManagedComputer;
  422. CString m_szThisComputer;
  423. CString m_szLoggedInUser;
  424. CString m_szManagedUser;
  425. DWORD m_dwLocationPersist;
  426. HSCOPEITEM m_hRootScopeItem;
  427. CCertMgrCookie* m_pRootCookie;
  428. int m_activeViewPersist;
  429. LPRESULTDATA m_pResultData;
  430. IRSOPInformation* m_pRSOPInformationComputer;
  431. IRSOPInformation* m_pRSOPInformationUser;
  432. IWbemServices * m_pIWbemServicesComputer;
  433. IWbemServices * m_pIWbemServicesUser;
  434. BSTR m_pbstrLanguage;
  435. BSTR m_pbstrQuery;
  436. BSTR m_pbstrValueName;
  437. BSTR m_pbstrRegistryKey;
  438. BSTR m_pbstrValue;
  439. BSTR m_pbstrPrecedence;
  440. BSTR m_pbstrGPOid;
  441. }; // CCertMgrComponentData
  442. /////////////////////////////////////////////////////////////////////
  443. class CCertMgrSnapin: public CCertMgrComponentData,
  444. public CComCoClass<CCertMgrSnapin, &CLSID_CertificateManager>
  445. {
  446. public:
  447. CCertMgrSnapin() : CCertMgrComponentData ()
  448. {
  449. SetHtmlHelpFileName (CM_HELP_FILE);
  450. m_strLinkedHelpFile = CM_LINKED_HELP_FILE;
  451. };
  452. virtual ~CCertMgrSnapin() {};
  453. // Use DECLARE_NOT_AGGREGATABLE(CCertMgrSnapin) if you don't want your object
  454. // to support aggregation
  455. DECLARE_AGGREGATABLE(CCertMgrSnapin)
  456. DECLARE_REGISTRY(CCertMgrSnapin, _T("CERTMGR.CertMgrObject.1"), _T("CERTMGR.CertMgrObject.1"), IDS_CERTMGR_DESC, THREADFLAGS_BOTH)
  457. virtual BOOL IsServiceSnapin() { return FALSE; }
  458. // IPersistStream or IPersistStorage
  459. STDMETHOD(GetClassID)(CLSID __RPC_FAR *pClassID)
  460. {
  461. *pClassID = CLSID_CertificateManager;
  462. return S_OK;
  463. }
  464. };
  465. class CCertMgrPKPolExtension: public CCertMgrComponentData,
  466. public CComCoClass<CCertMgrPKPolExtension, &CLSID_CertificateManagerPKPOLExt>
  467. {
  468. public:
  469. CCertMgrPKPolExtension() : CCertMgrComponentData ()
  470. {
  471. SetHtmlHelpFileName (PKP_HELP_FILE);
  472. m_strLinkedHelpFile = PKP_LINKED_HELP_FILE;
  473. };
  474. virtual ~CCertMgrPKPolExtension() {};
  475. // Use DECLARE_NOT_AGGREGATABLE(CCertMgrPKPolExtension) if you don't want your object
  476. // to support aggregation
  477. DECLARE_AGGREGATABLE(CCertMgrPKPolExtension)
  478. DECLARE_REGISTRY(CCertMgrPKPolExtension, _T("CERTMGR.CertMgrPKPolExtObject.1"), _T("CERTMGR.CertMgrPKPolExtObject.1"), IDS_CERTMGR_DESC, THREADFLAGS_BOTH)
  479. virtual BOOL IsServiceSnapin() { return FALSE; }
  480. virtual BOOL IsExtensionSnapin() { return TRUE; }
  481. // IPersistStream or IPersistStorage
  482. STDMETHOD(GetClassID)(CLSID __RPC_FAR *pClassID)
  483. {
  484. *pClassID = CLSID_CertificateManagerPKPOLExt;
  485. return S_OK;
  486. }
  487. virtual bool FoundInRSOPFilter (BSTR bstrKey) const;
  488. };
  489. class CSaferWindowsExtension: public CCertMgrComponentData,
  490. public CComCoClass<CSaferWindowsExtension, &CLSID_SaferWindowsExtension>
  491. {
  492. public:
  493. CSaferWindowsExtension();
  494. virtual ~CSaferWindowsExtension() {};
  495. // Use DECLARE_NOT_AGGREGATABLE(CSaferWindowsExtension) if you don't want your object
  496. // to support aggregation
  497. DECLARE_AGGREGATABLE(CSaferWindowsExtension)
  498. DECLARE_REGISTRY(CSaferWindowsExtension, _T("CERTMGR.CertMgrSaferWindowsExtensionObject.1"),
  499. _T("CERTMGR.CertMgrSaferWindowsExtensionObject.1"), IDS_CERTMGR_SAFER_WINDOWS_DESC, THREADFLAGS_BOTH)
  500. virtual BOOL IsServiceSnapin() { return FALSE; }
  501. virtual BOOL IsExtensionSnapin() { return TRUE; }
  502. // IPersistStream or IPersistStorage
  503. STDMETHOD(GetClassID)(CLSID __RPC_FAR *pClassID)
  504. {
  505. *pClassID = CLSID_SaferWindowsExtension;
  506. return S_OK;
  507. }
  508. virtual bool FoundInRSOPFilter (BSTR bstrKey) const;
  509. };
  510. #endif // ~__COMPDATA_H_INCLUDED__