栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++ 启用或关闭TLS

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++ 启用或关闭TLS

C++ 启用或关闭TLS功能

文章目录
  • C++ 启用或关闭TLS功能
  • 前言
  • 一、原理
  • 二、代码
  • 三、测试


前言

之所以发布这篇文章,是因为在使用HP smart打印软件的时候老进不去,网上查了百度说是TLS没打开,所以我就按照百度的方法再IE中进行打开,但是老是过段时间就又不行了,不知道被那个东西给关闭了。索性我就写个程序在启动HP SMART软件前自动打开。

一、原理

直接上图分析

就是直接操作注册表,网上百度出来的都是win7的。所以只能自己去调式IE了.TLS的功能位数是用火绒程序注册表监控来测试IE浏览器而得出的。这是基于windows10系统的注册表路径。win7可自行百度。

二、代码
#include 
#include
#include
#include
#define TLS1_0	7
#define TLS1_1	9
#define TLS1_2	11
//得到登录用户的SID用于拼接注册表路径
BOOL  GetLoginSid(WCHAR ** curSID)
{
	BOOL ret = FALSE;
	HANDLE hToken;
	if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &hToken))
	{
		_tprintf(L"token打开失败n");
		return ret;
	}
	DWORD cbSize;
	SID* sid;
	TOKEN_USER* User;
	cbSize = 0;
	GetTokenInformation(hToken, TokenUser, NULL, 0, &cbSize);
	if (!cbSize)
	{
		_tprintf(L"token信息查询失败n");

		return ret;
	}
	User = (TOKEN_USER*)malloc(cbSize);
	GetTokenInformation(hToken, TokenUser, User, cbSize, &cbSize);
	
	ret=ConvertSidToStringSid(User->User.Sid, curSID);
	free(User);
	return ret;
}
BOOL RegTLSFunChange(WCHAR * curSID,DWORD bitIndex,BOOL open) {
	BOOL ret = FALSE;
	const HKEY key = HKEY_USERS;
	WCHAR subKey[128] = { 0 };
	const wchar_t* const subKeyAfter = L"\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings";
	wcscat_s(subKey, curSID);
	wcscat_s(subKey, subKeyAfter);
	const wchar_t* const valueName = L"SecureProtocols";
	DWORD result;
	DWORD retSize = sizeof(DWORD);
	RegGetValue(key,subKey,valueName,RRF_RT_DWORD,NULL,&result,&retSize);
	if(open)
		result = result | (1 << bitIndex);
	else
		result = result & ~(1 << bitIndex);
	HKEY openKey;
	RegOpenKeyEx(key, subKey, NULL, KEY_READ | KEY_WRITE, &openKey);
	if (RegSetValueEx(openKey, valueName, NULL, REG_DWORD, (BYTE*)&result, retSize) == ERROR_SUCCESS)
		ret = true;
	return true;
}
int main()
{
	setlocale(LC_ALL, ".utf8");
	WCHAR* curSID;
	GetLoginSid(&curSID);
	if (RegTLSFunChange(curSID, TLS1_2, TRUE))
		{
		_tprintf(L"注册表操作成功n");
		system("start HP-SMART:");
		}
	else
		_tprintf(L"注册表操失败n");

	system("pause");
}

三、测试

在关闭TLS1.2的时候,程序一直进不去。

启用TLS1.2后重启软件即可正常进入

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1022019.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号