QT-C++ 注册机软件,生成机器码和注册码,支持授权时间

这篇具有很好参考价值的文章主要介绍了QT-C++ 注册机软件,生成机器码和注册码,支持授权时间。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

1、编译环境:
本程序使用的编译环境是QT5.12.0和VS2017,如果你安装环境不用,你可以通过阅读里面的程序代码,进行代码有效的提取,然后你再自己创建工程进行编译使用。

2、基本描述:
通过获取计算机的硬件信息,然后通过加密组成,生成每个计算机的唯一机器码,类似的方式,按照内部定义的规则,生成相应的组册码。


一、效果演示

qt生成注册码,Qt,C++,qt,c++,ui

二、关键代码

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地址为IP
	if (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");// 一千年以后吧
		else
			strDateTime = 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文章来源地址https://www.toymoban.com/news/detail-516337.html

到了这里,关于QT-C++ 注册机软件,生成机器码和注册码,支持授权时间的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 欧拉系统,yum不可用;服务器检查结果:***信息***您的授权码是无效的,请获得正确的授权码来注册大云Linux操作系统。您可以使用‘bclinux-license -g‘命令获得机器码

    服务器检查结果: ***信息***您的授权码是无效的,请获得正确的授权码来注册大云Linux操作系统。您可以使用\\\'bclinux-license -g\\\'命令获得机器码,然后与我们联系帮您产生订阅从而获得正确的授权码。   rpm -qa | grep license rpm -e bclinux-license-manager-4.0-1.oe2203.bclinux.x86_64  ##卸载这个包

    2024年01月16日
    浏览(44)
  • 6.1 KMP算法搜索机器码

    KMP算法是一种高效的字符串匹配算法,它的核心思想是利用已经匹配成功的子串前缀的信息,避免重复匹配,从而达到提高匹配效率的目的。KMP算法的核心是构建模式串的前缀数组Next,Next数组的意义是:当模式串中的某个字符与主串中的某个字符失配时,Next数组记录了模式

    2024年02月08日
    浏览(33)
  • 金盾2016(正阳版)播放器机器码替换

    参考链接:金盾2016加密视频替换机器码实现多机播放_哔哩哔哩_bilibili 详解金盾2016替换机器码的几个关键步骤_fruits360的博客-CSDN博客_替换机器码 之前学习下载的视频,采用金盾加密,有机器码和播放密码,但是可能因为重装系统导致机器码变了,原来播放密码无法播放,通

    2023年04月09日
    浏览(109)
  • 封玩家IP和机器码以及解开被封的教程

    关于封玩家IP地址的方法,可能在十多年前的第一代传奇引擎上就有了,但封机器码的功能,是GOM以后才看到的,早先的引擎上面并没有这个功能,比如HERO或者LEG等,虽然十多年前就有,但还是有不少GM,在开服的过程中,遇到恶意玩家,不知道如何封掉,艾西今天分享一下

    2024年02月11日
    浏览(32)
  • qt-c++多窗口编程

    QMessageBox继承自QDialog,显示一个模态对话框。用于用户前台信息通知或询问用户问题,并且接收问题答案。 QDialog再Qt源码中,派生类往往都是一些在特定场合下使用的预设好的对话框窗口。这些窗口无需创建对象,直接使用静态成员函数弹窗,使用静态成员函数的返回值作为

    2024年01月24日
    浏览(33)
  • qt-C++笔记之打印所有发生的事件

    code review! 在Qt C++中,若要打印所有发生的事件,您可以通过重写 QObject 的 event 函数或者 QApplication 的 notify 函数来实现。这两个方法都可以截获事件循环中的事件,但是通常更推荐使用 notify 方法,因为它可以捕获到传递给任何对象的所有事件。 使用 QApplication 的 notify 方法

    2024年02月20日
    浏览(28)
  • qt-C++笔记之捕获鼠标滚轮事件并输出滚轮角度增量

    code review! 在WheelWidget类中,wheelEvent函数被重写。这个函数是QWidget的一个虚函数,用于处理鼠标滚轮事件。

    2024年02月19日
    浏览(27)
  • Dalsa线扫相机-二次开发-QT-C++ 可用Demo(一)

           Dalsa线扫描相机的二次开发,因为官方只有MFC和命令行版本的,我需要使用QT进行开发,于是自己花时间研究,然后写了一个,效果如下:         可能GIF动图有点模糊,在图片中,上面为实时画面,我使用的是4096*128分辨率,然后使用手机的闪光灯在相机旁边摇晃

    2024年02月05日
    浏览(76)
  • 通过注册表删除软件自动生成的设备和驱动器

    比如腾讯视频会自动生成一个\\\"腾讯视频(32位)\\\" 按下 \\\'win+R\\\' 进入 命令行 输入 ’regedit‘ 进入注册表 搜索 HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionExplorerMyComputerNameSpace 进入  找到腾讯视频的文件删除就行了

    2024年02月05日
    浏览(35)
  • qt-c++进阶1-window、linux下获取本机所有网卡ip信息、根据网卡名获取ip地址。

    例如:第一章 主要是通过qt-c++实现获取本机电脑的网卡信息或者是IP信息 总结c++获取本机网卡信息的方法 第一章:适用于windows操作系统、linux操作系统 用 QHostAddress 解析获取本机 IPV4地址 ; 用 QNetworkInterface 解析获取所有网关信息( IP地址(IPV4和IPV6) 、 子网掩码 、 广播地

    2024年02月13日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包