浏览器插件---解决不添加信任站点就不能正常初始化的问题
来源:互联网 发布:php考试系统手机端 编辑:程序博客网 时间:2024/04/30 20:20
#include <StrSafe.h>
#include <objsafe.h>
static const CATID CLSID_SafeItem =
{ 0xa5c1039c, 0xe7b7, 0x442b, { 0xbf, 0x4b, 0xbf, 0xc2, 0x34, 0x2f, 0x12, 0x70 }}; //此ID同index.html里面写的ID
// HRESULT CreateComponentCategory – 用于注册安全的ActiveX控件
HRESULT CreateComponentCategory(CATID catid, WCHAR *catDescription)
{
ICatRegister *pcr = NULL ;
HRESULT hr = S_OK ;
hr = CoCreateInstance(CLSID_StdComponentCategoriesMgr,NULL, CLSCTX_INPROC_SERVER, IID_ICatRegister, (void**)&pcr);
if (FAILED(hr))
return hr;
// 确认HKCR\Component Categories\{..catid...}键值被注册
CATEGORYINFO catinfo;
catinfo.catid = catid;
catinfo.lcid = 0x0409 ; // english
size_t len;
// 确认描述不是太长。
// 只复制开始的127个字符。
// StringCchLength的第二个参数表示被读入catDescription的最大字符数。
// 第三个参数表示字符串的长度
//hr = StringCchLength((STRSAFE_LPSTR)catDescription, STRSAFE_MAX_CCH, &len);
hr = StringCchLength((LPCTSTR)catDescription, STRSAFE_MAX_CCH, &len);
if (SUCCEEDED(hr))
{
if (len>127)
{
len = 127;
}
}
else
{
// TODO: Write an error handler;
}
hr = StringCchCopy((LPTSTR)(catinfo.szDescription), len + 1, (LPCTSTR)catDescription);
// 添加字符串结束符.
catinfo.szDescription[len + 1] = '\0';
hr = pcr->RegisterCategories(1, &catinfo);
pcr->Release();
return hr;
}
HRESULT RegisterCLSIDInCategory(REFCLSID clsid, CATID catid)
{
// 注册组件分类信息
ICatRegister *pcr = NULL ;
HRESULT hr = S_OK ;
hr = CoCreateInstance(CLSID_StdComponentCategoriesMgr, NULL, CLSCTX_INPROC_SERVER, IID_ICatRegister, (void**)&pcr);
if (SUCCEEDED(hr))
{
CATID rgcatid[1] ;
rgcatid[0] = catid;
hr = pcr->RegisterClassImplCategories(clsid, 1, rgcatid);
}
if (pcr != NULL)
pcr->Release();
return hr;
}
// HRESULT UnRegisterCLSIDInCategory
HRESULT UnRegisterCLSIDInCategory(REFCLSID clsid, CATID catid)
{
ICatRegister *pcr = NULL ;
HRESULT hr = S_OK ;
hr = CoCreateInstance(CLSID_StdComponentCategoriesMgr, NULL, CLSCTX_INPROC_SERVER, IID_ICatRegister, (void**)&pcr);
if (SUCCEEDED(hr))
{
CATID rgcatid[1] ;
rgcatid[0] = catid;
hr = pcr->UnRegisterClassImplCategories(clsid, 1, rgcatid);
}
if (pcr != NULL)
pcr->Release();
return hr;
}
// DllRegisterServer - 将项添加到系统注册表
STDAPI DllRegisterServer(void)
{
AFX_MANAGE_STATE(_afxModuleAddrThis);
if (!AfxOleRegisterTypeLib(AfxGetInstanceHandle(), _tlid))
return ResultFromScode(SELFREG_E_TYPELIB);
if (!COleObjectFactoryEx::UpdateRegistryAll(TRUE))
return ResultFromScode(SELFREG_E_CLASS);
// 为初始化标记控件为安全控件
if (FAILED(CreateComponentCategory(CATID_SafeForInitializing, L"Controls safely initializable from persistent data!")))
return ResultFromScode(SELFREG_E_CLASS);
if (FAILED(RegisterCLSIDInCategory(CLSID_SafeItem, CATID_SafeForInitializing)))
return ResultFromScode(SELFREG_E_CLASS);
// 为脚本标记控件为安全控件
if (FAILED(CreateComponentCategory(CATID_SafeForScripting, L"Controls safely scriptable!")))
return ResultFromScode(SELFREG_E_CLASS);
if (FAILED(RegisterCLSIDInCategory(CLSID_SafeItem, CATID_SafeForScripting)))
return ResultFromScode(SELFREG_E_CLASS);
return NOERROR;
}
// DllUnregisterServer - 将项从系统注册表中移除
STDAPI DllUnregisterServer(void)
{
AFX_MANAGE_STATE(_afxModuleAddrThis);
UnRegisterCLSIDInCategory(CLSID_SafeItem, CATID_SafeForInitializing);
UnRegisterCLSIDInCategory(CLSID_SafeItem, CATID_SafeForScripting);
if (!AfxOleUnregisterTypeLib(_tlid, _wVerMajor, _wVerMinor))
return ResultFromScode(SELFREG_E_TYPELIB);
if (!COleObjectFactoryEx::UpdateRegistryAll(FALSE))
return ResultFromScode(SELFREG_E_CLASS);
return NOERROR;
}
- 浏览器插件---解决不添加信任站点就不能正常初始化的问题
- 如何关闭windows 2003浏览网页时信任站点添加提示以及解决不能加入可信任的站点
- 解决浏览器间的不兼容问题---火狐正常显示,其他浏览器有问题的情况
- 指针不初始化就传递的问题
- js检测信任站点,添加信任站点。
- IE添加信任站点
- 解决UMEditor与bootstrap不兼容导致图片不能正常拖拽缩放的问题
- selenium初始化火狐浏览器时不能应用相关插件的问题处理
- sharepoint 2013 文档库 使用资源管理器打开是灰色的,浏览器版本是IE 9在IE 11可正常打开,或提示在文件资源管理器中打开此位置时遇到问题,将此网站添加到受信任站点列表,然后重试
- 关于ueditor编辑器插件的使用记录 --- 解决"后端配置项没有正常加载,上传插件不能正常使用"上传图片处的问题
- 解决bootstrap的tooltip插件不能自动定位不是相对于浏览器窗口定位的问题
- 如何解决DriverStudio 3.2 的Visual Studio 2005插件不能在Vista下正常运行的问题
- 解决需要安装不能信任的软件包
- 解决浏览器不能上google的问题
- Internet选项 添加信任站点
- 解决ssh不能添加已访问的主机到信任列表的问题(Failed to add the host to the list of known hosts)
- 解决ssh不能添加已访问的主机到信任列表的问题(Failed to add the host to the list of known hosts) .
- 解决拨号连网导致的不能正常关机的问题
- 编辑文章 - 博客频道 - CSDN.NET
- javascript 获取 el 表达式 session 里面的值
- js小练
- 根据先序和中序求后序,注意递归终止条件
- Starling Feathers Controls Alert
- 浏览器插件---解决不添加信任站点就不能正常初始化的问题
- Android4.4 4.2keyguard锁屏流程梳理
- 看看国外是如何学习程序的
- Visual Studio快捷键大全
- Gold Coins
- ios 将字符串转换为日期时间格式
- OpenGL超级宝典笔记——GLSL语言基础(转)
- 白话经典算法系列之五 归并排序的实现
- Android4.0 Keyguard解锁屏机制