- //引用網上的一篇文章進行的修改 ,2003的所在註冊表位置和其他的系統位置不同
- //hkey 是註冊表主鍵,如HKEY_LOCAL_MACHINE,szUrl爲IP地址(原文中有域名的添加方法,這裏去掉了)
- BOOL VengFuncConfig::SetTrustfulUrl(HKEY hKey, TCHAR *szUrl, DWORD dwType,BOOL IsWindow2003)
- {
- HKEY hkResult;
- int rc = 0;
- TCHAR szProtocol[MAX_PATH] = {0};
- TCHAR szRegPath[MAX_PATH] = {0};
- lstrcpy(szProtocol, _T("*"));
- //lstrcpy(szProtocol, _T("http"));
- CString cQueryIERegName = (IsWindow2003?_T("EscRanges"):_T("Ranges"));
- //判斷是IP還是域名
- //IP類站點添加
- DWORD dwKeys = 0;
- wsprintf(szRegPath, _T("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ZoneMap\\%s"),cQueryIERegName);
- rc = RegCreateKey(hKey, szRegPath, &hkResult);
- //先獲取該key下有多少個項
- rc = RegQueryInfoKey(hkResult, NULL, NULL, NULL, &dwKeys, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
- RegCloseKey(hkResult);
- hkResult = NULL;
- if (rc != ERROR_SUCCESS)
- {
- return FALSE;
- }
- else
- {
- //查詢當前的遠程服務器IP是否加入了IE的受信任列表中
- wsprintf(szRegPath, _T("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ZoneMap\\%s\\Range%d"),cQueryIERegName ,dwKeys+10 -1);
- CString cHostIP = ReadCfg(_T(":Range"),szRegPath);
- if ( !cHostIP.CompareNoCase(szUrl) )
- {
- return FALSE;
- }
- wsprintf(szRegPath, _T("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ZoneMap\\%s\\Range%d"),cQueryIERegName, dwKeys+10);
- rc = RegCreateKey(hKey, szRegPath, &hkResult);
- //必須要先創建DWORD值,再創建字符串值,否則不能在Internet選項中信任站點列表中顯示
- RegSetValueEx(hkResult, szProtocol, NULL, REG_DWORD, (BYTE *)&dwType, sizeof(DWORD));
- RegSetValueEx(hkResult, _T(":Range"), NULL, REG_SZ, (LPBYTE)szUrl, (lstrlen(szUrl)+1)*sizeof(TCHAR));
- RegCloseKey(hkResult);
- //使註冊表修改立即生效
- //SystemParametersInfo(SPI_SETCURSORS,0,NULL,SPIF_SENDCHANGE || SPIF_UPDATEINIFILE);
- SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0);
- hkResult = NULL;
- }
- return TRUE;
- }