使用vc mfc做window开发,涉及网络http之类的,程序可能会要求修改本机一些Internet选项,可通过修改注册表的形式来达到目的。
比如说要修改高级中的“使用TLS1.0”、“使用TLS1.1”、“使用TLS1.2”
当前默认未勾选,我们可以先打开注册表(win+r输入regedgit),找到路径\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings,然后右键导出为reg。然后再回到Internet选项勾选上上面三个选项,然后重新导出reg。
通过对比工具,可以发现两份reg文件中,主要区别在于SecureProtocols的值。因此,我们可以通过vc代码来修改这个值,以达到我们的目的。
HKEY hKey;
CString subkey = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Internet Settings");
if (RegOpenKeyEx(HKEY_CURRENT_USER, subkey, 0, KEY_ALL_ACCESS, &hKey)){
AfxMessageBox(_T("打开注册表失败!"));
return;
}
CString itemname = _T("SecureProtocols");
DWORD val = 2728;
if (RegSetValueEx(hKey, itemname, 0, REG_DWORD, (BYTE*)&val, sizeof(DWORD))){
AfxMessageBox(_T("修改注册表失败!"));
return;
}
RegFlushKey(hKey);
DWORD dwType = REG_DWORD;
DWORD dwSize = sizeof(DWORD);
DWORD data;
if (RegQueryValueEx(hKey, itemname, NULL, &dwType, (LPBYTE)&data, &dwSize)){
AfxMessageBox(_T("获取注册表失败!"));
RegCloseKey(hKey);
return;
}else{
RegCloseKey(hKey);
}