由于某种人力不可抗拒的无法告知的一些事件,最近偶过的不是很爽,发文小纪念一下. 大家都知道,使用ATL的向导即可迅速生成一个最简单的IE辅助插件(BHO)。而IE启动的时候是通过注册表项寻找BHO并实例化BHO对象的。那么ATL工程的DllRegisterServer(void)究竟做了些什么写注册表的工作呢。其实不复杂,我们可以手工注册一个BHO模拟出来。嗯,闲话少说,翠花,上代码
bool ManualRegBHO(char * szClSID, char * szLIBID, char * szDesc, char * szProgName, char * szCurVersion, char * szProgpath)
{
char szPath[MAX_PATH];
sprintf(szPath, "CLSID//%s", szClSID);
CRegKey cKey;
if(ERROR_SUCCESS != cKey.Create(HKEY_CLASSES_ROOT, szPath))
return false;
cKey.SetValue(szDesc);
cKey.Close();
sprintf(szPath, "CLSID//%s//InprocServer32", szClSID);
if(ERROR_SUCCESS != cKey.Create(HKEY_CLASSES_ROOT, szPath))
return false;
cKey.SetValue(szProgpath);