在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Qt上位機開發之如何讓自己的APP啟動與硬件信息綁定(Win端)

嵌入式應用研究院 ? 來源:嵌入式應用研究院 ? 作者:嵌入式應用研究院 ? 2022-10-24 09:29 ? 次閱讀

在工作中,為了方便項目調試,一般情況下我們都會選擇開發一個上位機來實現簡單的控制和數據讀取的功能;但是,這個工具僅限于研發人員使用。為了防止別有用心的測試或者其它人員將這個APP通過U盤的形式拷貝走然后到另外一臺電腦上運行,我們可以有以下兩種簡單的設計方案(以下內容默認用戶已了解QT上位機開發,故屏蔽許多細節):

(1)設計一個簡單的輸入密碼邏輯,當輸入密碼與自己設定的密碼匹配時,即進入軟件界面。這種方法比較簡單,也很容易被破解。

(2)提前通過另外一個軟件讀取本機的硬件信息(我們稱之為注冊機),然后通過某種編碼格式將該信息編碼為其它的格式并生成一個文件(將該文件放到系統較為隱蔽的目錄下)。當我們使用的APP打開時,按照約定格式打開并將該文件里的數據轉換為硬件信息,然后進行匹配,如果發現沒有該文件或者硬件信息不匹配,則提示軟件未注冊,否則,正常打開該軟件。

第一種方法比較簡單,初學QT應用編程的小白都可以很容易將它實現,我們就不多說了。我們重點來講解一下第二種方法的實現。

以下幾個命令可以在Window cmd上運行即可以看到對應的信息:

獲取cpu名稱
wmiccpugetName
獲取cpu核心數
wmiccpugetNumberOfCores
獲取cpu線程數
wmiccpugetNumberOfLogicalProcessors
查詢cpu序列號
wmiccpugetprocessorid
查詢主板序列號
wmicbaseboardgetserialnumber
查詢BIOS序列號
wmicbiosgetserialnumber
查看硬盤
wmicdiskdrivegetserialnumber

這是我的電腦硬件信息:

a63a16b2-52d3-11ed-a3b6-dac502259ad0.png

其中,CPU序列號是一個唯一的ID號,它是廠家在制造CPU的時候燒入到內部的。我在工作中主要使用這個來進行加密,當然你也可以使用其它的內容。接下來我們可以實現一個簡單的注冊機邏輯:

實現獲取硬件信息接口

將硬件信息經過Base64格式轉換

顯示Base64格式轉換為的結果

#include"mainwindow.h"
#include"ui_mainwindow.h"
#include

//獲取cpu名稱:wmic cpu get Name
//獲取cpu核心數:wmic cpu get NumberOfCores
//獲取cpu線程數:wmic cpu get NumberOfLogicalProcessors
//查詢cpu序列號:wmic cpu get processorid
//查詢主板序列號:wmic baseboard get serialnumber
//查詢BIOS序列號:wmic bios get serialnumber
//查看硬盤:wmic diskdrive get serialnumber
QStringMainWindow::getMachineInfo(constQString&cmd)
{
QProcessp;
p.start(cmd);
p.waitForFinished();
QStringresult=QString::fromLocal8Bit(p.readAllStandardOutput());
QStringListlist=cmd.split("");
result=result.remove(list.last(),Qt::CaseInsensitive);
result=result.replace("
","");
result=result.replace("
","");
result=result.simplified();
returnresult;
}

QByteArrayMainWindow::Encode(QByteArraydata)
{
returndata.toBase64();
}

MainWindow::MainWindow(QWidget*parent)
:QMainWindow(parent)
,ui(newUi::MainWindow)
{
ui->setupUi(this);
this->setWindowTitle("注冊機");
}

MainWindow::~MainWindow()
{
deleteui;
}


voidMainWindow::on_GenerateCode_clicked()
{
QStringCode=getMachineInfo("wmiccpugetprocessorid");
QFilefile("D:/Register.txt");
//打開文件,不存在則創建
file.open(QIODevice::ReadWrite|QIODevice::Text);
//寫入文件需要字符串為QByteArray格式
if(file.write(Encode(Code.toLatin1()))>0)
{
ui->CodeDisplay->setText(Encode(Code.toLatin1()));
QMessageBox::information(NULL,"提示","注冊成功",QMessageBox::Ok);
}
else
QMessageBox::information(NULL,"提示","注冊失敗",QMessageBox::Ok);
file.close();
}

編譯運行后,當我們點擊生成注冊碼時,則會顯示硬件信息通過Base64編碼的結果,如下所示:

a6f5e734-52d3-11ed-a3b6-dac502259ad0.png

a73026ce-52d3-11ed-a3b6-dac502259ad0.png

一個簡單的注冊機寫完以后,APP在加載運行的時候需要加上以下邏輯:

#include"mainwindow.h"
#include

#defineARRAY_SIZE(x)(sizeof(x)/sizeof(x[0]))

QStringgetMachineInfo(constQString&cmd)
{
QProcessp;
p.start(cmd);
p.waitForFinished();
QStringresult=QString::fromLocal8Bit(p.readAllStandardOutput());
QStringListlist=cmd.split("");
result=result.remove(list.last(),Qt::CaseInsensitive);
result=result.replace("
","");
result=result.replace("
","");
result=result.simplified();
returnresult;
}

intmain(intargc,char*argv[])
{
uint8_tRunFlag=0;
QByteArrayDecodeStr;
QStringCpuSerialNumber;
QApplicationa(argc,argv);
//1.獲取CPU序列號
CpuSerialNumber=getMachineInfo("wmiccpugetprocessorid");
//2.打開注冊碼文件,讀取加密字符串并進行匹配加密字符串
QFilefile("D:/Register.txt");
if(!file.open(QIODevice::ReadOnly))
{
QMessageBox::warning(NULL,"Error","注冊碼不存在,請導入注冊碼!",QMessageBox::Yes);
return-1;
}
else
{
//讀取文件所有的內存
QByteArrayEncodeStr=file.readAll();
//將讀取的內容進行解碼
DecodeStr=fromBase64(EncodeStr);
//將解碼的結果與當前PC的CPU序列號進行比較
QStringStr(DecodeStr);
if(0==Str.compare(CpuSerialNumber))
RunFlag=1;
}

//3.如果匹配成功,運行軟件
if(RunFlag)
{
MainWindoww;
w.show();
returna.exec();
}
else
{
QMessageBox::warning(NULL,"Error","注冊碼無效,請聯系廠商獲取注冊碼!",QMessageBox::Yes);
return-1;
}
return0;
}

實現注冊機更好的方案則可以直接將信息寫入注冊表,然后APP去注冊表中讀取相應的內容。關于硬件信息的加密和解密方式,用戶可以有其它的實現方法。

這里留一個問題,如何將APP啟動信息與其它平臺進行關聯呢?例如Qt ARM端、Mac端、Android端?

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Window
    +關注

    關注

    0

    文章

    82

    瀏覽量

    37305
  • 上位機
    +關注

    關注

    27

    文章

    945

    瀏覽量

    55006
  • Qt
    Qt
    +關注

    關注

    1

    文章

    308

    瀏覽量

    38066
  • 注冊機
    +關注

    關注

    9

    文章

    55

    瀏覽量

    23711

原文標題:Qt上位機開發之如何讓自己的APP啟動與硬件信息綁定(Win端)

文章出處:【微信號:嵌入式應用研究院,微信公眾號:嵌入式應用研究院】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    EtherCAT運動控制器上位開發Python+Qt(三):PDO配置與SDO讀寫

    PC上位Python+Qt混合編程實現PDO配置與SDO讀寫
    的頭像 發表于 08-21 15:56 ?1248次閱讀
    EtherCAT運動控制器<b class='flag-5'>上位</b><b class='flag-5'>機</b><b class='flag-5'>開發</b><b class='flag-5'>之</b>Python+<b class='flag-5'>Qt</b>(三):PDO配置與SDO讀寫

    QT從零開始作單片機上位-串口調試助手+波形顯示

    第一章 QT開發環境搭建及工程文件建立前言:筆者本想用codeblock+QT搭建一個上位開發
    發表于 01-12 19:13 ?20次下載
    <b class='flag-5'>QT</b>從零開始作單片機<b class='flag-5'>上位</b><b class='flag-5'>機</b>-串口調試助手+波形顯示

    基于QT的簡單的上位

    。同樣的,我們也從編寫一個簡單的基于QT上位來體會體會上位開發及認識認識
    發表于 05-08 10:57 ?18次下載
    基于<b class='flag-5'>QT</b>的簡單的<b class='flag-5'>上位</b><b class='flag-5'>機</b>

    QTQT上位串口編程

    QTQT上位串口編程 最近因為項目需要,需要用到上位,通過串口與
    發表于 05-08 10:02 ?25次下載
    <b class='flag-5'>QT</b>篇<b class='flag-5'>QT</b><b class='flag-5'>上位</b><b class='flag-5'>機</b>串口編程

    QT|編寫一個簡單的上位

    QT | 編寫一個簡單的上位 時間 :2023-03-19文章目錄QT | 編寫一個簡單的上位
    發表于 05-08 10:12 ?3次下載
    <b class='flag-5'>QT</b>|編寫一個簡單的<b class='flag-5'>上位</b><b class='flag-5'>機</b>

    VS上位開發曲線顯示

    、結束語剛剛接觸上位開發,單純是為了玩一下,淺度學習,關于曲線顯示的實現方法,網上的資料太雜,也很零碎,經過自己的一些摸索,終于實現了我想要的效果,算是邁出了第一步。寫博客記錄一下
    發表于 05-08 09:48 ?2次下載
    VS<b class='flag-5'>上位</b><b class='flag-5'>機</b><b class='flag-5'>開發</b><b class='flag-5'>之</b>曲線顯示

    QT實現簡單的上位軟件

    最近項目要求寫上位軟件,需要實現界面功能和串口讀寫。界面方面用過MFC(早忘記了),網上查閱資料后發現QT在5.1版本后有自帶的串口模塊,而且用QT實現簡單界面功能很容易上手(也就期
    發表于 05-08 09:54 ?4次下載
    <b class='flag-5'>QT</b>實現簡單的<b class='flag-5'>上位</b><b class='flag-5'>機</b>軟件

    STM32+ESP8266連接電腦Qt網絡上位——QT

    本文簡單介紹下手寫網絡調試器并連接ESP8266模塊 上篇 : STM32+ESP8266連接電腦Qt網絡上位——準備工作 目錄 一、部分Qt代碼及實現過程 二、實現過程——使用
    發表于 05-09 14:22 ?21次下載
    STM32+ESP8266連接電腦<b class='flag-5'>Qt</b>網絡<b class='flag-5'>上位</b><b class='flag-5'>機</b>——<b class='flag-5'>QT</b>篇

    基于Qt的簡單arduino上位

    準備工作 一塊esp8266,安裝arduinoIDE、Qt、navecate、mysql/**若沒有mysql可直接采用sqllist。 QT上位 通信協議采用UDP(TCP
    發表于 05-09 10:36 ?3次下載
    基于<b class='flag-5'>Qt</b>的簡單arduino<b class='flag-5'>上位</b><b class='flag-5'>機</b>

    QT設計風速儀上位實例

    本人之前所做項目需要使用風速儀進行風速檢測,市面上所購買的風速儀產品可以多通過串口與上位進行通信,為滿足后續需求且提高更高的靈活性,本人決定采用QT軟件自主開發風速儀
    發表于 05-10 09:41 ?1次下載
    <b class='flag-5'>QT</b>設計風速儀<b class='flag-5'>上位</b><b class='flag-5'>機</b>實例

    USB3.0開發bulkLoop上位程序

    USB3.0開發bulkLoop上位程序 一、開發測試軟件 硬件平臺:Cypress公司的C
    發表于 05-29 15:16 ?14次下載
    USB3.0<b class='flag-5'>開發</b><b class='flag-5'>之</b>bulkLoop<b class='flag-5'>上位</b><b class='flag-5'>機</b>程序

    STM32 IAP升級固件與上位例程

    本例程實現功能: 1、IAP固件程序實現固件APP搬移,跳轉至APP 2、APP固件程序實現自定義功能,接收上位下發的bin文件 3、
    發表于 05-29 16:26 ?19次下載
    STM32 IAP升級固件與<b class='flag-5'>上位</b><b class='flag-5'>機</b>例程

    QT上位開發串口助手(下)

    接著嵌入式QT上位開發串口助手(上)來完善一下串口助手的功能,上一篇博客已經實現了自動獲取的功能了。 首先要在頭文件里面包含一下頭文件
    發表于 05-29 16:49 ?2次下載
    <b class='flag-5'>QT</b><b class='flag-5'>上位</b><b class='flag-5'>機</b><b class='flag-5'>開發</b><b class='flag-5'>之</b>串口助手(下)

    Qt上位開發實戰案例

    Qt Creator是一個用于Qt開發的輕量級跨平臺集成開發環境。 Qt Creator可帶來兩大關鍵益處: 提供首個專為支持跨
    的頭像 發表于 03-13 12:31 ?2777次閱讀
    <b class='flag-5'>Qt</b><b class='flag-5'>上位</b><b class='flag-5'>機</b><b class='flag-5'>開發</b>實戰案例

    EtherCAT運動控制器上位Python+Qt(一):鏈接與單軸運動

    PC上位Python+Qt混合編程,助力智能制造高效開發
    的頭像 發表于 07-31 09:43 ?495次閱讀
    EtherCAT運動控制器<b class='flag-5'>上位</b><b class='flag-5'>機</b><b class='flag-5'>之</b>Python+<b class='flag-5'>Qt</b>(一):鏈接與單軸運動
    主站蜘蛛池模板: 一个人看aaaa免费中文 | 亚洲第一区视频在线观看 | 色香蕉在线视频 | 欧美视频精品一区二区三区 | 午夜三级网站 | 欧美性猛交xxxx | 久久婷婷午色综合夜啪 | 欧美亚洲天堂网 | 久操成人| 亚洲成人黄色 | 天天综合天天做天天综合 | 狠狠干夜夜操 | 国产精品成人一区二区 | 色婷婷六月丁香在线观看 | 国产农村妇女毛片精品久久 | 天天射天天操天天干 | 天堂资源在线种子资源 | 美女黄视频免费 | 91福利专区 | 色婷亚洲 | 日本三级网站在线观看 | 成人国产在线24小时播放视频 | 国产精品午夜自在在线精品 | 久久精品隔壁老王影院 | 中文天堂在线最新版在线www | 免费一级特黄 | 94在线| 男女性生动态免费视频 | 五月婷婷啪啪 | 一丝不遮视频免费观看 | 亚洲国产一区二区三区在线观看 | 欧美黄色片 一级片 | 免费播放欧美毛片欧美aaaaa | 久草成人在线视频 | 日本不卡视频一区二区 | 狠狠色噜噜狠狠狠狠米奇7777 | 色狠狠网 | 又粗又长又色又爽视频 | 午夜激情影视 | 婷婷激情在线 | 你懂的免费在线 |