打开HP SMART一直转圈
前言
之所以发布这篇文章,是因为在使用HP smart打印软件的时候老进不去,网上查了百度说是TLS没打开,所以我就按照百度的方法再IE中进行打开,但是老是过段时间就又不行了,不知道被那个东西给关闭了。索性我就写个程序在启动HP SMART软件前自动打开。
一、原理
直接上图分析
就是直接操作注册表,网上百度出来的都是win7的。所以只能自己去调式IE了.TLS的功能位数是用火绒程序注册表监控来测试IE浏览器而得出的。这是基于windows10系统的注册表路径。win7可自行百度。文章来源:https://www.toymoban.com/news/detail-538880.html
二、代码
#include <iostream>
#include<windows.h>
#include<tchar.h>
#include<sddl.h>
#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后重启软件即可正常进入文章来源地址https://www.toymoban.com/news/detail-538880.html
到了这里,关于C++ 启用或关闭TLS的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!