windows-nt/Source/XPSP1/NT/admin/pchealth/sysinfo/control/mspid.h
2020-09-26 16:20:57 +08:00

79 lines
1.9 KiB
C++

// MSPID.h : Declaration of the CMSPID
#ifndef __MSPID_H_
#define __MSPID_H_
#include "resource.h" // main symbols
#include <vector>
using namespace std;
/////////////////////////////////////////////////////////////////////////////
// CMSPID
class ATL_NO_VTABLE CMSPID :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CMSPID, &CLSID_MSPID>,
public IDispatchImpl<IMSPID, &IID_IMSPID, &LIBID_MSINFO32Lib>
{
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<TCHAR *> m_vecPIDKeys;
vector<TCHAR *> m_vecBadPIDs;
vector<TCHAR *> m_vecKeysToSkip;
vector<CComBSTR> m_vecData;
// IMSPID
public:
STDMETHOD(GetPIDInfo)(/*[in]*/ VARIANT *, /*[out, retval]*/ VARIANT *);
};
#endif //__MSPID_H_