使你的Active_控件执行时不弹出安全性提示.doc

使你的Active_控件执行时不弹出安全性提示.doc

ID:53879687

大小:25.00 KB

页数:7页

时间:2020-04-10

使你的Active_控件执行时不弹出安全性提示.doc_第1页
使你的Active_控件执行时不弹出安全性提示.doc_第2页
使你的Active_控件执行时不弹出安全性提示.doc_第3页
使你的Active_控件执行时不弹出安全性提示.doc_第4页
使你的Active_控件执行时不弹出安全性提示.doc_第5页
资源描述:

《使你的Active_控件执行时不弹出安全性提示.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、我们编写一个ActiveX控件在IE中运行,一般会弹出一个安全提示,如何避免这种情况?下面是我在参考前人的文章后,总结出“在浏览器中执行时不弹出警告的ActiveX控件”的两种编写方法,予以备忘。注意,这里不会弹出警告是说在执行时不会弹出,也就是说已经安装了这个ActiveX控件。如果要下载安装这个ActiveX控件时不会弹出安全警告,恐怕就得去买数字证书了。不过即使有数字证书,还是得用户同意后才会下载安装。以下两种方法在WINXP-SP2+VC6下通过。方法1:修改注册表可能你在看完下面的过程后会发现,程序没有一个地方对注册表操作过。其

2、实不然,这里所谓的修改注册表的方法就是使用组件类型管理器(ComponentCategoriesManager)创建一个正确的入口到系统注册表。IE通过检测注册表判断一个控件是否可以安全地初始化和脚本操作。IE会通过调用ICatInformation::IsClassOfCategories方法确定控件是否支持给出的安全性分组。其中对注册表的操作都已经封装起来,隐藏在底层了,所以看不到。必须包括两个头文件#include#includeconstGUIDCDECLCLSID_SafeItem={0

3、xD321B11E,0x8E79,0x4829,0xAB,0x80,0x9E,0x59,0x92,0x06,0xAB,0xB7};//用你的控件类GUID替换//注册组件种类为安全HRESULTAddCategorySafty(CATIDcatid,TCHAR*catDescription){   ICatRegister*pcr=NULL;   HRESULThr=S_OK;   hr=CoCreateInstance(CLSID_StdComponentCategoriesMgr,  NULL,CLSCTX_INPROC_SERVER

4、,IID_ICatRegister,(void**)&pcr);   if(FAILED(hr))       returnhr;   CATEGORYINFOcatinfo;   catinfo.catid=catid;   catinfo.lcid=0x0409;//英语语言   //最长只拷贝127个字符。   intlen=lstrlen(catDescription);if(len>127){  len=127;}   lstrcpyn((TCHAR*)(catinfo.szDescription),catDescription

5、,len+1);   hr=pcr->RegisterCategories(1,&catinfo);pcr->Release();   returnhr;}//移除已经注册为安全的组件种类HRESULTRemoveCategorySafty(CATIDcatid){   ICatRegister*pcr=NULL;   HRESULThr=S_OK;   hr=CoCreateInstance(CLSID_StdComponentCategoriesMgr,  NULL,CLSCTX_INPROC_SERVER,IID_ICatRegis

6、ter,(void**)&pcr);   if(FAILED(hr))       returnhr;   hr=pcr->UnRegisterCategories(1,&catid);pcr->Release();   returnhr;}//把你的控件注册到已经注册为安全的组件种类HRESULTRegisterCLSIDInCategory(REFCLSIDclsid,CATIDcatid){   ICatRegister*pcr=NULL;   HRESULThr=S_OK;   hr=CoCreateInstance(CLSID_

7、StdComponentCategoriesMgr,  NULL,CLSCTX_INPROC_SERVER,IID_ICatRegister,(void**)&pcr);   if(SUCCEEDED(hr))   {  CATIDrgcatid[1];  rgcatid[0]=catid;  hr=pcr->RegisterClassImplCategories(clsid,1,rgcatid);   }   if(pcr!=NULL)       pcr->Release();   returnhr;}//把你的控件从安全组件种类移除

8、HRESULTUnRegisterCLSIDInCategory(REFCLSIDclsid,CATIDcatid){   ICatRegister*pcr=NULL;   HRESULThr

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。