使用Qt自动注册Lav
Qt播放视频使用QMediaPlayer要注册Lav解码器,如果手动去注册,每次去使用管理员运行命令或者生成.bat文件都比较麻烦。
解决方法步骤如下:
一:编写注册Lav解码器脚本,并取消控制台的显示,生成.bat文件。
二:使用Bat to Exe将.bat文件转换为exe文件。
三:使用QSettings和QProcess进行注册。
实现步骤:
一:注册Lav脚本
/***-------------------------取消控制台显示-----------------------*****/
@echo off
:: BatchGotAdmin
REM --> Check for permissions
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
/***-----------------注册Lav-----------------------***/
cd/d %~dp0
regsvr32/s LAVAudio.ax
regsvr32/s LAVVideo.ax
regsvr32/s LAVSplitter.ax
pause
二:转换为exe(为了Qt进行进程调用)
以及在Bat to exe工具右边菜单栏有个选择是否显示窗口的,我这边是都进行选择了。
并选择不需要管理员权限,最近发现使用这个生成的.exe在360以及win10自带的病毒防护会识别为木马进行隔离 ....?...
查了一下,是因为使用这款工具是对软件进行upx加壳?具体的也没有深究,找个时间再研究下。。zzZ
三:自动注册
检测电脑是否已注册Lav,判断方法是从注册表CLSID去查找,但是不太确定是否得当,如果大家有好的方面,麻烦告知,
谢谢啦~
(1)、填写config文件进行判断,防止每次都要去查找注册表,影响性能。
config文件可以这样添加:
(0:表示未该电脑已注册;1:表示未注册)
将程序放到服务器上,此时config文件填写数据是0,用户自动下载后就会进行本机的检测,有就会置1,否则注册后置1。
(2)、Qt读取config文件:
void RegLav::ReadIniConfigure(QString& strConfigureName, const QString& strKey, QString& strValue)
{
QString strConfigureFile = QApplication::applicationDirPath() + "/";
strConfigureFile += strConfigureName;
QSettings sett(strConfigureFile, QSettings::IniFormat);
strValue = sett.value(strKey).toString();
}
(3)、Qt检测及注册
void RegLav::regeditLav()
{
//注册表项辨别
QSettings controls(QLatin1String("HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\CLSID\\{083863F1-70DE-11D0-BD40-00A0C911CE86}\\Instance\\"), QSettings::NativeFormat); //注册表controls.beginGroup(QLatin1String("/CLSID"));
QStringList clsids = controls.childGroups();
//遍历查找当前子项
for (int i = 0; i < clsids.size(); i++)
{
if (clsids.at(i) == "{171252A0-8820-4AFE-9DF8-5C92B2D66B04}")
{
m_bRegLav = true; //控制
break;
}
}
if (m_bRegLav == false)
{
QProcess lpr;
QDir lavDir(applicationDirPath());
QString lavPath = lavDir.absolutePath();
QString LavCtl = lavPath;
lavPath += "/lavRegedit.exe";
lpr.execute(lavPath); //QProcess启动外部程序,关于进程通信,找个时间再码下..zzZ
LavCtl += "/Config.ini";
QSettings sett(LavCtl, QSettings::IniFormat); //注册完后进行改变config固定键值,以防下次打开还需查找遍历注册。
sett.setValue("IsRegLav/regeditLav",1);
}
}
(4)、函数调用
具体的情况看你需要在哪边调用写好的函数。
如:其实构造函数
void RegLav::RegLav()
{
RegLav::ReadIniConfigure(QString("Config.ini"), QString("IsRegLav/regeditLav"), strLav);
if (strLav == "0")
{
regeditLav();
}
}
注意:.bat脚本转换的exe文件、lav解码器的三个ax文件及dll要放置的位置要让程序找得到,这里是放置于与主程序一起。
实现以上功能的程序,如果使用了Qt视频播放,而又需要注册Lav解码器可以参考下,菜鸡上路,实力有限,有更好的方法欢迎交流~
zzZ... zzZ...
使用Qt自动注册Lav相关推荐
- windows下ipv6 ddns 动态域名自动注册批处理 dynv6(服务方式,开机自动运行无需登录)
现在IPV6加速推进,几乎限量的地址资源,但是ipv6地址比V4难记忆多了nnds(动态域名)就显得很有必要. 网文 免费好用的IPv6之DDNS服务-Openwrt上dynv6的使用介绍 该网文详细 ...
- [AutoMapper]反射自动注册AutoMapper Profile
AutoMapper 帮我我们方便管理物件跟物件之间属性值格式转换 模型转换 这里有两个类别 UserInfoModel 当作我们从DB捞取出来模型资料 public class UserInfoMo ...
- 5 zabbix 添加host_运维监控实战篇,zabbix自动发现和自动注册图文详解
一.介绍 自动发现 Zabbix自动发现就是为了解决批量监控而设计的功能之一,什么是自动发现呢,简单来说就是Zabbix Server端可以基于设定的规则,自动批量的去发现局域网若干服务器,并自动把服 ...
- zabbix 自动注册发现
前段时间有人问我zabbix自动注册发现怎么搞?今天就写个博客简单演示下. zabbix的自动注册发现添加就在zabbix的报警添加动作那块,只是有个下拉按钮,其实也特别简单,看下图:组态-动作-自动 ...
- 在Zf2中实现Controller按照URL自动注册
为什么80%的码农都做不了架构师?>>> 在Zf2中,一般的情况下,在modules的的某个模块的controller目录下添加一个controller 文件,对应的需要在mo ...
- 网络编程 -- RPC实现原理 -- RPC -- 迭代版本V4 -- 远程方法调用 整合 Spring 自动注册...
网络编程 -- RPC实现原理 -- 目录 啦啦啦 V4--RPC -- 远程方法调用 + Spring 自动注册 服务提供商: 1. 配置 rpc04_server.xml 注入 服务提供商 rpc ...
- 自动注册 IIS6 的 MIME 类型
原文 自动注册 IIS6 的 MIME 类型 由于IIS5和IIS6有很多的MIME类型没有设置,其中还包括了FLV(video/x-flv),上篇文章描述了制作<IIS6 自动安装>,而 ...
- zabbix 监控项自动发现过滤_Zabbix监控之配置Linux自动发现与自动注册报警
1.关于linux客户端的部署上篇已经介绍不清楚的可以去看一下(Zabbix监控之agent和邮件报警配置) 1.1.一.配置自动发现: 1.1.1.1.1.打开Zabbix Web管理界面,创建Za ...
- Zabbix实战之客户端自动注册
Zabbix实战之客户端自动注册 一.自动注册与自动发现定义 二.修改客户端zabbix-agent2配置文件 三.检查配置文件修改内容 四.重启服务与验证通信 1.客户端重启服务 2.服务端验证和客 ...
最新文章
- Redis队列的应用
- creo JAVA_Creo 4.0二次开发工具框架搭建
- 《3ds Max疯狂设计学院》——1.5节怎样才能学好3ds Max,你要听好
- 【NOIP2007】第三题·守望者的逃离
- Linux驱动开发环境配置(内核源码树构造)
- 基于深度学习的图像分类Image classification with deep learning常用模型
- 微型计算机芯片总称,《计算机应用基础》2(G)在线作业答案
- 如何利用python在一个wen'dang'li_如何利用Python网络爬虫给自己跟朋友来一份穷游攻略!走到哪里穷到哪里的哦!...
- video 微信 标签层级过高_什么是微信小程序二级分销系统?如何玩转?
- windows修改远程桌面RDP连接数
- Git常用指令及功能总结
- FPGA学习笔记---用Quartus II生成输入输出框图
- 缺陷管理规范--bug管理流程
- 你和大厂 Offer 有多近?C 认证免费测试一波,提前备考大厂
- 企业软件开发商 Atlassian 紧急修复不慎泄露的0day,IBM Aspera 软件或受影响
- 运行vue init webpack vueTest时报错
- JSON使用时,注意0件和空。
- 编译OpenJDK8:[HotspotWrapper.gmk:45:/cygdrive/e/hub/openjdk/jdk8u/build/windows-x86_64-normal-server-
- python输入一系列的值_python中的input()和print()输入输出函数应用实例笔记
- 硬盘文件系统系列之FAT