w11修改ie保护模式方法
IE安全设置下有4个区域 对应的设置在不同的注册表中。
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\1] 是Local intranet相关操作,如果要修改受Local intranet 下的保护模式设置,请修改该项下的键2500
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2] 是受信任的站点相关操作,如果要修改受信任站点 下的保护模式设置,请修改该项下的键2500
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3] 是Intranet相关操作,如果要修改Intranet下的保护模式设置,请修改该项下的键2500
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\4] 是受限制的站点相关操作,如果要修改受限制的站点下的保护模式设置,请修改该项下的键2500
IE保护模式通过修改下面这个注册表项即可,[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3]
2500 = 0x0 (开启),0x3(关闭)。
这里介绍下操作注册表的 几个Windows API函数
打开注册表
https://docs.microsoft.com/zh-cn/windows/desktop/api/winreg/nf-winreg-regopenkeyexa
LONG WINAPI RegOpenKeyEx(
_In_ HKEY hKey,
_In_opt_ LPCTSTR lpSubKey,
_In_ DWORD ulOptions,
_In_ REGSAM samDesired,
_Out_ PHKEY phkResult
);
查找注册表项的值
https://docs.microsoft.com/zh-cn/windows/desktop/api/winreg/nf-winreg-regqueryvalueexa
LONG WINAPI RegQueryValueEx(
_In_ HKEY hKey,
_In_opt_ LPCTSTR lpValueName,
_Reserved_ LPDWORD lpReserved,
_Out_opt_ LPDWORD lpType,
_Out_opt_ LPBYTE lpData,
_Inout_opt_ LPDWORD lpcbData
);
设置注册表项的值
https://docs.microsoft.com/zh-cn/windows/desktop/api/winreg/nf-winreg-regsetvalueexa
LONG WINAPI RegSetValueEx(
_In_ HKEY hKey,
_In_opt_ LPCTSTR lpValueName,
_Reserved_ DWORD Reserved,
_In_ DWORD dwType,
_In_ const BYTE *lpData,
_In_ DWORD cbData
);
代码实现
主要就是上面3个Windows API 函数的实现,下面直接看代码实现吧。直接用devc++ 编译运行即可。
#include <Windows.h>
#include <stdio.h>
bool checkIEProtectMode()
{
HKEY hKEY;
if ( ERROR_SUCCESS == ::RegOpenKeyEx( HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\3", 0, KEY_QUERY_VALUE, &hKEY ) )
{
DWORD PerfData = 0;
DWORD m_type = REG_DWORD;
DWORD BufferSize = sizeof(DWORD);
if ( ERROR_SUCCESS == RegQueryValueEx( hKEY, "2500", NULL, &m_type, (LPBYTE)&PerfData, &BufferSize ) )
{
if ( PerfData == 3 )
{
printf("IE保护模式当前状态:关闭\n");
RegCloseKey( hKEY );
return false;
}
}
}
RegCloseKey( hKEY );
printf("IE保护模式当前状态:打开\n");
return true;
}
bool openIEProtectMode()
{
HKEY hKEY;
if ( ERROR_SUCCESS == ::RegOpenKeyEx( HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\3", 0, KEY_ALL_ACCESS, &hKEY ) )
{
DWORD m_Dword = 0;
if( ERROR_SUCCESS == ::RegSetValueEx( hKEY,"2500",0,REG_DWORD,(PBYTE)&m_Dword,sizeof(DWORD)) )
{
printf("打开IE保护模式成功!\n");
return true;
}
}
RegCloseKey( hKEY );
printf("打开IE保护模式失败!\n");
return false;
}
bool closeIEProtectMode()
{
HKEY hKEY;
if ( ERROR_SUCCESS == ::RegOpenKeyEx( HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\3", 0, KEY_ALL_ACCESS, &hKEY ) )
{
DWORD m_Dword = 3;
if( ERROR_SUCCESS == ::RegSetValueEx( hKEY,"2500",0,REG_DWORD,(PBYTE)&m_Dword,sizeof(DWORD)) )
{
printf("关闭IE保护模式成功!\n");
return true;
}
}
RegCloseKey( hKEY );
printf("关闭IE保护模式失败!\n");
return false;
}
int main(int args, char** argv)
{
if (checkIEProtectMode() )
{
closeIEProtectMode();
checkIEProtectMode();
} else
{
openIEProtectMode();
checkIEProtectMode();
}
return 0;
}
运行效果
刚开始是关闭的
运行程序,已经通过程序打开了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了