// MSPID.h : Declaration of the CMSPID #ifndef __MSPID_H_ #define __MSPID_H_ #include "resource.h" // main symbols #include using namespace std; ///////////////////////////////////////////////////////////////////////////// // CMSPID class ATL_NO_VTABLE CMSPID : public CComObjectRootEx, public CComCoClass, public IDispatchImpl { public: CMSPID(): m_szMachineName(NULL), m_szMSSoftware(_T("software\\microsoft")), m_szCurrKeyName(NULL), m_szWindowsPID(NULL), m_szIEPID(NULL) { m_bstrWindows.LoadString(IDS_WINDOWS);//localized "Windows" m_bstrIE.LoadString(IDS_IE);//localized "Internet Exporer" //valid PID keys/values m_vecPIDKeys.push_back(_T("productid")); m_vecPIDKeys.push_back(_T("pid")); //PIDs with these substrings are rejected m_vecBadPIDs.push_back(_T("11111")); m_vecBadPIDs.push_back(_T("12345")); m_vecBadPIDs.push_back(_T("none")); //don't go here m_vecKeysToSkip.push_back(_T("Uninstall")); m_vecKeysToSkip.push_back(_T("Installer")); m_vecKeysToSkip.push_back(_T("Windows NT")); } ~CMSPID() { } DECLARE_REGISTRY_RESOURCEID(IDR_MSPID) DECLARE_PROTECT_FINAL_CONSTRUCT() BEGIN_COM_MAP(CMSPID) COM_INTERFACE_ENTRY(IMSPID) COM_INTERFACE_ENTRY(IDispatch) END_COM_MAP() private: BOOL ReadValues(const HKEY&); BOOL ReadValue(const HKEY&, LPCTSTR); void EnumSubKeys(const HKEY&, LPCTSTR); void SearchKey(LPCTSTR); LPCTSTR m_szMachineName; LPCTSTR m_szMSSoftware; LPCTSTR m_szCurrKeyName; LPTSTR m_szWindowsPID; LPTSTR m_szIEPID; CComBSTR m_bstrWindows; CComBSTR m_bstrIE; vector m_vecPIDKeys; vector m_vecBadPIDs; vector m_vecKeysToSkip; vector m_vecData; // IMSPID public: STDMETHOD(GetPIDInfo)(/*[in]*/ VARIANT *, /*[out, retval]*/ VARIANT *); }; #endif //__MSPID_H_