IE浏览器之可信任站点的安全级别设置

时间:2022-11-30 14:25:57

      IE浏览器目前最常用的,应该是IE6~IE9,其中IE6普遍在Windows xp系统中使用,而IE9感觉总是搭着win7在一起使用。IE7  IE8说实话,其实自己很少用的,等同于不熟悉。

     打开Internet Options后,进入“安全”页面,可以看到:Internet、Local intranet、Trusted sites和Restricted sites四个区域,但其实IE浏览前的安全选项共对应了5个区域。关于这个5个区域的介绍,明天再继续。今天只讲IE浏览器安全项--可信任站点的安全级别,这个子项的设置。

   手动设置: 

    下图中粉红色边框中选中的位置就是对IE浏览前--安全--可信任站点的安全级别设置的位置。若选择直接滑动左侧的游标,则所有的配置将采用Windows已定义好的配置,例如若当前的用户将当前的配置设置为中级,则Active控件将必处于启用状态。当然用户也可以点击“Custom Level...”按键,对各相关子项进行逐一设置。

IE浏览器之可信任站点的安全级别设置

        在代码中进行设置,有两个函数都可以实现:

1)IInternetZoneManager::SetZoneAttributes接口

     IInternetZoneManager是继承字IUnknown的子类,用于管理和设置IE浏览器安全区域的属性。而SetZoneAttributes则是该类的其中的一个方法,用于设置指定区域的属性;与此方法对应的接口是:GetZoneAttributes,获取指定区域的属性。

    两个接口函数的原型如下:


      HRESULT GetZoneAttributes([in] DWORD dwZone, [in, out] ZONEATTRIBUTES *pZoneAttributes);
      HRESULT SetZoneAttributes([in] DWORD dwZone,  [in] ZONEATTRIBUTES *pZoneAttributes);

      其中dwZone指明了当前操作的区域,通常的取值范围为:0、1、2、3、4,其中可信任站点对应2;pZoneAttributes则是用于保存当前属性的指针,指向ZONEATTRIBUTES结构体,该结构体的构成如下:


    typedef struct _ZONEATTRIBUTES    {
         unsigned long cbSize;                                                   //结构体的大小
        WCHAR szDisplayName[MAX_PATH];
        WCHAR szDescription[MAX_ZONE_DESCRIPTION];
        WCHAR szIconPath[MAX_PATH];
        DWORD dwTemplateMinLevel;
        DWORD dwTemplateRecommended;
        DWORD dwTemplateCurrentLevel;                                    //安全级别
        DWORD dwFlags;                                                           
      } ZONEATTRIBUTES, *LPZONEATTRIBUTES;

 示例:

       由于IInternetZoneManager是COM组建类的子类,因此在调用前需调用::CoInitialize(NULL),在程序退出前需调用::CoUninitialize()。具体如下:

      IInternetZoneManager *pzManager = NULL;

      ZONEATTRIBUTES stZoneAttributes = {0};

      HRESULT hResult = E_FAIL;

      ::CoInitialize(NULL);

      hResult = ::CoCreateInstance(CLSID_InternetZoneManager, NULL, CLSCTX_SERVER, IID_IInternetZoneManager, (void*)&pzManager);

      if(S_OK!= hResult)

    {

        return -1; 

    }

 

     hResult = pzManager->GetZoneAttributes(URLZONE_TRUSTED, &stZoneAttributes);

    stZoneAttributes.dwTempLateCurrentLevel = 69632;

    hResult = pzManager->SetZoneAttributes(URLZONE_TRUSTED, &stZoneAttributes);

    ::CoUninitialize();

 2)CopyTemplatePoliciesToZone

     这个接口也可以实现对安全级别的设置,但是不清楚是自己用错了还是函数本身的问题,在IE9下面并不好用。

引用网址如下:

http://msdn.microsoft.com/en-us/library/ms537074(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/ms537088(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/ms537024(v=vs.85).aspx

 

示例是自己直接写的,因为现在的这台电脑上没有环境所以没有运行过。可能参数会有些问题。

另外没有进行错误处理,所以也不太好。

只是因为自己一开始用的时候,不知道是COM的东西没有做初始化,所以遇到了一点小问题,就把他写出来了。