AX控件IE相关注册表修改封装

这个博客详细介绍了如何使用C++类`CIERegister`来修改IE的注册表设置,以实现不同版本IE的安全提示阻止、控件屏蔽解除以及禁用状态的更改。类中包含多个静态成员函数,分别处理阻止保护模式对话框、IE7和IE8的安全提示、解除控件在加载项中的屏蔽和禁用状态。通过调用这些函数,开发者可以针对特定模块进行注册表操作,从而影响IE对控件的处理方式。
摘要由CSDN通过智能技术生成

/********************************************************************
 created: 2012:5:10   13:04:48
 author:  Insert
 purpose: IE各种注册表更改
*********************************************************************/
#ifndef __IEREGISTER__H__EC92A9C2_3010_43D0_9E8D_946F9BA37839__
#define __IEREGISTER__H__EC92A9C2_3010_43D0_9E8D_946F9BA37839__

#include <Windows.h>
#include <assert.h>
#include <tchar.h>

#include "shlwapi.h"
#pragma comment(lib, "shlwapi.lib")

#include <intrin.h>
#pragma intrinsic(_ReturnAddress)


#pragma warning(push)
#pragma warning(disable : 4996)

class CIERegister
{
public:
 typedef enum ERegisterType
 {
  RElevationPolicy,//阻止ie保护模式对话框
  RIE7Stats,//阻止ie7安全提示
  RIE8Stats,//阻止ie8安全提示
  RActiveXCompatibility,//解除ie对控件的屏蔽(不出现在加载项)
  RSettings, //解除IE对控件的禁用(加载项中为禁用)
  RMax,
  RAll,//更改全部相关注册表
 }ERT;

public:
 static HRESULT Register(HMODULE module = NULL, ERT ert = RAll)
 {
  assert((ert >= RElevationPolicy && ert < RMax) || ert == RAll);

  HMODULE hm = module;

  if (NULL == hm)
  {
   void *callerAddress = _ReturnAddress();
   if(FALSE == ::GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, (LPCWSTR)callerAddress, &hm))
   {
    assert(FALSE && "Get module failed!");
    return E_FAIL;
   }
  }

  RegisterFunctionPtr RegisterFunction[RMax] = {
   RegisterElevationPolicy,
   RegisterIE7Stats,
   RegisterIE8Stats,
   RegisterActiveXCompatibility,
   RegisterSettings
  };

  if (RAll != ert)
  {
   return RegisterFunction[ert](hm);
  }

  HRESULT hr[RMax] 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值