`

Activex控件在IE中也可以不显示安全提示

阅读更多

转csdn网友shepherds()

在classview下,向目录的第一个.h文件(即App启动头文件)中加入以下内容:

  1. //创建Component Categories中的初始化安全和脚本安全项   
  2. HRESULT  CreateComponentCategory(CATID catid,  WCHAR * catDescription);  
  3. //在CLSID中创建与Component Categories中初始化安全和脚本安全项中相对应的implemented Categories项   
  4. HRESULT  RegisterCLSIDInCategory(REFCLSID clsid, CATID catid);  
  5. //注销与CLSID中的相应implemented Categories项,一般用不到,因为其它程序可能也会用到这此项   
  6. HRESULT  UnRegisterCLSIDInCategory(REFCLSID clsid, CATID catid);  
  7.   
  8. extern   const  GUID CDECL _tlid;  
  9. extern   const  GUID CDECL CLSID_SafeItem;  
  10.   
  11. extern   const   WORD  _wVerMajor;  
  12. extern   const   WORD  _wVerMinor;  
  13.   
  14. 在对就的.cpp文件中加入以下内容,如果原来程序中已经有的,只改动其中的多余部分即可:  
  15.   
  16. //设置控件与注册表相关的类型库ID,后面跟有version(1.0)字样,从本工程的.idl文件中获取   
  17. const  GUID CDECL BASED_CODE _tlid =  
  18. { 0xB926A326, 0xBE91, 0x4337, { 0xA1, 0xDC, 0x76, 0x1B, 0x73, 0x15, 0x6B, 0x23 } };  
  19. //控件在注册表中的CLSID,后面跟有control字样,从本工程的.idl文件中获取   
  20. const  GUID CDECL CLSID_SafeItem =  
  21. { 0xAF546E3F, 0xB5B8, 0x42D6, {0xBB, 0x74, 0x84, 0xB7, 0x25, 0xC0, 0x38, 0x4D}};  
  22.   
  23. const   WORD  _wVerMajor = 1;  
  24. const   WORD  _wVerMinor = 0;  
  25.   
  26. STDAPI DllRegisterServer(void )  
  27. {  
  28. HRESULT  hr;  
  29.   
  30. AFX_MANAGE_STATE(_afxModuleAddrThis);  
  31.   
  32. if  (!AfxOleRegisterTypeLib(AfxGetInstanceHandle(), _tlid))  
  33. return  ResultFromScode(SELFREG_E_TYPELIB);  
  34.   
  35. if  (!COleObjectFactoryEx::UpdateRegistryAll(TRUE))  
  36. return  ResultFromScode(SELFREG_E_CLASS);  
  37. //创建脚本安全“补充”项,非CLSID中   
  38. hr = CreateComponentCategory(CATID_SafeForScripting, L"Controls safely scriptable!" );  
  39. if  (FAILED(hr))  
  40. return  hr;  
  41. //创建初始化安全“补充”项,非CLSID中   
  42. hr = CreateComponentCategory(CATID_SafeForInitializing, L"Controls safely initializable from persistent data!" );  
  43. if  (FAILED(hr))  
  44. return  hr;  
  45. //设置控件CLSID中补充项的脚本安全项,与“补充”项中的脚本安全项对应   
  46. hr = RegisterCLSIDInCategory(CLSID_SafeItem, CATID_SafeForScripting);  
  47. if  (FAILED(hr))  
  48. return  hr;  
  49. //设置控件CLSID中补充项的初始化安全项,与“补充”项中的初始化安全项对应   
  50. hr = RegisterCLSIDInCategory(CLSID_SafeItem, CATID_SafeForInitializing);  
  51. if  (FAILED(hr))  
  52. return  hr;  
  53.   
  54. return  NOERROR;  
  55. }  
  56.   
  57.    
  58.   
  59. // DllUnregisterServer - Removes entries from the system registry   
  60.   
  61. STDAPI DllUnregisterServer(void )  
  62. {  
  63. //HRESULT hr;   
  64. AFX_MANAGE_STATE(_afxModuleAddrThis);  
  65.   
  66. if  (!AfxOleUnregisterTypeLib(_tlid, _wVerMajor, _wVerMinor))  
  67. return  ResultFromScode(SELFREG_E_TYPELIB);  
  68.   
  69. if  (!COleObjectFactoryEx::UpdateRegistryAll(FALSE))  
  70. return  ResultFromScode(SELFREG_E_CLASS);  
  71.   
  72. //hr=UnRegisterCLSIDInCategory(CLSID_SafeItem, CATID_SafeForInitializing);   
  73. //if (FAILED(hr))   
  74. //return hr;   
  75. //hr=UnRegisterCLSIDInCategory(CLSID_SafeItem, CATID_SafeForScripting);   
  76. //if (FAILED(hr))   
  77. //return hr;   
  78.   
  79. return  NOERROR;  
  80. }  
  81.   
  82. HRESULT  CreateComponentCategory(CATID catid,  WCHAR * catDescription)  
  83. {  
  84. ICatRegister* pcr = NULL ;  
  85. HRESULT  hr = S_OK ;  
  86.   
  87. hr = CoCreateInstance(CLSID_StdComponentCategoriesMgr,   
  88. NULL, CLSCTX_INPROC_SERVER, IID_ICatRegister, (void **)&pcr);  
  89. if  (FAILED(hr))  
  90. return  hr;  
  91.   
  92. // Make sure the HKCR\Component Categories\{..catid...}   
  93. // key is registered.   
  94. CATEGORYINFO catinfo;  
  95. catinfo.catid = catid;  
  96. catinfo.lcid = 0x0409 ; // english   
  97.   
  98. // Make sure the provided description is not too long.   
  99. // Only copy the first 127 characters if it is.   
  100. int  len = wcslen(catDescription);  
  101. if  (len>127)  
  102. len = 127;  
  103. wcsncpy(catinfo.szDescription, catDescription, len);  
  104. // Make sure the description is null terminated.   
  105. catinfo.szDescription[len] = '\0' ;  
  106.   
  107. hr = pcr->RegisterCategories(1, &catinfo);  
  108. pcr->Release();  
  109.   
  110. return  hr;  
  111. }  
  112.   
  113. HRESULT  RegisterCLSIDInCategory(REFCLSID clsid, CATID catid)  
  114. {  
  115. // Register your component categories information.   
  116. ICatRegister* pcr = NULL ;  
  117. HRESULT  hr = S_OK ;  
  118. hr = CoCreateInstance(CLSID_StdComponentCategoriesMgr,   
  119. NULL, CLSCTX_INPROC_SERVER, IID_ICatRegister, (void **)&pcr);  
  120. if  (SUCCEEDED(hr))  
  121. {  
  122. // Register this category as being "implemented" by the class.   
  123. CATID rgcatid[1] ;  
  124. rgcatid[0] = catid;  
  125. hr = pcr->RegisterClassImplCategories(clsid, 1, rgcatid);  
  126.   
  127. if  (FAILED(hr))  
  128. return  hr;  
  129. }  
  130. if  (pcr != NULL)  
  131. pcr->Release();  
  132. return  hr;  
  133. }  
  134.   
  135.   
  136. HRESULT  UnRegisterCLSIDInCategory(REFCLSID clsid, CATID catid)  
  137. {  
  138. ICatRegister* pcr = NULL ;  
  139. HRESULT  hr = S_OK ;  
  140.   
  141. hr = CoCreateInstance(CLSID_StdComponentCategoriesMgr,   
  142. NULL, CLSCTX_INPROC_SERVER, IID_ICatRegister, (void **)&pcr);  
  143. if  (SUCCEEDED(hr))  
  144. {  
  145. // Unregister this category as being "implemented" by the class.   
  146. CATID rgcatid[1] ;  
  147. rgcatid[0] = catid;  
  148. hr = pcr->UnRegisterClassImplCategories(clsid, 1, rgcatid);  
  149. }  
  150.   
  151. if  (pcr != NULL)  
  152. pcr->Release();  
  153.   
  154. return  hr;  
  155. }  


另外
1 在HTML中写<object>标签时,把object的写法放在一个.js文件里,用document.write输出,这样不会提示激活!
  1.  //myactivex.js  
  2. document.write("< object   name = 'ActiveXName1'   id = 'ActiveXName1'   classid = '................' > ");  
  3. ...  
  4. document.write("< param... ");  //如果有参数的话  
  5. ...  
  6. document.write("</ object > ");  
  7. ...  

2 获取事件可以用
  1. < SCRIPT   LANGUAGE = "JavaScript"   for = "ActiveXName1"   EVENT = "OnMyClick" >   
  2.     alert(arguments.length);// arguments 这里是取参数  
  3. </ SCRIPT >  

分享到:
评论

相关推荐

    activex控件在IE中弹出安全警告的解决办法.txt

    本文将详细介绍如何解决ActiveX控件在IE中弹出安全警告的问题。 #### ActiveX控件与安全警告 ActiveX控件是一种可以在网页上运行的小型应用程序。它们可以增强网页的功能性和互动性,但同时也可能成为潜在的安全...

    去掉IE提示:internet explorer 已限制此网页运行脚本或Activex控件

    ### IE提示限制脚本或ActiveX控件运行的解决方案 在使用Internet Explorer浏览器访问某些包含脚本或ActiveX控件的网页时,用户可能会遇到一个警告提示:“Internet Explorer已限制此网页运行脚本或ActiveX控件”,...

    Windows XP Windows7通过注册表将 IE中 对未标记为可安全执行脚本的activex控件初始化并执行脚本 设置为启用

    标题中的“Windows XP Windows7通过注册表将IE中对未标记为可安全执行脚本的activex控件初始化并执行脚本设置为启用”涉及到的是Windows操作系统中Internet Explorer浏览器的安全配置问题。ActiveX控件是微软在IE...

    整个ActiveX控件源码

    ActiveX控件是微软开发的一种技术,用于在Internet Explorer浏览器和其他支持ActiveX的环境中嵌入功能丰富的应用程序或组件。这些控件通常是用Microsoft Visual C++、Visual Basic等编程语言编写的,可以提供交互式...

    如何在IE浏览器中调用未签名ActiveX控件的设置方法?.docx

    ActiveX 控件在 IE 浏览器中的调用设置方法 在 IE 浏览器中调用未签名 ActiveX 控件是一件需要注意的任务。ActiveX 控件作为 IE 浏览器的一种插件程序,在我们使用 IE 过程中会经常遇到。例如,当我们使用网银或...

    让ActiveX控件在网页上运行

    ActiveX控件是一种基于Microsoft COM技术的可重用软件组件,可以在Web页面中嵌入复杂的功能模块。这些控件可以实现多媒体播放、数据处理等功能,极大地扩展了网页的表现力和交互性。 #### 三、准备工作 在尝试让...

    IE11使用 ActiveX 控件.docx

    IE11 使用 ActiveX 控件是指在 Internet Explorer 11(IE11)浏览器中使用 ActiveX 控件的方法和设置。ActiveX 控件是一些小应用程序,网站可以使用这些小应用程序提供视频和游戏等内容。在浏览 Web 时,你也可以...

    注册表修改 IE 安全级别 以及添加 Activex控件的脚本

    本文主要关注的是如何通过修改注册表来改变Internet Explorer(IE)的安全设置,特别是针对ActiveX控件的管理。ActiveX控件是一种由Microsoft开发的技术,允许网页嵌入可执行代码,但同时也可能成为恶意软件的入口。...

    VS2019+MVC+WEBAPI+ACTIVEX控件

    在Internet Explorer中,ActiveX控件可以实现更复杂的功能,如文件操作或与本地系统交互。然而,由于安全性和兼容性问题,现代浏览器已不再支持ActiveX,因此本项目可能只适用于使用IE的场景。 5. **浏览器厂商检测...

    解决ocx控件在ie中加载不上的问题

    html版 需要用户用ie打开,然后允许activeX的运行就行了,这里面会吧“OCX控件强行注册+可信任站点添加+可信任站点ActiveX安全设置启用+收藏夹”全都做了,收藏夹有提示是否进行收藏 bat+reg版 考虑到用户电脑使用...

    IE加载未签名的ActiveX控件

    1. **安全性考量**:虽然通过以上步骤可以解决未签名ActiveX控件的加载问题,但这也可能带来一定的安全风险。因此,在实际操作中需谨慎对待,尽量仅对可信来源的网站进行此类设置。 2. **版本兼容性**:不同版本的IE...

    MFC制作ActiveX控件,解决了在实际使用中提示winocc.cpp出错的问题

    ActiveX是微软提出的一种技术,它允许开发者创建可重用的软件组件,这些组件可以在不同的应用程序中嵌入和交互。MFC为创建ActiveX控件提供了强大的支持,但开发过程中可能会遇到一些常见的问题,如"winocc.cpp"错误...

    ActiveX控件打包成Cab置于网页中自动下载安装

    尽管CAB文件和ActiveX控件提供了便捷的部署方式,但也存在安全隐患。恶意网站可能会利用这种方式传播病毒或恶意软件。因此,用户在下载和安装ActiveX控件时应谨慎,只信任来自可靠源的控件,并确保它们有有效的数字...

    Flash ActiveX 32位 64位IE插件

    它是一种ActiveX控件,允许用户在网页上播放基于Flash技术的多媒体内容,如动画、视频和互动应用。ActiveX是微软开发的一种技术,用于Windows平台上的应用程序组件,尤其是在Web浏览器中实现交互性。 在32位和64位...

    win7修改浏览器activeX权限(ie内核)

    在Windows 7操作系统中,由于安全性的考虑,默认情况下Internet Explorer(IE)内核浏览器对ActiveX控件的访问和执行有着严格的限制。ActiveX是一种由微软开发的技术,它允许网页嵌入可执行代码,用于提供丰富的交互...

    OCX控件去除IE安全弹窗

    3. **使用组策略**:在企业环境中,管理员可以通过组策略对象(GPO)来控制用户的IE设置,包括禁用特定的ActiveX控件警告。这需要在域控制器上配置,然后应用到相应的用户或计算机策略。 4. **代码签名**:为OCX...

    解决Win7系统中网页视频看不了提示web浏览器阻止activex控件的方法.docx

    在Windows 7系统中,用户可能会遇到在浏览网页时无法正常播放视频的情况,并收到“Web浏览器阻止ActiveX控件”的提示。这通常是由于浏览器(如Internet Explorer)的安全设置过于严格导致的。本篇文章将详细介绍如何...

    修改注册表,让它允许运行ActiveX控件,

    7. **安全警告**:虽然允许ActiveX控件运行可以解决某些网站的兼容性问题,但这也增加了潜在的安全风险。恶意的ActiveX控件可能携带病毒或恶意软件,因此,只应对信誉良好的网站开启此功能,并定期进行系统扫描以...

Global site tag (gtag.js) - Google Analytics