日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C/C++:Windows编程—代码实现IE保护模式的关闭和开启

發布時間:2025/3/15 c/c++ 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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
  • 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; }

    運行效果

    剛開始是關閉的

    運行程序,已經通過程序打開了。

    總結

    以上是生活随笔為你收集整理的C/C++:Windows编程—代码实现IE保护模式的关闭和开启的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。