亲爱的老铁们,大家好,今天我就和大家分享一下Qt写密钥生成器。 应用演示及其一些问题知识,希望对大家有所帮助。如果能帮到大家,请关注收藏本网站。你的支持是我们最大的动力。谢谢大家。让我们开始吧!
在很多商业软件中,需要提交一些可以用于试运行的版本,这需要一个匹配的密钥系统来控制。纵观大多数试用软件,基本上都是通过以下系统来控制的。
1:这种方法是最完美的,比如远程网络激活,每次启动网络查询的使用时间等等。缺点是不能连接网络的设备将停止运行。
2:得到当地的硬盘 计算CPU等硬件的总数,生成激活码。超过一半的软件将使用这种方法。缺点是你不能随意控制软件的很多参数,比如添加到软件中的设备数量。操作。
3:设定过期操作时间 数量限制 运行时间的密钥文件,发送给客户在配套手机中应用。缺点是,如果只设定过期操作时间,客户可以更改计算机时间以得到更久的使用时间,即计算机未连接互联网时。
使用第三种方法来实现这个demo。使用最简单的不同或加密密钥文件,您可以独立更改为其它加密算法。
2. 实现的功能
能控制软件的使用时间。
能控制软件的运行时间。
可以控制设备的总数。
服务可以在这个工具上启动和停止。
你可以检查它重启了多少次。
可以清除复位重启频率。
3、效果图
4.完整代码
#include 'frmmain.h' #include 'ui_frmmain.h' #include 'qmessagebox.h' #include 'qfile.h' #include 'qprocess.h' #include 'qdebug.h'frmMain:frmMain(QWidget parent) : QWidget (父), ui(new Ui:frmMain){ ui-setupUi(this); this-initForm(); qDebug() this-getCpuName() this-getCpuId() this-getDiskNum();}frmMain:~frmMain(){ 删掉ui;}void frmMain:initForm(){ QStringList min;分钟'1''5''10''20''30'; for (int i=1; i=24; i ) { min QString:number(i 60); ui-cboxMin-addItems(min); ui-cboxMin-setCurrentIndex(1); ui-dateEdit-setDate(QDate:currentDate()); for (int i=5; i=150; i=i 5) { ui- cboxCount-addItem(QString('%1').arg(i)); }}QString frmMain:getWMIC(const QString cmd){ //获得cpu名称: wmic cpu get Name //获得cpu核心数: wmic cpu get NumberOfCores //获得cpu线程数: wmic cpu get NumberOfLogicalProcessors //查看cpu系列号:wmic cpu getprocessorid //查看主板系列号:wmicbaseboardgetserialnumber //查看BIOS系列号:wmicbiosgetserialnumber //检查硬盘:wmicdiskdrivegetserialnumber QProcess p; p.start(cmd); p.waitForFinished(); QString 结果=QString:8al8fromLocalBit(p.readAllStandardOutput()); QStringList list=cmd.split(' ');结果=result.remove(list.last(), Qt:CaseInsensitive);结果=result.replace('r', '');结果=result.replace('n', '');结果=result.simplified(); return result;}QString frmMain:getCpuName (){ return getWMIC('wmic cpu 得到一个名字');}QString frmMain:getCpuId(){ return getWMIC('wmic cpu 获得Cpuid');}QString frmMain:getDiskNum(){ return getWMIC('wmic 磁盘驱动的地理位置index=0 get serialnumber' );}QString frmMain:getXorEncryptDecrypt(const QString data, char key){ //应用不同或加密,QByteArray可以自己改变算法。 buffer=data.toLatin1(); int 尺寸=buffer.size(); for (int i=0 ; i 尺寸; i ) { buffer[i]=buffer.at(i) ^ key; } return QLatin1String(buffer);}void frmMain:on_btnOk_clicked(){ bool useDate=ui-ckDate-isChecked(); bool useRun=ui- ckRun-isChecked(); bool useCount=ui-ckCount-isChecked(); if (!useDate !useDate !useRun !useCount) { if (QMessageBox:question(this, 'Question', '你确定要生成没有任何限制的钥匙吗?' ) !=QMessageBox:Yes) { return; } QString strDate=ui-dateEdit-date().toString('yyyy-MM-dd'); QString strRun=ui-cboxMin-currentText(); QString strCount=ui-cboxCount- currentText(); QString key=QString('%|1|%2|%3|%4|%5|%6').arg(useDate).arg(strDate).arg(useRun).arg(strRun)。 arg(useCount).arg(strCount); QFile 文档(QApplication:applicationDirPath() '/key.db');文档.open(QFile:WriteOnly | QIODevice:Text); file.write(getXorEncryptDecrypt(key, 110).toLatin1());文档.close(); QMessageBox:information(this, '提醒', '钥匙生成成功,只需将钥匙生成。.将db文件复制到相应的目录中!');}void frmMain:on_btnClose_clicked(){ this-close();}
Copyright © 2011-2022 玩豆豆_玩游戏找WanDouDou.com All rights reserved. ICP备案号:浙ICP备20010431号
抵制不良网页游戏,拒绝盗版游戏。 注意自我保护,谨防受骗上当。 适度游戏益脑,沉迷游戏伤身。 合理安排时间,享受健康生活。