webbroswer屏蔽Windows2003下“增强安全设置”窗口的方法
2009-12-14 15:02
176 查看
在windows2003下,一般情况下当我们用IE访问一个站点的时候会弹出“增强的安全设置”的对话框,很让人讨厌,单我们自己的webbroswer访问的时候也会有这种情况,有些让我们显得很被动,有什么方法能屏蔽它呢?我给大家做个示范吧。
1 在引用webbroswer的窗口类中继承IInternetSecurityManager和IServiceProvider接口,具体代码如参考我的前一篇博文。
2 重载以下方法:SetSecuritySite,GetSecuritySite,MapUrlToZone,GetSecurityId,ProcessUrlAction,QueryCustomPolicy,SetZoneMapping,GetZoneMappings,具体代码可参考
virtual HRESULT STDMETHODCALLTYPE SetSecuritySite(
/* [unique][in] */ IInternetSecurityMgrSite *pSite) { return INET_E_DEFAULT_ACTION; }
virtual HRESULT STDMETHODCALLTYPE GetSecuritySite(
/* [out] */ IInternetSecurityMgrSite **ppSite) { return INET_E_DEFAULT_ACTION; }
virtual HRESULT STDMETHODCALLTYPE MapUrlToZone(
/* [in] */ LPCWSTR pwszUrl,
/* [out] */ DWORD *pdwZone,
/* [in] */ DWORD dwFlags) { *pdwZone = 2; return S_OK; }
virtual HRESULT STDMETHODCALLTYPE GetSecurityId(
/* [in] */ LPCWSTR pwszUrl,
/* [size_is][out] */ BYTE *pbSecurityId,
/* [out][in] */ DWORD *pcbSecurityId,
/* [in] */ DWORD_PTR dwReserved) { return INET_E_DEFAULT_ACTION; }
virtual HRESULT STDMETHODCALLTYPE ProcessUrlAction(
/* [in] */ LPCWSTR pwszUrl,
/* [in] */ DWORD dwAction,
/* [size_is][out] */ BYTE *pPolicy,
/* [in] */ DWORD cbPolicy,
/* [in] */ BYTE *pContext,
/* [in] */ DWORD cbContext,
/* [in] */ DWORD dwFlags,
/* [in] */ DWORD dwReserved) { return URLPOLICY_ALLOW; }
virtual HRESULT STDMETHODCALLTYPE QueryCustomPolicy(
/* [in] */ LPCWSTR pwszUrl,
/* [in] */ REFGUID guidKey,
/* [size_is][size_is][out] */ BYTE **ppPolicy,
/* [out] */ DWORD *pcbPolicy,
/* [in] */ BYTE *pContext,
/* [in] */ DWORD cbContext,
/* [in] */ DWORD dwReserved) { return INET_E_DEFAULT_ACTION; }
virtual HRESULT STDMETHODCALLTYPE SetZoneMapping(
/* [in] */ DWORD dwZone,
/* [in] */ LPCWSTR lpszPattern,
/* [in] */ DWORD dwFlags) { return INET_E_DEFAULT_ACTION; }
virtual HRESULT STDMETHODCALLTYPE GetZoneMappings(
/* [in] */ DWORD dwZone,
/* [out] */ IEnumString **ppenumString,
/* [in] */ DWORD dwFlags) { return INET_E_DEFAULT_ACTION; }
3 接着在QueryInterface方法中处加上如下代码:
if (IsEqualIID(riid,IID_IServiceProvider))
{
*ppv = static_cast<IServiceProvider*>(this);
return S_OK;
}
4 最后在QueryService方法中加入以下实现即可:
if (IsEqualIID(riid, IID_IInternetSecurityManager))
{
*ppvObject = static_cast<IInternetSecurityManager*>(this);
return S_OK;
}
以上四步即可完全屏蔽那可恶的窗口了,具体原理请参见MSDN,本人不多说。
1 在引用webbroswer的窗口类中继承IInternetSecurityManager和IServiceProvider接口,具体代码如参考我的前一篇博文。
2 重载以下方法:SetSecuritySite,GetSecuritySite,MapUrlToZone,GetSecurityId,ProcessUrlAction,QueryCustomPolicy,SetZoneMapping,GetZoneMappings,具体代码可参考
virtual HRESULT STDMETHODCALLTYPE SetSecuritySite(
/* [unique][in] */ IInternetSecurityMgrSite *pSite) { return INET_E_DEFAULT_ACTION; }
virtual HRESULT STDMETHODCALLTYPE GetSecuritySite(
/* [out] */ IInternetSecurityMgrSite **ppSite) { return INET_E_DEFAULT_ACTION; }
virtual HRESULT STDMETHODCALLTYPE MapUrlToZone(
/* [in] */ LPCWSTR pwszUrl,
/* [out] */ DWORD *pdwZone,
/* [in] */ DWORD dwFlags) { *pdwZone = 2; return S_OK; }
virtual HRESULT STDMETHODCALLTYPE GetSecurityId(
/* [in] */ LPCWSTR pwszUrl,
/* [size_is][out] */ BYTE *pbSecurityId,
/* [out][in] */ DWORD *pcbSecurityId,
/* [in] */ DWORD_PTR dwReserved) { return INET_E_DEFAULT_ACTION; }
virtual HRESULT STDMETHODCALLTYPE ProcessUrlAction(
/* [in] */ LPCWSTR pwszUrl,
/* [in] */ DWORD dwAction,
/* [size_is][out] */ BYTE *pPolicy,
/* [in] */ DWORD cbPolicy,
/* [in] */ BYTE *pContext,
/* [in] */ DWORD cbContext,
/* [in] */ DWORD dwFlags,
/* [in] */ DWORD dwReserved) { return URLPOLICY_ALLOW; }
virtual HRESULT STDMETHODCALLTYPE QueryCustomPolicy(
/* [in] */ LPCWSTR pwszUrl,
/* [in] */ REFGUID guidKey,
/* [size_is][size_is][out] */ BYTE **ppPolicy,
/* [out] */ DWORD *pcbPolicy,
/* [in] */ BYTE *pContext,
/* [in] */ DWORD cbContext,
/* [in] */ DWORD dwReserved) { return INET_E_DEFAULT_ACTION; }
virtual HRESULT STDMETHODCALLTYPE SetZoneMapping(
/* [in] */ DWORD dwZone,
/* [in] */ LPCWSTR lpszPattern,
/* [in] */ DWORD dwFlags) { return INET_E_DEFAULT_ACTION; }
virtual HRESULT STDMETHODCALLTYPE GetZoneMappings(
/* [in] */ DWORD dwZone,
/* [out] */ IEnumString **ppenumString,
/* [in] */ DWORD dwFlags) { return INET_E_DEFAULT_ACTION; }
3 接着在QueryInterface方法中处加上如下代码:
if (IsEqualIID(riid,IID_IServiceProvider))
{
*ppv = static_cast<IServiceProvider*>(this);
return S_OK;
}
4 最后在QueryService方法中加入以下实现即可:
if (IsEqualIID(riid, IID_IInternetSecurityManager))
{
*ppvObject = static_cast<IInternetSecurityManager*>(this);
return S_OK;
}
以上四步即可完全屏蔽那可恶的窗口了,具体原理请参见MSDN,本人不多说。
相关文章推荐
- JS添加可信站点、修改ActiveX安全设置,禁用弹出窗口阻止程序的方法
- Windows 2008禁止IE增强安全配置修改安全设置方法
- JS添加可信站点、修改ActiveX安全设置,禁用弹出窗口阻止程序的方法
- JS添加可信站点、修改ActiveX安全设置,禁用弹出窗口阻止程序的方法
- win7系统关闭“window安全网络身份验证”窗口的设置方法
- JS添加可信站点、修改ActiveX安全设置,禁用弹出窗口阻止程序的方法
- 设置窗口客户区大小的方法
- Java开发桌面程序SWING,设置主窗口位置居中一般使用下面的方法
- DEDECMS安全设置 执行php脚本限制设置方法(apache+nginx)
- “您查看的网页正在试图关闭窗口。是否关闭此窗口”的屏蔽方法(JavaScript)
- 在js中添加信任站点,禁用xinxp弹出窗口阻止程序,修改IE ActiveX安全设置
- 个人电脑详细的安全设置方法
- pl/sql 登陆以后 不显示Connections窗口的设置方法
- 最强的windows2003安全设置
- QTP提示"当前安全设置禁止安全运行该页中的activeX控件"的解决方法
- Win10怎么自定义窗口颜色?利用控制面板颜色和外观设置窗口颜色的方法
- Windows2003服务器安全配置连载(一、端口设置)
- WINDOWS2003服务器的安全设置
- windows server 2008 IE增强的安全配置关闭方法
- Qt 之 设置窗口边框的圆角(使用QSS和PaintEvent两种方法)