C/C++:Windows编程—代码实现IE保护模式的关闭和开启
前言
最近項目有需求需要通過程序實現了IE保護模式的關閉,自己網上查了下,關于IE的很多設置都可以通過修改IE相關的注冊表來實現的。這里我們只要熟悉注冊表的操作就可以了。
--------------------------------------------------20190713 補充說明-----------------------------------------------------
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
https://docs.microsoft.com/zh-cn/windows/desktop/api/winreg/nf-winreg-regqueryvalueexa
https://docs.microsoft.com/zh-cn/windows/desktop/api/winreg/nf-winreg-regsetvalueexa
代碼實現
主要就是上面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; }運行效果
剛開始是關閉的
運行程序,已經通過程序打開了。
總結
以上是生活随笔為你收集整理的C/C++:Windows编程—代码实现IE保护模式的关闭和开启的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab实现线性规划
- 下一篇: windows10环境下载labelIm