//+--------------------------------------------------------------------------- ///////////////////////////////////////////////////////////////////////////////// // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1997-2001. // // File: ComponentDataMenus.cpp // // Contents: Implementation of menu stuff CCertMgrComponentData // //---------------------------------------------------------------------------- #include "stdafx.h" USE_HANDLE_MACROS ("CERTMGR (compdata.cpp)") #include #include "compdata.h" #include "dataobj.h" #include "cookie.h" #include "Certifct.h" #ifdef _DEBUG #ifndef ALPHA #define new DEBUG_NEW #endif #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif /////////////////////////////////////////////////////////////////////////////// // IExtendContextMenu implementation // STDMETHODIMP CCertMgrComponentData::AddMenuItems (LPDATAOBJECT pDataObject, LPCONTEXTMENUCALLBACK pContextMenuCallback, long *pInsertionAllowed) { HRESULT hr = S_OK; // Don't add any menu items if the computer is known not to be valid. if ( !m_fInvalidComputer ) { _TRACE (1, L"Entering CCertMgrComponentData::AddMenuItems\n"); BOOL bIsFileView = !m_szFileName.IsEmpty (); CCertMgrCookie* pCookie = 0; LPDATAOBJECT pMSDO = ExtractMultiSelect (pDataObject); m_bMultipleObjectsSelected = false; if ( pMSDO ) { m_bMultipleObjectsSelected = true; CCertMgrDataObject* pDO = reinterpret_cast (pMSDO); ASSERT (pDO); if ( pDO ) { // Get first cookie - all items should be the same? // Is this a valid assumption? // TODO: Verify pDO->Reset(); if ( pDO->Next(1, reinterpret_cast(&pCookie), NULL) == S_FALSE ) return S_FALSE; } else return E_UNEXPECTED; } else pCookie = ConvertCookie (pDataObject); ASSERT (pCookie); if ( !pCookie ) return E_UNEXPECTED; CertificateManagerObjectType objType = pCookie->m_objecttype; // Don't add menu items if this is a serialized file if ( *pInsertionAllowed & CCM_INSERTIONALLOWED_TOP ) { switch (objType) { case CERTMGR_CERTIFICATE: if ( !m_bMultipleObjectsSelected ) { CCertificate* pCert = reinterpret_cast (pCookie); ASSERT (pCert); if ( pCert ) { hr = AddOpenMenuItem (pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TOP); } else hr = E_FAIL; } break; case CERTMGR_CRL: if ( !m_bMultipleObjectsSelected ) hr = AddCRLOpenMenuItem (pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TOP); break; case CERTMGR_CTL: if ( !m_bMultipleObjectsSelected ) hr = AddCTLOpenMenuItem (pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TOP); break; case CERTMGR_SNAPIN: if ( CERT_SYSTEM_STORE_CURRENT_USER != m_dwLocationPersist ) { hr = AddChangeComputerMenuItem (pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TOP); } // fall through case CERTMGR_PHYS_STORE: case CERTMGR_USAGE: case CERTMGR_LOG_STORE: ASSERT (!m_bMultipleObjectsSelected); hr = AddFindMenuItem (pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TOP); break; case CERTMGR_LOG_STORE_RSOP: break; case CERTMGR_PKP_AUTOENROLLMENT_COMPUTER_SETTINGS: case CERTMGR_PKP_AUTOENROLLMENT_USER_SETTINGS: break; case CERTMGR_LOG_STORE_GPE: ASSERT (!m_bMultipleObjectsSelected); { CCertStoreGPE* pStore = reinterpret_cast (pCookie); ASSERT (pStore); if ( pStore ) { switch (pStore->GetStoreType ()) { case TRUST_STORE: case ROOT_STORE: if ( pStore->GetStoreHandle () ) { hr = AddImportMenuItem (pContextMenuCallback, pStore->IsReadOnly (), CCM_INSERTIONPOINTID_PRIMARY_TOP); pStore->Close (); } break; case EFS_STORE: if ( pStore->GetStoreHandle () ) { hr = AddAddDomainEncryptedRecoveryAgentMenuItem ( pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TOP, pStore->IsReadOnly () ); if ( !m_bMachineIsStandAlone ) { hr = AddCreateDomainEncryptedRecoveryAgentMenuItem ( pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TOP, pStore->IsReadOnly () ); } pStore->Close (); } else if ( pStore->IsNullEFSPolicy () ) { hr = AddAddDomainEncryptedRecoveryAgentMenuItem ( pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TOP, pStore->IsReadOnly () ); if ( !m_bMachineIsStandAlone ) { hr = AddCreateDomainEncryptedRecoveryAgentMenuItem ( pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TOP, pStore->IsReadOnly () ); } pStore->Close (); } break; default: break; } } } break; case CERTMGR_CRL_CONTAINER: case CERTMGR_CTL_CONTAINER: case CERTMGR_CERT_CONTAINER: ASSERT (!m_bMultipleObjectsSelected); break; case CERTMGR_SAFER_COMPUTER_LEVEL: case CERTMGR_SAFER_USER_LEVEL: if ( m_pGPEInformation ) { CSaferLevel* pLevel = reinterpret_cast (pCookie); ASSERT (pLevel); if ( pLevel ) { // RAID#265590 Safer Windows: "Set as default" menu // item is enabled in the context menu of a security // level when the security level is already the default. if ( ( SAFER_LEVELID_DISALLOWED == pLevel->GetLevel () || SAFER_LEVELID_FULLYTRUSTED == pLevel->GetLevel () ) && !pLevel->IsDefault () ) { hr = AddSaferLevelSetAsDefaultMenuItem (pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TOP); } } } break; case CERTMGR_SAFER_COMPUTER_ENTRIES: case CERTMGR_SAFER_USER_ENTRIES: if ( m_pGPEInformation ) hr = AddSaferNewEntryMenuItems (pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TOP); break; case CERTMGR_SAFER_COMPUTER_ROOT: case CERTMGR_SAFER_USER_ROOT: { CSaferRootCookie* pSaferRootCookie = dynamic_cast (pCookie); if ( pSaferRootCookie ) { if ( !pSaferRootCookie->m_bCreateSaferNodes && !m_bIsRSOP) hr = AddSaferCreateNewPolicyMenuItems (pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TOP); } } break; default: break; } } if ( *pInsertionAllowed & CCM_INSERTIONALLOWED_NEW ) { if ( CERTMGR_LOG_STORE_GPE == objType ) { ASSERT (!m_bMultipleObjectsSelected); CCertStoreGPE* pStore = reinterpret_cast (pCookie); ASSERT (pStore); if ( pStore && pStore->GetStoreHandle () ) { switch (pStore->GetStoreType ()) { case TRUST_STORE: hr = AddCTLNewMenuItem (pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_NEW, pStore->IsReadOnly ()); break; case ACRS_STORE: hr = AddACRSNewMenuItem (pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_NEW, pStore->IsReadOnly ()); break; case EFS_STORE: hr = AddAddDomainEncryptedRecoveryAgentMenuItem ( pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_NEW, pStore->IsReadOnly ()); break; default: break; } pStore->Close (); } } } if ( *pInsertionAllowed & CCM_INSERTIONALLOWED_TASK ) { switch (objType) { case CERTMGR_CERTIFICATE: if ( !m_bIsRSOP ) { CCertificate* pCert = reinterpret_cast (pCookie); ASSERT (pCert); if ( pCert && pCert->GetCertStore () ) { hr = AddCertificateTaskMenuItems ( pContextMenuCallback, (pCert->GetStoreType () == MY_STORE), pCert->GetCertStore ()->IsReadOnly (), pCert); } } break; case CERTMGR_CRL: if ( !m_bMultipleObjectsSelected ) { AddCRLOpenMenuItem (pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TASK); if ( !m_bIsRSOP ) AddCRLExportMenuItem (pContextMenuCallback); } break; case CERTMGR_AUTO_CERT_REQUEST: if ( !m_bMultipleObjectsSelected && !m_bIsRSOP ) { CAutoCertRequest* pAutoCert = reinterpret_cast (pCookie); ASSERT (pAutoCert); if ( pAutoCert ) { hr = AddACRTaskMenuItems (pContextMenuCallback, pAutoCert->GetCertStore ().IsReadOnly ()); } } break; case CERTMGR_CTL: if ( !m_bIsRSOP ) { CCTL* pCTL = reinterpret_cast (pCookie); ASSERT (pCTL); if ( pCTL ) { hr = AddCTLTaskMenuItems (pContextMenuCallback, pCTL->GetCertStore ().IsReadOnly ()); } } break; case CERTMGR_SNAPIN: ASSERT (!m_bMultipleObjectsSelected); hr = AddFindMenuItem (pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TASK); if ( SUCCEEDED (hr) && CERT_SYSTEM_STORE_CURRENT_USER != m_dwLocationPersist ) { hr = AddChangeComputerMenuItem (pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TASK); } // must be targetting current user OR LOCAL machine, must be joined to domain if( SUCCEEDED (hr) && !m_bMachineIsStandAlone && ((CERT_SYSTEM_STORE_CURRENT_USER == m_dwLocationPersist) || (CERT_SYSTEM_STORE_LOCAL_MACHINE == m_dwLocationPersist)) && IsLocalComputername (m_strMachineNamePersist)) { hr = AddPulseAutoEnrollMenuItem(pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TASK); } break; case CERTMGR_USAGE: ASSERT (!m_bMultipleObjectsSelected); hr = AddFindMenuItem (pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TASK); if ( !bIsFileView ) { // Bug 254166 Certificate snapin: options which permit remote machine enrollment/renewal must be removed if ( IsLocalComputername (m_strMachineNamePersist) && !m_bIsRSOP ) { hr = AddSeparator (pContextMenuCallback); // NOTE: New certs will be added only to MY store. hr = AddEnrollMenuItem (pContextMenuCallback, FALSE); if ( SUCCEEDED (hr) ) { hr = AddImportMenuItem (pContextMenuCallback, false, CCM_INSERTIONPOINTID_PRIMARY_TASK); } } } break; case CERTMGR_PHYS_STORE: ASSERT (!m_bMultipleObjectsSelected); hr = AddFindMenuItem (pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TASK); if ( !bIsFileView && !m_bIsRSOP) { hr = AddSeparator (pContextMenuCallback); { CCertStore* pStore = reinterpret_cast (pCookie); ASSERT (pStore); if ( pStore && pStore->GetStoreHandle () ) { // Bug 254166 Certificate snapin: options which permit remote machine enrollment/renewal must be removed if ( pStore->GetStoreType () == MY_STORE && IsLocalComputername (m_szManagedComputer) ) { hr = AddEnrollMenuItem (pContextMenuCallback, pStore->IsReadOnly ()); } if ( SUCCEEDED (hr) ) hr = AddImportMenuItem (pContextMenuCallback, pStore->IsReadOnly (), CCM_INSERTIONPOINTID_PRIMARY_TASK); pStore->Close (); } } hr = AddExportStoreMenuItem (pContextMenuCallback); } break; case CERTMGR_LOG_STORE: ASSERT (!m_bMultipleObjectsSelected); hr = AddFindMenuItem (pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TASK); if ( !bIsFileView && !m_bIsRSOP ) { hr = AddSeparator (pContextMenuCallback); { CCertStore* pStore = reinterpret_cast (pCookie); ASSERT (pStore); if ( pStore && pStore->GetStoreHandle () ) { // Bug 254166 Certificate snapin: options which permit remote machine enrollment/renewal must be removed if ( pStore->GetStoreType () == MY_STORE && IsLocalComputername (m_szManagedComputer) ) { hr = AddEnrollMenuItem (pContextMenuCallback, pStore->IsReadOnly ()); } hr = AddImportMenuItem (pContextMenuCallback, pStore->IsReadOnly (), CCM_INSERTIONPOINTID_PRIMARY_TASK); pStore->Close (); } } } break; case CERTMGR_LOG_STORE_RSOP: break; case CERTMGR_PKP_AUTOENROLLMENT_COMPUTER_SETTINGS: case CERTMGR_PKP_AUTOENROLLMENT_USER_SETTINGS: break; case CERTMGR_LOG_STORE_GPE: ASSERT (!m_bMultipleObjectsSelected); { CCertStoreGPE* pStore = reinterpret_cast (pCookie); ASSERT (pStore); if ( pStore ) { switch (pStore->GetStoreType ()) { case TRUST_STORE: case ROOT_STORE: if ( pStore->GetStoreHandle () && !m_bIsRSOP ) { hr = AddImportMenuItem (pContextMenuCallback, pStore->IsReadOnly (), CCM_INSERTIONPOINTID_PRIMARY_TASK); pStore->Close (); } break; case EFS_STORE: if ( pStore->GetStoreHandle () ) { hr = AddAddDomainEncryptedRecoveryAgentMenuItem ( pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TASK, pStore->IsReadOnly () ); if ( !m_bMachineIsStandAlone ) { hr = AddCreateDomainEncryptedRecoveryAgentMenuItem ( pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TASK, pStore->IsReadOnly () ); } hr = AddDeletePolicyMenuItem (pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TASK); pStore->Close (); } else if ( pStore->IsNullEFSPolicy () ) { hr = AddAddDomainEncryptedRecoveryAgentMenuItem ( pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TASK, pStore->IsReadOnly () ); if ( !m_bMachineIsStandAlone ) { hr = AddCreateDomainEncryptedRecoveryAgentMenuItem ( pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TASK, pStore->IsReadOnly () ); } hr = AddInitPolicyMenuItem (pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TASK); pStore->Close (); } break; default: break; } } } break; case CERTMGR_CRL_CONTAINER: ASSERT (!m_bMultipleObjectsSelected); break; case CERTMGR_CTL_CONTAINER: ASSERT (!m_bMultipleObjectsSelected); if ( !bIsFileView && !m_bIsRSOP ) { CContainerCookie* pCont = reinterpret_cast (pCookie); ASSERT (pCont); if ( pCont ) { hr = AddImportMenuItem (pContextMenuCallback, pCont->GetCertStore ().IsReadOnly (), CCM_INSERTIONPOINTID_PRIMARY_TASK); } } break; case CERTMGR_CERT_CONTAINER: ASSERT (!m_bMultipleObjectsSelected); if ( !bIsFileView && !m_bIsRSOP ) { CContainerCookie* pContainer = reinterpret_cast (pCookie); ASSERT (pContainer); if ( pContainer ) { // Bug 254166 Certificate snapin: options which permit remote machine enrollment/renewal must be removed if ( pContainer->GetStoreType () == MY_STORE && IsLocalComputername (m_szManagedComputer) ) { hr = AddEnrollMenuItem (pContextMenuCallback, pContainer->GetCertStore ().IsReadOnly ()); } hr = AddImportMenuItem (pContextMenuCallback, pContainer->GetCertStore ().IsReadOnly (), CCM_INSERTIONPOINTID_PRIMARY_TASK); } } break; case CERTMGR_SAFER_COMPUTER_LEVEL: case CERTMGR_SAFER_USER_LEVEL: if ( m_pGPEInformation ) { CSaferLevel* pLevel = reinterpret_cast (pCookie); ASSERT (pLevel); if ( pLevel ) { // RAID#265590 Safer Windows: "Set as default" menu // item is enabled in the context menu of a security // level when the security level is already the default. if ( (SAFER_LEVELID_DISALLOWED == pLevel->GetLevel () || SAFER_LEVELID_FULLYTRUSTED == pLevel->GetLevel ()) && !pLevel->IsDefault () ) { hr = AddSaferLevelSetAsDefaultMenuItem (pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TASK); } } } break; case CERTMGR_SAFER_COMPUTER_ENTRIES: case CERTMGR_SAFER_USER_ENTRIES: if ( m_pGPEInformation ) hr = AddSaferNewEntryMenuItems (pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TASK); break; case CERTMGR_SAFER_COMPUTER_ROOT: case CERTMGR_SAFER_USER_ROOT: { CSaferRootCookie* pSaferRootCookie = dynamic_cast (pCookie); if ( pSaferRootCookie ) { if ( !pSaferRootCookie->m_bCreateSaferNodes && !m_bIsRSOP) hr = AddSaferCreateNewPolicyMenuItems (pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TASK); } } break; default: break; } } if ( *pInsertionAllowed & CCM_INSERTIONALLOWED_VIEW ) { switch (objType) { case CERTMGR_CERTIFICATE: case CERTMGR_CRL: case CERTMGR_CTL: case CERTMGR_AUTO_CERT_REQUEST: break; case CERTMGR_SNAPIN: case CERTMGR_PHYS_STORE: case CERTMGR_USAGE: case CERTMGR_LOG_STORE: ASSERT (!m_bMultipleObjectsSelected); hr = AddOptionsMenuItem (pContextMenuCallback); break; default: break; } } _TRACE (-1, L"Leaving CCertMgrComponentData::AddMenuItems: 0x%x\n", hr); } return hr; } HRESULT CCertMgrComponentData::AddACRSNewMenuItem (LPCONTEXTMENUCALLBACK pContextMenuCallback, LONG lInsertionPointID, bool bIsReadOnly) { _TRACE (1, L"Entering CCertMgrComponentData::AddACRSNewMenuItem\n"); AFX_MANAGE_STATE (AfxGetStaticModuleState ()); ASSERT (pContextMenuCallback); HRESULT hr = S_OK; CONTEXTMENUITEM menuItem; CString szMenu; CString szHint; // unchanging settings ::ZeroMemory (&menuItem, sizeof (menuItem)); menuItem.lInsertionPointID = lInsertionPointID; menuItem.fFlags = 0; VERIFY (szMenu.LoadString (IDS_NEW_AUTO_CERT_REQUEST)); menuItem.strName = (PWSTR) (PCWSTR) szMenu; VERIFY (szHint.LoadString (IDS_NEW_AUTO_CERT_REQUEST_HINT)); menuItem.strStatusBarText = (PWSTR) (PCWSTR) szHint; menuItem.lCommandID = IDM_NEW_ACRS; if ( bIsReadOnly ) menuItem.fFlags = MF_GRAYED; hr = pContextMenuCallback->AddItem (&menuItem); ASSERT (SUCCEEDED (hr)); _TRACE (-1, L"Leaving CCertMgrComponentData::AddACRSNewMenuItem: 0x%x\n", hr); return hr; } HRESULT CCertMgrComponentData::AddCertificateTaskMenuItems ( LPCONTEXTMENUCALLBACK pContextMenuCallback, const bool bIsMyStore, bool bIsReadOnly, CCertificate* /*pCert*/) { _TRACE (1, L"Entering CCertMgrComponentData::AddCertificateTaskMenuItems\n"); AFX_MANAGE_STATE (AfxGetStaticModuleState ()); ASSERT (pContextMenuCallback); HRESULT hr = S_OK; CONTEXTMENUITEM menuItem; CString szMenu; CString szHint; // unchanging settings ::ZeroMemory (&menuItem, sizeof (menuItem)); menuItem.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_TASK; menuItem.fFlags = 0; menuItem.fSpecialFlags = 0; if ( !m_bMultipleObjectsSelected ) { AddOpenMenuItem (pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TASK); AddSeparator (pContextMenuCallback); if ( m_szFileName.IsEmpty () ) { // Bug 254166 Certificate snapin: options which permit remote machine enrollment/renewal must be removed if ( bIsMyStore && CERT_SYSTEM_STORE_SERVICES != m_dwLocationPersist && IsLocalComputername (m_szManagedComputer) ) { VERIFY (szMenu.LoadString (IDS_ENROLL_CERT_WITH_NEW_KEY)); menuItem.strName = (PWSTR) (PCWSTR) szMenu; VERIFY (szHint.LoadString (IDS_ENROLL_CERT_WITH_NEW_KEY_HINT)); menuItem.strStatusBarText = (PWSTR) (PCWSTR) szHint; menuItem.lCommandID = IDM_ENROLL_NEW_CERT_NEW_KEY; if ( bIsReadOnly ) menuItem.fFlags = MF_GRAYED; hr = pContextMenuCallback->AddItem (&menuItem); ASSERT (SUCCEEDED (hr)); VERIFY (szMenu.LoadString (IDS_ENROLL_CERT_WITH_SAME_KEY)); menuItem.strName = (PWSTR) (PCWSTR) szMenu; VERIFY (szHint.LoadString (IDS_ENROLL_CERT_WITH_SAME_KEY_HINT)); menuItem.strStatusBarText = (PWSTR) (PCWSTR) szHint; menuItem.lCommandID = IDM_ENROLL_NEW_CERT_SAME_KEY; if ( bIsReadOnly ) menuItem.fFlags = MF_GRAYED; hr = pContextMenuCallback->AddItem (&menuItem); ASSERT (SUCCEEDED (hr)); VERIFY (szMenu.LoadString (IDS_RENEW_NEW_KEY)); menuItem.strName = (PWSTR) (PCWSTR) szMenu; VERIFY (szHint.LoadString (IDS_RENEW_NEW_KEY_HINT)); menuItem.strStatusBarText = (PWSTR) (PCWSTR) szHint; menuItem.lCommandID = IDM_TASK_RENEW_NEW_KEY; if ( bIsReadOnly ) menuItem.fFlags = MF_GRAYED; hr = pContextMenuCallback->AddItem (&menuItem); ASSERT (SUCCEEDED (hr)); VERIFY (szMenu.LoadString (IDS_RENEW_SAME_KEY)); menuItem.strName = (PWSTR) (PCWSTR) szMenu; VERIFY (szHint.LoadString (IDS_RENEW_SAME_KEY_HINT)); menuItem.strStatusBarText = (PWSTR) (PCWSTR) szHint; menuItem.lCommandID = IDM_TASK_RENEW_SAME_KEY; if ( bIsReadOnly ) menuItem.fFlags = MF_GRAYED; hr = pContextMenuCallback->AddItem (&menuItem); ASSERT (SUCCEEDED (hr)); } } } hr = AddExportMenuItem (pContextMenuCallback); _TRACE (-1, L"Leaving CCertMgrComponentData::AddCertificateTaskMenuItems: 0x%x\n", hr); return hr; } HRESULT CCertMgrComponentData::AddCTLTaskMenuItems (LPCONTEXTMENUCALLBACK pContextMenuCallback, bool bIsReadOnly) { _TRACE (1, L"Entering CCertMgrComponentData::AddCTLTaskMenuItems\n"); AFX_MANAGE_STATE (AfxGetStaticModuleState ()); ASSERT (pContextMenuCallback); HRESULT hr = S_OK; CONTEXTMENUITEM menuItem; CString szMenu; CString szHint; // unchanging settings ::ZeroMemory (&menuItem, sizeof (menuItem)); menuItem.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_TASK; menuItem.fFlags = 0; menuItem.fSpecialFlags = 0; if ( !m_bMultipleObjectsSelected ) AddCTLOpenMenuItem (pContextMenuCallback, CCM_INSERTIONPOINTID_PRIMARY_TASK); hr = AddCTLExportMenuItem (pContextMenuCallback); if ( !m_bMultipleObjectsSelected ) { VERIFY (szMenu.LoadString (IDS_EDIT)); menuItem.strName = (PWSTR) (PCWSTR) szMenu; VERIFY (szHint.LoadString (IDS_CTL_EDIT_HINT)); menuItem.strStatusBarText = (PWSTR) (PCWSTR) szHint; menuItem.lCommandID = IDM_CTL_EDIT; if ( bIsReadOnly ) menuItem.fFlags = MF_GRAYED; hr = pContextMenuCallback->AddItem (&menuItem); ASSERT (SUCCEEDED (hr)); } _TRACE (-1, L"Leaving CCertMgrComponentData::AddCTLTaskMenuItems: 0x%x\n", hr); return hr; } HRESULT CCertMgrComponentData::AddACRTaskMenuItems (LPCONTEXTMENUCALLBACK pContextMenuCallback, bool bIsReadOnly) { _TRACE (1, L"Entering CCertMgrComponentData::AddACRTaskMenuItems\n"); AFX_MANAGE_STATE (AfxGetStaticModuleState ()); ASSERT (pContextMenuCallback); HRESULT hr = S_OK; CONTEXTMENUITEM menuItem; CString szMenu; CString szHint; // unchanging settings ::ZeroMemory (&menuItem, sizeof (menuItem)); menuItem.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_TASK; menuItem.fFlags = 0; menuItem.fSpecialFlags = 0; VERIFY (szMenu.LoadString (IDS_EDIT)); menuItem.strName = (PWSTR) (PCWSTR) szMenu; VERIFY (szHint.LoadString (IDS_ACR_EDIT_HINT)); menuItem.strStatusBarText = (PWSTR) (PCWSTR) szHint; menuItem.lCommandID = IDM_EDIT_ACRS; if ( bIsReadOnly ) menuItem.fFlags = MF_GRAYED; hr = pContextMenuCallback->AddItem (&menuItem); ASSERT (SUCCEEDED (hr)); _TRACE (-1, L"Leaving CCertMgrComponentData::AddACRTaskMenuItems: 0x%x\n", hr); return hr; } HRESULT CCertMgrComponentData::AddEnrollMenuItem (LPCONTEXTMENUCALLBACK pContextMenuCallback, bool bIsReadOnly) { _TRACE (1, L"Entering CCertMgrComponentData::AddEnrollMenuItem\n"); AFX_MANAGE_STATE (AfxGetStaticModuleState ()); ASSERT (pContextMenuCallback); HRESULT hr = S_OK; if ( CERT_SYSTEM_STORE_SERVICES != m_dwLocationPersist ) { CONTEXTMENUITEM menuItem; CString szMenu; CString szHint; ::ZeroMemory (&menuItem, sizeof (menuItem)); menuItem.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_TASK; menuItem.fFlags = 0; menuItem.fSpecialFlags = 0; VERIFY (szMenu.LoadString (IDS_ENROLL_NEW_CERT)); menuItem.strName = (PWSTR) (PCWSTR) szMenu; VERIFY (szHint.LoadString (IDS_ENROLL_NEW_CERT_HINT)); menuItem.strStatusBarText = (PWSTR) (PCWSTR) szHint; menuItem.lCommandID = IDM_ENROLL_NEW_CERT; if ( bIsReadOnly ) menuItem.fFlags = MF_GRAYED; hr = pContextMenuCallback->AddItem (&menuItem); ASSERT (SUCCEEDED (hr)); } _TRACE (-1, L"Leaving CCertMgrComponentData::AddEnrollMenuItem: 0x%x\n", hr); return hr; } HRESULT CCertMgrComponentData::AddFindMenuItem (LPCONTEXTMENUCALLBACK pContextMenuCallback, LONG lInsertionPointID) { _TRACE (1, L"Entering CCertMgrComponentData::AddFindMenuItem\n"); AFX_MANAGE_STATE (AfxGetStaticModuleState ()); ASSERT (pContextMenuCallback); HRESULT hr = S_OK; CONTEXTMENUITEM menuItem; CString szMenu; CString szHint; // unchanging settings ::ZeroMemory (&menuItem, sizeof (menuItem)); menuItem.lInsertionPointID = lInsertionPointID; menuItem.fFlags = 0; menuItem.fSpecialFlags = 0; VERIFY (szMenu.LoadString (IDS_FIND)); menuItem.strName = (PWSTR) (PCWSTR) szMenu; VERIFY (szHint.LoadString (IDS_FIND_HINT)); menuItem.strStatusBarText = (PWSTR) (PCWSTR) szHint; if ( CCM_INSERTIONPOINTID_PRIMARY_TOP == lInsertionPointID ) menuItem.lCommandID = IDM_TOP_FIND; else menuItem.lCommandID = IDM_TASK_FIND; hr = pContextMenuCallback->AddItem (&menuItem); ASSERT (SUCCEEDED (hr)); _TRACE (-1, L"Leaving CCertMgrComponentData::AddFindMenuItem: 0x%x\n", hr); return hr; } HRESULT CCertMgrComponentData::AddPulseAutoEnrollMenuItem(LPCONTEXTMENUCALLBACK pContextMenuCallback, LONG lInsertionPointID) { _TRACE (1, L"Entering CCertMgrComponentData::AddPulseAutoEnrollMenuItem\n"); AFX_MANAGE_STATE (AfxGetStaticModuleState ()); ASSERT (pContextMenuCallback); HRESULT hr = S_OK; CONTEXTMENUITEM menuItem; CString szMenu; CString szHint; // unchanging settings ::ZeroMemory (&menuItem, sizeof (menuItem)); menuItem.lInsertionPointID = lInsertionPointID; menuItem.fFlags = 0; menuItem.fSpecialFlags = 0; VERIFY (szMenu.LoadString (IDS_PULSEAUTOENROLL)); menuItem.strName = (PWSTR) (PCWSTR) szMenu; VERIFY (szHint.LoadString (IDS_PULSEAUTOENROLL_HINT)); menuItem.strStatusBarText = (PWSTR) (PCWSTR) szHint; menuItem.lCommandID = IDM_TASK_PULSEAUTOENROLL; hr = pContextMenuCallback->AddItem (&menuItem); ASSERT (SUCCEEDED (hr)); _TRACE (-1, L"Leaving CCertMgrComponentData::AddPulseAutoEnrollMenuItem: 0x%x\n", hr); return hr; } HRESULT CCertMgrComponentData::AddChangeComputerMenuItem (LPCONTEXTMENUCALLBACK pContextMenuCallback, LONG lInsertionPointID) { _TRACE (1, L"Entering CCertMgrComponentData::AddChangeComputerMenuItem\n"); AFX_MANAGE_STATE (AfxGetStaticModuleState ()); ASSERT (pContextMenuCallback); HRESULT hr = S_OK; CONTEXTMENUITEM menuItem; CString szMenu; CString szHint; // unchanging settings ::ZeroMemory (&menuItem, sizeof (menuItem)); menuItem.lInsertionPointID = lInsertionPointID; menuItem.fFlags = 0; menuItem.fSpecialFlags = 0; VERIFY (szMenu.LoadString (IDS_CHANGE_COMPUTER)); menuItem.strName = (PWSTR) (PCWSTR) szMenu; VERIFY (szHint.LoadString (IDS_CHANGE_COMPUTER_HINT)); menuItem.strStatusBarText = (PWSTR) (PCWSTR) szHint; if ( CCM_INSERTIONPOINTID_PRIMARY_TOP == lInsertionPointID ) menuItem.lCommandID = IDM_TOP_CHANGE_COMPUTER; else menuItem.lCommandID = IDM_TASK_CHANGE_COMPUTER; hr = pContextMenuCallback->AddItem (&menuItem); ASSERT (SUCCEEDED (hr)); _TRACE (-1, L"Leaving CCertMgrComponentData::AddChangeComputerMenuItem: 0x%x\n", hr); return hr; } HRESULT CCertMgrComponentData::AddSeparator (LPCONTEXTMENUCALLBACK pContextMenuCallback) { _TRACE (1, L"Entering CCertMgrComponentData::AddSeparator\n"); AFX_MANAGE_STATE (AfxGetStaticModuleState ()); ASSERT (pContextMenuCallback); CONTEXTMENUITEM menuItem; ::ZeroMemory (&menuItem, sizeof (menuItem)); menuItem.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_TASK; menuItem.fSpecialFlags = 0; menuItem.strName = _T ("Separator"); // Dummy name menuItem.strStatusBarText = _T ("Separator");// Dummy status text menuItem.lCommandID = ID_SEPARATOR; // Command ID menuItem.fFlags = MF_SEPARATOR; // most important the flag HRESULT hr = pContextMenuCallback->AddItem (&menuItem); _TRACE (-1, L"Leaving CCertMgrComponentData::AddSeparator: 0x%x\n", hr); return hr; } HRESULT CCertMgrComponentData::AddImportMenuItem ( LPCONTEXTMENUCALLBACK pContextMenuCallback, bool bIsReadOnly, LONG lInsertionPointID) { _TRACE (1, L"Entering CCertMgrComponentData::AddImportMenuItem\n"); AFX_MANAGE_STATE (AfxGetStaticModuleState ()); ASSERT (pContextMenuCallback); HRESULT hr = S_OK; CONTEXTMENUITEM menuItem; CString szMenu; CString szHint; ::ZeroMemory (&menuItem, sizeof (menuItem)); menuItem.lInsertionPointID = lInsertionPointID; menuItem.fFlags = 0; menuItem.fSpecialFlags = 0; VERIFY (szMenu.LoadString (IDS_IMPORT)); menuItem.strName = (PWSTR) (PCWSTR) szMenu; VERIFY (szHint.LoadString (IDS_IMPORT_HINT)); menuItem.strStatusBarText = (PWSTR) (PCWSTR) szHint; menuItem.lCommandID = IDM_TASK_IMPORT; if ( bIsReadOnly ) menuItem.fFlags = MF_GRAYED; hr = pContextMenuCallback->AddItem (&menuItem); ASSERT (SUCCEEDED (hr)); _TRACE (-1, L"Leaving CCertMgrComponentData::AddImportMenuItem: 0x%x\n", hr); return hr; } HRESULT CCertMgrComponentData::AddExportStoreMenuItem (LPCONTEXTMENUCALLBACK pContextMenuCallback) { _TRACE (1, L"Entering CCertMgrComponentData::AddExportStoreMenuItem\n"); AFX_MANAGE_STATE (AfxGetStaticModuleState ()); ASSERT (pContextMenuCallback); HRESULT hr = S_OK; CONTEXTMENUITEM menuItem; CString szMenu; CString szHint; // unchanging settings ::ZeroMemory (&menuItem, sizeof (menuItem)); menuItem.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_TASK; menuItem.fFlags = 0; menuItem.fSpecialFlags = 0; VERIFY (szMenu.LoadString (IDS_EXPORT_STORE)); menuItem.strName = (PWSTR) (PCWSTR) szMenu; VERIFY (szHint.LoadString (IDS_EXPORT_STORE_HINT)); menuItem.strStatusBarText = (PWSTR) (PCWSTR) szHint; menuItem.lCommandID = IDM_TASK_EXPORT_STORE; hr = pContextMenuCallback->AddItem (&menuItem); ASSERT (SUCCEEDED (hr)); _TRACE (-1, L"Leaving CCertMgrComponentData::AddExportStoreMenuItem: 0x%x\n", hr); return hr; } HRESULT CCertMgrComponentData::AddExportMenuItem (LPCONTEXTMENUCALLBACK pContextMenuCallback) { _TRACE (1, L"Entering CCertMgrComponentData::AddExportMenuItem\n"); AFX_MANAGE_STATE (AfxGetStaticModuleState ()); ASSERT (pContextMenuCallback); HRESULT hr = S_OK; CONTEXTMENUITEM menuItem; CString szMenu; CString szHint; // unchanging settings ::ZeroMemory (&menuItem, sizeof (menuItem)); menuItem.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_TASK; menuItem.fFlags = 0; menuItem.fSpecialFlags = 0; VERIFY (szMenu.LoadString (IDS_EXPORT)); menuItem.strName = (PWSTR) (PCWSTR) szMenu; VERIFY (szHint.LoadString (IDS_EXPORT_HINT)); menuItem.strStatusBarText = (PWSTR) (PCWSTR) szHint; menuItem.lCommandID = IDM_TASK_EXPORT; hr = pContextMenuCallback->AddItem (&menuItem); ASSERT (SUCCEEDED (hr)); _TRACE (-1, L"Leaving CCertMgrComponentData::AddExportMenuItem: 0x%x\n", hr); return hr; } HRESULT CCertMgrComponentData::AddCTLExportMenuItem (LPCONTEXTMENUCALLBACK pContextMenuCallback) { _TRACE (1, L"Entering CCertMgrComponentData::AddCTLExportMenuItem\n"); AFX_MANAGE_STATE (AfxGetStaticModuleState ()); ASSERT (pContextMenuCallback); HRESULT hr = S_OK; CONTEXTMENUITEM menuItem; CString szMenu; CString szHint; // unchanging settings ::ZeroMemory (&menuItem, sizeof (menuItem)); menuItem.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_TASK; menuItem.fFlags = 0; menuItem.fSpecialFlags = 0; VERIFY (szMenu.LoadString (IDS_EXPORT)); menuItem.strName = (PWSTR) (PCWSTR) szMenu; VERIFY (szHint.LoadString (IDS_CTL_EXPORT_HINT)); menuItem.strStatusBarText = (PWSTR) (PCWSTR) szHint; menuItem.lCommandID = IDM_TASK_CTL_EXPORT; hr = pContextMenuCallback->AddItem (&menuItem); ASSERT (SUCCEEDED (hr)); _TRACE (-1, L"Leaving CCertMgrComponentData::AddCTLExportMenuItem: 0x%x\n", hr); return hr; } HRESULT CCertMgrComponentData::AddCRLExportMenuItem (LPCONTEXTMENUCALLBACK pContextMenuCallback) { _TRACE (1, L"Entering CCertMgrComponentData::AddCRLExportMenuItem\n"); AFX_MANAGE_STATE (AfxGetStaticModuleState ()); ASSERT (pContextMenuCallback); HRESULT hr = S_OK; CONTEXTMENUITEM menuItem; CString szMenu; CString szHint; // unchanging settings ::ZeroMemory (&menuItem, sizeof (menuItem)); menuItem.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_TASK; menuItem.fFlags = 0; menuItem.fSpecialFlags = 0; VERIFY (szMenu.LoadString (IDS_EXPORT)); menuItem.strName = (PWSTR) (PCWSTR) szMenu; VERIFY (szHint.LoadString (IDS_CRL_EXPORT_HINT)); menuItem.strStatusBarText = (PWSTR) (PCWSTR) szHint; menuItem.lCommandID = IDM_TASK_CRL_EXPORT; hr = pContextMenuCallback->AddItem (&menuItem); ASSERT (SUCCEEDED (hr)); _TRACE (-1, L"Leaving CCertMgrComponentData::AddCRLExportMenuItem: 0x%x\n", hr); return hr; } HRESULT CCertMgrComponentData::AddOpenMenuItem (LPCONTEXTMENUCALLBACK pContextMenuCallback, LONG lInsertionPointID) { _TRACE (1, L"Entering CCertMgrComponentData::AddOpenMenuItem\n"); AFX_MANAGE_STATE (AfxGetStaticModuleState ()); ASSERT (pContextMenuCallback); HRESULT hr = S_OK; CONTEXTMENUITEM menuItem; CString szMenu; CString szHint; // unchanging settings ::ZeroMemory (&menuItem, sizeof (menuItem)); menuItem.lInsertionPointID = lInsertionPointID; menuItem.fFlags = 0; VERIFY (szMenu.LoadString (IDS_VIEW)); menuItem.strName = (PWSTR) (PCWSTR) szMenu; VERIFY (szHint.LoadString (IDS_VIEW_HINT)); menuItem.strStatusBarText = (PWSTR) (PCWSTR) szHint; menuItem.lCommandID = (CCM_INSERTIONPOINTID_PRIMARY_TOP == lInsertionPointID) ? IDM_OPEN : IDM_TASK_OPEN; menuItem.fSpecialFlags = CCM_SPECIAL_DEFAULT_ITEM; hr = pContextMenuCallback->AddItem (&menuItem); ASSERT (SUCCEEDED (hr)); _TRACE (-1, L"Leaving CCertMgrComponentData::AddOpenMenuItem: 0x%x\n", hr); return hr; } HRESULT CCertMgrComponentData::AddCTLOpenMenuItem (LPCONTEXTMENUCALLBACK pContextMenuCallback, LONG lInsertionPointID) { _TRACE (1, L"Entering CCertMgrComponentData::AddCTLOpenMenuItem\n"); AFX_MANAGE_STATE (AfxGetStaticModuleState ()); ASSERT (pContextMenuCallback); HRESULT hr = S_OK; CONTEXTMENUITEM menuItem; CString szMenu; CString szHint; // unchanging settings ::ZeroMemory (&menuItem, sizeof (menuItem)); menuItem.lInsertionPointID = lInsertionPointID; menuItem.fFlags = 0; VERIFY (szMenu.LoadString (IDS_VIEW)); menuItem.strName = (PWSTR) (PCWSTR) szMenu; VERIFY (szHint.LoadString (IDS_CTL_VIEW_HINT)); menuItem.strStatusBarText = (PWSTR) (PCWSTR) szHint; menuItem.lCommandID = (CCM_INSERTIONPOINTID_PRIMARY_TOP == lInsertionPointID) ? IDM_OPEN : IDM_TASK_OPEN; menuItem.fSpecialFlags = CCM_SPECIAL_DEFAULT_ITEM; hr = pContextMenuCallback->AddItem (&menuItem); ASSERT (SUCCEEDED (hr)); _TRACE (-1, L"Leaving CCertMgrComponentData::AddCTLOpenMenuItem: 0x%x\n", hr); return hr; } HRESULT CCertMgrComponentData::AddCRLOpenMenuItem (LPCONTEXTMENUCALLBACK pContextMenuCallback, LONG lInsertionPointID) { _TRACE (1, L"Entering CCertMgrComponentData::AddCRLOpenMenuItem\n"); AFX_MANAGE_STATE (AfxGetStaticModuleState ()); ASSERT (pContextMenuCallback); HRESULT hr = S_OK; CONTEXTMENUITEM menuItem; CString szMenu; CString szHint; // unchanging settings ::ZeroMemory (&menuItem, sizeof (menuItem)); menuItem.lInsertionPointID = lInsertionPointID; menuItem.fFlags = 0; VERIFY (szMenu.LoadString (IDS_VIEW)); menuItem.strName = (PWSTR) (PCWSTR) szMenu; VERIFY (szHint.LoadString (IDS_CRL_VIEW_HINT)); menuItem.strStatusBarText = (PWSTR) (PCWSTR) szHint; menuItem.lCommandID = (CCM_INSERTIONPOINTID_PRIMARY_TOP == lInsertionPointID) ? IDM_OPEN : IDM_TASK_OPEN; menuItem.fSpecialFlags = CCM_SPECIAL_DEFAULT_ITEM; hr = pContextMenuCallback->AddItem (&menuItem); ASSERT (SUCCEEDED (hr)); _TRACE (-1, L"Leaving CCertMgrComponentData::AddCRLOpenMenuItem: 0x%x\n", hr); return hr; } HRESULT CCertMgrComponentData::AddAddDomainEncryptedRecoveryAgentMenuItem (LPCONTEXTMENUCALLBACK pContextMenuCallback, LONG lInsertionPointID, bool bIsReadOnly) { _TRACE (1, L"Entering CCertMgrComponentData::AddAddDomainEncryptedRecoveryAgentMenuItem\n"); AFX_MANAGE_STATE (AfxGetStaticModuleState ()); ASSERT (pContextMenuCallback); HRESULT hr = S_OK; CONTEXTMENUITEM menuItem; CString szMenu; CString szHint; // unchanging settings ::ZeroMemory (&menuItem, sizeof (menuItem)); menuItem.lInsertionPointID = lInsertionPointID; menuItem.fFlags = 0; if ( lInsertionPointID == CCM_INSERTIONPOINTID_PRIMARY_TOP ) { VERIFY (szMenu.LoadString (IDS_ADD_DATA_RECOVERY_AGENT)); menuItem.lCommandID = IDM_ADD_DOMAIN_ENCRYPTED_RECOVERY_AGENT; } else if ( lInsertionPointID == CCM_INSERTIONPOINTID_PRIMARY_TASK ) { VERIFY (szMenu.LoadString (IDS_ADD_DATA_RECOVERY_AGENT)); menuItem.lCommandID = IDM_ADD_DOMAIN_ENCRYPTED_RECOVERY_AGENT1; } else if ( lInsertionPointID == CCM_INSERTIONPOINTID_PRIMARY_NEW ) { VERIFY (szMenu.LoadString (IDS_ENCRYPTED_RECOVERY_AGENT)); menuItem.lCommandID = IDM_ADD_DOMAIN_ENCRYPTED_RECOVERY_AGENT2; } else { ASSERT (0); return E_UNEXPECTED; } menuItem.strName = (PWSTR) (PCWSTR) szMenu; VERIFY (szHint.LoadString (IDS_ADD_DOMAIN_ENCRYPTED_RECOVERY_AGENT_HINT)); menuItem.strStatusBarText = (PWSTR) (PCWSTR) szHint; if ( bIsReadOnly ) menuItem.fFlags = MF_GRAYED; hr = pContextMenuCallback->AddItem (&menuItem); ASSERT (SUCCEEDED (hr)); _TRACE (-1, L"Leaving CCertMgrComponentData::AddAddDomainEncryptedRecoveryAgentMenuItem: 0x%x\n", hr); return hr; } HRESULT CCertMgrComponentData::AddCreateDomainEncryptedRecoveryAgentMenuItem (LPCONTEXTMENUCALLBACK pContextMenuCallback, LONG lInsertionPointID, bool bIsReadOnly) { _TRACE (1, L"Entering CCertMgrComponentData::AddCreateDomainEncryptedRecoveryAgentMenuItem\n"); AFX_MANAGE_STATE (AfxGetStaticModuleState ()); ASSERT (pContextMenuCallback); HRESULT hr = S_OK; CONTEXTMENUITEM menuItem; CString szMenu; CString szHint; // unchanging settings ::ZeroMemory (&menuItem, sizeof (menuItem)); menuItem.lInsertionPointID = lInsertionPointID; menuItem.fFlags = 0; VERIFY (szMenu.LoadString (IDS_CREATE)); menuItem.strName = (PWSTR) (PCWSTR) szMenu; VERIFY (szHint.LoadString (IDS_CREATE_DOMAIN_ENCRYPTED_RECOVERY_AGENT_HINT)); menuItem.strStatusBarText = (PWSTR) (PCWSTR) szHint; menuItem.lCommandID = IDM_CREATE_DOMAIN_ENCRYPTED_RECOVERY_AGENT; if ( bIsReadOnly ) menuItem.fFlags = MF_GRAYED; hr = pContextMenuCallback->AddItem (&menuItem); ASSERT (SUCCEEDED (hr)); _TRACE (-1, L"Leaving CCertMgrComponentData::AddCreateDomainEncryptedRecoveryAgentMenuItem: 0x%x\n", hr); return hr; } HRESULT CCertMgrComponentData::AddInitPolicyMenuItem (LPCONTEXTMENUCALLBACK pContextMenuCallback, LONG lInsertionPointID) { _TRACE (1, L"Entering CCertMgrComponentData::AddInitPolicyMenuItem\n"); AFX_MANAGE_STATE (AfxGetStaticModuleState ()); ASSERT (pContextMenuCallback); HRESULT hr = S_OK; CONTEXTMENUITEM menuItem; CString szMenu; CString szHint; // unchanging settings ::ZeroMemory (&menuItem, sizeof (menuItem)); menuItem.lInsertionPointID = lInsertionPointID; menuItem.fFlags = 0; VERIFY (szMenu.LoadString (IDS_INIT_POLICY)); menuItem.lCommandID = IDM_INIT_POLICY; menuItem.strName = (PWSTR) (PCWSTR) szMenu; VERIFY (szHint.LoadString (IDS_INIT_POLICY_HINT)); menuItem.strStatusBarText = (PWSTR) (PCWSTR) szHint; hr = pContextMenuCallback->AddItem (&menuItem); ASSERT (SUCCEEDED (hr)); _TRACE (-1, L"Leaving CCertMgrComponentData::AddInitPolicyMenuItem: 0x%x\n", hr); return hr; } HRESULT CCertMgrComponentData::AddDeletePolicyMenuItem (LPCONTEXTMENUCALLBACK pContextMenuCallback, LONG lInsertionPointID) { _TRACE (1, L"Entering CCertMgrComponentData::AddDeletePolicyMenuItem\n"); AFX_MANAGE_STATE (AfxGetStaticModuleState ()); ASSERT (pContextMenuCallback); HRESULT hr = S_OK; CONTEXTMENUITEM menuItem; CString szMenu; CString szHint; // unchanging settings ::ZeroMemory (&menuItem, sizeof (menuItem)); menuItem.lInsertionPointID = lInsertionPointID; menuItem.fFlags = 0; if ( lInsertionPointID == CCM_INSERTIONPOINTID_PRIMARY_TOP ) { VERIFY (szMenu.LoadString (IDS_DEL_POLICY)); menuItem.lCommandID = IDM_DEL_POLICY; } else if ( lInsertionPointID == CCM_INSERTIONPOINTID_PRIMARY_TASK ) { VERIFY (szMenu.LoadString (IDS_DEL_POLICY)); menuItem.lCommandID = IDM_DEL_POLICY1; } else { ASSERT (0); return E_UNEXPECTED; } menuItem.strName = (PWSTR) (PCWSTR) szMenu; VERIFY (szHint.LoadString (IDS_DEL_POLICY_HINT)); menuItem.strStatusBarText = (PWSTR) (PCWSTR) szHint; hr = pContextMenuCallback->AddItem (&menuItem); ASSERT (SUCCEEDED (hr)); _TRACE (-1, L"Leaving CCertMgrComponentData::AddDeletePolicyMenuItem: 0x%x\n", hr); return hr; } HRESULT CCertMgrComponentData::AddCTLNewMenuItem (LPCONTEXTMENUCALLBACK pContextMenuCallback, LONG lInsertionPointID, bool bIsReadOnly) { _TRACE (1, L"Entering CCertMgrComponentData::AddCTLNewMenuItem\n"); AFX_MANAGE_STATE (AfxGetStaticModuleState ()); ASSERT (pContextMenuCallback); HRESULT hr = S_OK; CONTEXTMENUITEM menuItem; CString szMenu; CString szHint; // unchanging settings ::ZeroMemory (&menuItem, sizeof (menuItem)); menuItem.lInsertionPointID = lInsertionPointID; menuItem.fFlags = 0; VERIFY (szMenu.LoadString (IDS_NEW_CTL)); menuItem.strName = (PWSTR) (PCWSTR) szMenu; VERIFY (szHint.LoadString (IDS_NEW_CTL_HINT)); menuItem.strStatusBarText = (PWSTR) (PCWSTR) szHint; menuItem.lCommandID = IDM_NEW_CTL; if ( bIsReadOnly ) menuItem.fFlags = MF_GRAYED; hr = pContextMenuCallback->AddItem (&menuItem); ASSERT (SUCCEEDED (hr)); _TRACE (-1, L"Leaving CCertMgrComponentData::AddCTLNewMenuItem: 0x%x\n", hr); return hr; } HRESULT CCertMgrComponentData::AddSaferCreateNewPolicyMenuItems ( LPCONTEXTMENUCALLBACK pContextMenuCallback, LONG lInsertionPointID) { _TRACE (1, L"Entering CCertMgrComponentData::AddSaferCreateNewPolicyMenuItems\n"); AFX_MANAGE_STATE (AfxGetStaticModuleState ()); ASSERT (pContextMenuCallback); HRESULT hr = S_OK; CONTEXTMENUITEM menuItem; CString szMenu; CString szHint; // unchanging settings ::ZeroMemory (&menuItem, sizeof (menuItem)); menuItem.lInsertionPointID = lInsertionPointID; menuItem.fFlags = 0; VERIFY (szMenu.LoadString (IDS_NEW_SAFER_POLICY)); menuItem.strName = (PWSTR) (PCWSTR) szMenu; VERIFY (szHint.LoadString (IDS_NEW_SAFER_POLICY_HINT)); menuItem.strStatusBarText = (PWSTR) (PCWSTR) szHint; menuItem.lCommandID = CCM_INSERTIONPOINTID_PRIMARY_TOP == lInsertionPointID ? IDM_TOP_CREATE_NEW_SAFER_POLICY : IDM_TASK_CREATE_NEW_SAFER_POLICY; hr = pContextMenuCallback->AddItem (&menuItem); ASSERT (SUCCEEDED (hr)); _TRACE (-1, L"Leaving CCertMgrComponentData::AddSaferCreateNewPolicyMenuItems: 0x%x\n", hr); return hr; } HRESULT CCertMgrComponentData::AddOptionsMenuItem(LPCONTEXTMENUCALLBACK pContextMenuCallback) { _TRACE (1, L"Entering CCertMgrComponentData::AddOptionsMenuItem\n"); AFX_MANAGE_STATE (AfxGetStaticModuleState ()); ASSERT (pContextMenuCallback); HRESULT hr = S_OK; CONTEXTMENUITEM menuItem; CString szMenu; CString szHint; // unchanging settings ::ZeroMemory (&menuItem, sizeof (menuItem)); menuItem.fFlags = 0; menuItem.fSpecialFlags = 0; menuItem.lInsertionPointID = CCM_INSERTIONPOINTID_PRIMARY_VIEW; VERIFY (szMenu.LoadString (IDS_OPTIONS)); menuItem.strName = (PWSTR) (PCWSTR) szMenu; VERIFY (szHint.LoadString (IDS_OPTIONS_HINT)); menuItem.strStatusBarText = (PWSTR) (PCWSTR) szHint; menuItem.lCommandID = IDM_OPTIONS; hr = pContextMenuCallback->AddItem (&menuItem); ASSERT (SUCCEEDED (hr)); _TRACE (-1, L"LeavingLeaving CCertMgrComponentData::AddOptionsMenuItem: 0x%x\n", hr); return hr; }