在wmic的项目pri文件中,先加上,include的相对路径 ![[Pasted image 20240802172401.png]] 然后,右键,开始添加,新文件 ![[Pasted image 20240802172505.png]] 选择 ![[Pasted image 20240802172540.png]] 命名WMIC即可 ![[Pasted image 20240803154722.png]] 头文件相关,声明result函数,是基于wmic命令行,得到计算机硬件信息的相关结果,而声明的fingerprint函数,是设备指纹,也就是每台设备的,唯一标识; 后续可以,用来做加密和通行证处理; UUID是识别码,而OS相关,是操作系统和版本信息; ![[Pasted image 20240802172719.png]] GPU相关 ![[Pasted image 20240802173117.png]] CPU和网卡相关 ![[Pasted image 20240802173132.png]] 磁盘相关,还有总物理内存 ![[Pasted image 20240802173149.png]] 来到cpp源文件,include需要引用到的命名空间,是跟进程管理相关; 而result函数的实现,新建一个QProcess,然后开启wmic相关的指令,只是修改后续的args参数,进而获取到,不同的计算机硬件信息; ![[Pasted image 20240802173305.png]] 而list的函数实现,是可以支持,wmic生成字符,然后通过正则表达式相关,去切割和生成list字符容器; 后续磁盘信息获取,会使用到; ![[Pasted image 20240802173722.png]] 举例说明,打开windows的powershell控制台,直接输入,内置的shell指令,敲击回车 ``` shell wmic CSPRODUCT get UUID ``` ![[Pasted image 20240802173450.png]] 是可以得到,对应计算机硬件信息的,详情参考[[Windows WMIC命令使用详解]] ![[Pasted image 20240802173636.png]] 基于这个计算机的这个机制,实现其他功能逻辑; 获取UUID,OS系统相关的,操作系统和版本信息; ![[Pasted image 20240802173845.png]] GPU显卡相关 ![[Pasted image 20240802173935.png]] ![[Pasted image 20240802174010.png]] CPU相关 ![[Pasted image 20240802174029.png]] ![[Pasted image 20240802174051.png]] NIC网卡相关 ![[Pasted image 20240802174157.png]] DISKDRIVE物理磁盘相关,可以获取到,磁盘的list字符队列信息; ![[Pasted image 20240802174241.png]] ![[Pasted image 20240802174412.png]] 最后是计算机管理,总物理内存,还有设备指纹相关; 可以发现,fingerprint 设备指纹相关,是基于UUID 这个唯一ID,进行MD5码的哈希转换,得到的数值; ![[Pasted image 20240802174436.png]] 和WMIC类似,在相同目录下,也创建OpenSSL文件夹,还有OpenSSL的pri子项目文件,定义参考[[深入探索 OpenSSL:概念、原理、开发步骤、使用方法、使用场景及代码示例]] ![[Pasted image 20240803154903.png]] 然后,参考[[openssl功能整理]]完成oepnssl的工程引用,目录如下: bin包含dll动态库文件,lib文件夹包含,运行时lib相关,openssl文件夹中,包含需要被引用的.h头文件 ![[Pasted image 20240803154959.png]] ![[Pasted image 20240803155021.png]] 对应的pri子项目文件,也是完成includepath引用相对路径的设置,还有lib的引用关系,bin文件夹中包含的动态库dll文件,跟复制依赖库相关的; ![[Pasted image 20240803155107.png]] 回到dll.pro文件,添加pri子项目引用,保存修改,等待编译完成 ![[Pasted image 20240803155445.png]] 然后,回到OpenSSL子项目,右键,新建文件 ![[Pasted image 20240802184603.png]] ![[Pasted image 20240802184617.png]] ![[Pasted image 20240803155548.png]] 头文件,主要是,引用openssl库的头文件,还有加解密相关的声明 ![[Pasted image 20240802184702.png]] cpp源文件,相关的include引用,也是加密相关 ![[Pasted image 20240802184901.png]] 基于密钥,encrypt加密函数的实现逻辑 ![[Pasted image 20240802185019.png]] ![[Pasted image 20240802185113.png]] 也是基于密钥,decrypt解密函数的实现 ![[Pasted image 20240802185150.png]] ![[Pasted image 20240802185220.png]] GetLastError函数,错误码相关的实现,暂时用不上 ![[Pasted image 20240802185520.png]] Qt可以直接回到,欢迎界面,点击New,创建新工程 ![[Pasted image 20240803105609.png]] 直接选一个窗体即可 ![[Pasted image 20240803105636.png]] 是data数据相关的,命名为`dllData`; ![[Pasted image 20240803155832.png]] ![[Pasted image 20240803155854.png]] 编译器,选择64位即可 ![[Pasted image 20240803155915.png]] ![[Pasted image 20240803155940.png]]