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++ 注册机软件,生成机器码和注册码,支持授权时间相关推荐

  1. Qt开发上位机软件建立经典蓝牙通讯

    Qt开发上位机软件建立经典蓝牙通讯 之前做了一个具有经典蓝牙通讯功能的Windows上位机软件,在网上学习了相关博客以及参考了官方经典蓝牙例程之后,总结出了使用Qt建立经典蓝牙通讯的步骤,附带相关源码 ...

  2. MyEclipse Enterprise Workbench 9.0 破解及注册机 注册码

    MyEclipse 9.0的激活机制终于破解了,破解步骤比老版本要复杂一些,但是是绝对可以破解的,这个破解对主程序无任何修改,只替换公钥,如果有牛人会快速从公钥反推私钥,那就什么都不用改了,步骤如下: ...

  3. 单机版简易考试系统开发过程讲解(C#注册机、用户注册、考试系统、×××全部源码)...

    前些日子有个朋友,找我做一个考试软件,浙江省驾驶员理论包考专用系统,总共也没几个页面需要做,但是他以前的数据库VFP的数据,题库里有几千条数据,若人工录入几乎比太可行,他把原来的软件,给我装好,还需要 ...

  4. myeclipse10注册机详细使用方法

    首先如果你没有该注册机软件的话先请下载:http://download.csdn.net/detail/u012963068/8127027(本人资源的下载地址,为了学习交流绝对免费不要积分的哦^_^ ...

  5. coreldraw x4离线激活_coreldraw x4怎么激活 coreldraw x4注册机使用方法

    很多用户在下载安装了 我们知道在安装coreldrawx4程序的时候是需要输入coreldraw注册码号才能顺利完成安装,本文小编就为大家推荐coreldraw注册机这款工具,那么coreldraw ...

  6. DbSchema注册机

    数据库ER图绘制工具(DbSchema) 8.1.8 官方版 软件下载地址:数据库ER图绘制工具(DbSchema)下载 8.1.8 官方版 - 河东下载站 注册机代码如下: /** DbSchema ...

  7. 单机版简易考试系统开发过程讲解(C#注册机、用户注册、考试系统、有偿提供全部源码)

    前些日子有个朋友,找我做一个考试软件,浙江省驾驶员理论包考专用系统,总共也没几个页面需要做,但是他以前的数据库VFP的数据,题库里有几千条数据,若人工录入几乎比太可行,他把原来的软件,给我装好,还需要 ...

  8. Flash Builder 4.7 注册机完美激活方法

    之前我是用到下面第二种替换 amtlib.dll的方法,就是用着用着,Flashbuilder的内在就直增加,就十分卡,然后不不得不重启Flashbuilder,经常惹得我拼命的砸键盘鼠标,一天之中至 ...

  9. [分享]发布自己C#开发的ReSharper2.0 for VS2003/2005 注册机

    ReSharper2.0 for VS2003/2005 最新注册机        ReSharper是一款微软Microsoft Visual Studio 2005 和Microsoft Visu ...

  10. SecureCRT 注册机使用方法

    不用说你肯定知道SecureCRT用途是什么,这个号称最好用的ssh连接工具却不是免费的,所以找了很久才找到最新版本的SecureCRT 7.3.4破解版,其实只要是SecureCRT 7.3.x版本 ...

最新文章

  1. python详细教程-Python入门教程:超详细1小时学会Python
  2. 采用DCO-OFDM的VLC系统
  3. 服务器对程序员来说意味着什么,此文带你来了解
  4. 趣学python3(23)-队列
  5. mysql数据库比较语句,六条比较有用的MySQL数据库操作的SQL语句小结
  6. 清空缓存的命令_最实用的6个网络命令,网络故障不求人
  7. Rosserial实现Windows-ROS交互操作
  8. Git学习总结(2)——初识 GitHub
  9. 如何下载Discuz
  10. 2020年中国科技核心期刊目录(自然科学卷)
  11. Mysql(二)Mysql SQL练习题
  12. Xshell7 和 Xftp7 免费下载安装
  13. html海报源码,8款好用的Html5海报制作工具,让你一分钟做出风靡朋友圈海报
  14. 怎样计算机表格中算出平均值,怎样设置excel自动计算平均值
  15. 移除元素---2022/03/16
  16. Elasticsearch常见搜索方法的实现
  17. python下载歌曲教程视频_实现python批量下载网易云音乐的免费音乐
  18. CS61A Lab 12
  19. 7-3 最长公共前后缀
  20. 龙华区3·15消费知识在线通关

热门文章

  1. 通过js打开浏览器独立的页面
  2. web前端笔试题整合
  3. 基于udp端口转发程序设计(一)
  4. oracle单纯的sql能写循环吗,循环执行sql语句
  5. (八)、MultipartFile
  6. CentOS7 安装aria2
  7. NLP、CV、语音相关AI算法工程师面试问题、代码、简历模板、知识点等资源整理分享
  8. xshell6和xftp6的安装
  9. 三大电商(淘宝、京东、拼多多)开放平台 服务市场 过程中常用文件和注意事项(PRD,MRD)
  10. Xmind8 下载与破解激活教程