QT-C++ 注册机软件,生成机器码和注册码,支持授权时间
QT-C++ 注册机软件,生成机器码和注册码,支持授权时间
- 前言
- 一、效果演示
- 二、关键代码
- 1.获取计算机硬件信息
- 2.应用层调用
- 程序链接
前言
1、编译环境:
本程序使用的编译环境是QT5.12.0和VS2017,如果你安装环境不用,你可以通过阅读里面的程序代码,进行代码有效的提取,然后你再自己创建工程进行编译使用。
2、基本描述:
通过获取计算机的硬件信息,然后通过加密组成,生成每个计算机的唯一机器码,类似的方式,按照内部定义的规则,生成相应的组册码。
一、效果演示
二、关键代码
1.获取计算机硬件信息
获取本地计算机的一些基本信息,这样来构成每个机器码的唯一性。
// 获取计算机的CPU的ID
QString HardwareInfo::getCPUId()
{QString strCpuId = "";unsigned int dwBuf[4] = { 0 };unsigned long long ret = 0;__cpuid((int*)(void*)dwBuf, 1);ret = dwBuf[3];ret = ret << 32;QString str0 = QString::number(dwBuf[3], 16).toUpper();QString str0_1 = str0.rightJustified(8, '0');QString str1 = QString::number(dwBuf[0], 16).toUpper();QString str1_1 = str1.rightJustified(8, '0');strCpuId = str0_1 + str1_1;return strCpuId;
}// 获取计算机的MAC地址
QString HardwareInfo::getHostMacAddress()
{// 获取所有网络接口列表QList<QNetworkInterface> nets = QNetworkInterface::allInterfaces();int nCnt = nets.count();QString strMacAddr = "";for (int i = 0; i < nCnt; i++){// 如果此网络接口被激活并且正在运行并且不是回环地址,则就是我们需要找的Mac地址if (nets[i].flags().testFlag(QNetworkInterface::IsUp) && nets[i].flags().testFlag(QNetworkInterface::IsRunning) && !nets[i].flags().testFlag(QNetworkInterface::IsLoopBack)){strMacAddr = nets[i].hardwareAddress();break;}}return strMacAddr;
}// 获取计算机的IP地址
QString HardwareInfo::getHostIpAddress()
{QString strIpAddress;QList<QHostAddress> ipAddressesList = QNetworkInterface::allAddresses();// 获取第一个本主机的IPv4地址int nListSize = ipAddressesList.size();for (int i = 0; i < nListSize; ++i){if (ipAddressesList.at(i) != QHostAddress::LocalHost &&ipAddressesList.at(i).toIPv4Address()) {strIpAddress = ipAddressesList.at(i).toString();break;}}// 如果没有找到,则以本地IP地址为IPif (strIpAddress.isEmpty())strIpAddress = QHostAddress(QHostAddress::LocalHost).toString();return strIpAddress;
}
2.应用层调用
外部应用层进行逻辑功能的操作
#include "RegisterMachine.h"
#include "Md5Encode.h"
#include "HardwareInfo.h"#include <string.h>
#include <QClipboard>
#include <QSettings>
#include <QMessageBox>
#include <QInputDialog>RegisterMachine::RegisterMachine(QWidget *parent): QMainWindow(parent)
{ui.setupUi(this);initEvent();initUI();
}void RegisterMachine::initEvent()
{connect(ui.btnMachineCopy, &QPushButton::clicked, this, [&](){QClipboard *clip = QApplication::clipboard();clip->setText(ui.lineEditMachine->text());});connect(ui.btnRegisterCopy, &QPushButton::clicked, this, [&](){QClipboard *clip = QApplication::clipboard();clip->setText(ui.lineEditRegister->text());});connect(ui.btnCreateNumber, &QPushButton::clicked, this, [&](){// 生成注册码QString strMachineNum = ui.lineEditMachine->text();bool bForver = ui.checkBoxForever->checkState();if (strMachineNum.isEmpty())return;QDate endDate = ui.dateEdit->date();QString strDateTime("");if (bForver)strDateTime = QString("3022-01-01");// 一千年以后吧elsestrDateTime = endDate.toString("yyyy-MM-dd");QString strSplit = QString(";");QString strBefore = strMachineNum + strSplit + strDateTime;// 加个密转成注册码QString strAfter = HardwareInfo::crypto(strBefore);ui.lineEditRegister->setText(strAfter);});connect(ui.btnLocalMachineCopy, &QPushButton::clicked, this, [&](){QClipboard *clip = QApplication::clipboard();clip->setText(ui.lineEditLocalMachine->text());});}void RegisterMachine::initUI()
{QString strMachineCode = HardwareInfo::createMachineCode();ui.lineEditLocalMachine->setText(strMachineCode);ui.dateEdit->setDateTime(QDateTime::currentDateTime());ui.dateEdit->setCalendarPopup(true); this->setWindowIcon(QIcon(":/Resource/logo.png"));
}
程序链接
https://download.csdn.net/download/u013083044/86108002
QT-C++ 注册机软件,生成机器码和注册码,支持授权时间相关推荐
- Qt开发上位机软件建立经典蓝牙通讯
Qt开发上位机软件建立经典蓝牙通讯 之前做了一个具有经典蓝牙通讯功能的Windows上位机软件,在网上学习了相关博客以及参考了官方经典蓝牙例程之后,总结出了使用Qt建立经典蓝牙通讯的步骤,附带相关源码 ...
- MyEclipse Enterprise Workbench 9.0 破解及注册机 注册码
MyEclipse 9.0的激活机制终于破解了,破解步骤比老版本要复杂一些,但是是绝对可以破解的,这个破解对主程序无任何修改,只替换公钥,如果有牛人会快速从公钥反推私钥,那就什么都不用改了,步骤如下: ...
- 单机版简易考试系统开发过程讲解(C#注册机、用户注册、考试系统、×××全部源码)...
前些日子有个朋友,找我做一个考试软件,浙江省驾驶员理论包考专用系统,总共也没几个页面需要做,但是他以前的数据库VFP的数据,题库里有几千条数据,若人工录入几乎比太可行,他把原来的软件,给我装好,还需要 ...
- myeclipse10注册机详细使用方法
首先如果你没有该注册机软件的话先请下载:http://download.csdn.net/detail/u012963068/8127027(本人资源的下载地址,为了学习交流绝对免费不要积分的哦^_^ ...
- coreldraw x4离线激活_coreldraw x4怎么激活 coreldraw x4注册机使用方法
很多用户在下载安装了 我们知道在安装coreldrawx4程序的时候是需要输入coreldraw注册码号才能顺利完成安装,本文小编就为大家推荐coreldraw注册机这款工具,那么coreldraw ...
- DbSchema注册机
数据库ER图绘制工具(DbSchema) 8.1.8 官方版 软件下载地址:数据库ER图绘制工具(DbSchema)下载 8.1.8 官方版 - 河东下载站 注册机代码如下: /** DbSchema ...
- 单机版简易考试系统开发过程讲解(C#注册机、用户注册、考试系统、有偿提供全部源码)
前些日子有个朋友,找我做一个考试软件,浙江省驾驶员理论包考专用系统,总共也没几个页面需要做,但是他以前的数据库VFP的数据,题库里有几千条数据,若人工录入几乎比太可行,他把原来的软件,给我装好,还需要 ...
- Flash Builder 4.7 注册机完美激活方法
之前我是用到下面第二种替换 amtlib.dll的方法,就是用着用着,Flashbuilder的内在就直增加,就十分卡,然后不不得不重启Flashbuilder,经常惹得我拼命的砸键盘鼠标,一天之中至 ...
- [分享]发布自己C#开发的ReSharper2.0 for VS2003/2005 注册机
ReSharper2.0 for VS2003/2005 最新注册机 ReSharper是一款微软Microsoft Visual Studio 2005 和Microsoft Visu ...
- SecureCRT 注册机使用方法
不用说你肯定知道SecureCRT用途是什么,这个号称最好用的ssh连接工具却不是免费的,所以找了很久才找到最新版本的SecureCRT 7.3.4破解版,其实只要是SecureCRT 7.3.x版本 ...
最新文章
- python详细教程-Python入门教程:超详细1小时学会Python
- 采用DCO-OFDM的VLC系统
- 服务器对程序员来说意味着什么,此文带你来了解
- 趣学python3(23)-队列
- mysql数据库比较语句,六条比较有用的MySQL数据库操作的SQL语句小结
- 清空缓存的命令_最实用的6个网络命令,网络故障不求人
- Rosserial实现Windows-ROS交互操作
- Git学习总结(2)——初识 GitHub
- 如何下载Discuz
- 2020年中国科技核心期刊目录(自然科学卷)
- Mysql(二)Mysql SQL练习题
- Xshell7 和 Xftp7 免费下载安装
- html海报源码,8款好用的Html5海报制作工具,让你一分钟做出风靡朋友圈海报
- 怎样计算机表格中算出平均值,怎样设置excel自动计算平均值
- 移除元素---2022/03/16
- Elasticsearch常见搜索方法的实现
- python下载歌曲教程视频_实现python批量下载网易云音乐的免费音乐
- CS61A Lab 12
- 7-3 最长公共前后缀
- 龙华区3·15消费知识在线通关