IE浏览器之可信任站点的安全级别设置
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...”按键,对各相关子项进行逐一设置。
在代码中进行设置,有两个函数都可以实现:
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的东西没有做初始化,所以遇到了一点小问题,就把他写出来了。
阿里云入门级云服务器3个月139元(12月31日前)
· 叫好不叫座 Windows 8的问题究竟出在哪?
· 诺基亚与RIM和解 6500万美元到手
· 金融时报:iOS程序优势或被Android赶超
· 美司法部已就惠普收购Autonomy交易展开调查
· 圣诞节iOS和Android设备激活量超1740万台
» 更多新闻...
· 程序员的职业素养
· C语言中史上最愚蠢的Bug
· 致诸位新程序员:来自Chuck Jazdzewski慈父般的忠告
· 我眼中的工程师文化