在实际应用中需要在一个进程启动另外一个进程,可以将子进程的路径写入注册表中,然后主进程读取注册表中子进程路径,启动子进程,并以命令行参数的形式传入参数,启动子进程。具体实现方式如下

(1)      子进程通过bat文件将路径写入注册表

reg add "HKEY_CLASSES_ROOT\btoolpplayerprotocol\shell\open\command" /t REG_SZ /d "\"%~dp0btoolpplayer.exe\" \"%%1\"" /f

/v表示名称,这里没有说明是默认值

/t表示类型

/d表示值

%cd%代表的是当前工作目录(current working directory,variable);

%~dp0代表的是当前批处理文件所在完整目录(the batch file's directory,fixed)。

(2)       主进程访问注册表读取路径信息

这里可以直接加入键名称,然后直接根据键名称访问键值,下面是遍历获取exe,不太合适。

QSettings reg("HKEY_CLASSES_ROOT\\btoolpplayerprotocol\\shell\\open\\command", QSettings::NativeFormat);

QStringList keyList = reg.childKeys();

QString location = "";

foreach(QString key, keyList)

{

QString slocation = reg.value(key).toString();

if (slocation!="" || slocation.contains("exe", Qt::CaseSensitive))

{

location = slocation;

break;

}

}

(3)      采用process访问进程

int index = location.indexOf("exe", 0);

index += 3;

location = location.mid(1, index-1);

QStringList Qstringlist;

Qstringlist << csCmd;

QProcess process;

LOGIC_TRACE("start paltplayer begin! ");

process.startDetached(location, Qstringlist);//分离

       LOGIC_TRACE("start paltplayer end! ");

(4)       bat从注册表中将键值删除

reg delete "HKEY_CLASSES_ROOT\btoolpplayerprotocol" /f

Qt访问注册表并调用子进程的更多相关文章

  1. 关于64位操作系统使用C#访问注册表失败的问题

    通过C#的注册表类 Registry.GetValue 进行访问时,其返回值一直为空.然后认真检查检查再检查了注册表路径,发现路径没有一点问题,不说废话,上代码: if (Registry.GetVa ...

  2. IIS 发表web 之后,访问注册表项失败得问题

    错误: 对注册表项“HKEY_LOCAL_MACHINE\SOFTWARE\xx\xxxx\xxxxx”的访问被拒绝. 解决办法: 打开IIS,找到应用程序池,然后找到自己web使用得程序池,右键高级 ...

  3. 解决EP拒绝访问注册表Global键的的问题

    问题描述   打开EP站点时出现如下Error: Message: An unhandled error has occurred. To view details about this error, ...

  4. 关于QT写注册表开机自启动

    注册表中权限: 1.HKEY_CURRENT_USER 2.HKEY_LOCAL_MACHINE 网上有很多帖子都是用的2,其实这样有违用户权限,而且如果不是管理员用户,会写入不成功! 代码如下: Q ...

  5. 调用Windows属性窗口(居然是通过注册表来调用的)

    简述 在Windows系统下.可以通过:右键 -> 属性,来查看文件/文件夹对应的属性信息,包括:常规.安全.详细信息等. 简述 共有类型 共有类型 首先,需要包含头文件: #include & ...

  6. 这种方法在受到.NET版本和访问注册表权限时,是最佳解决方案,虽然代码看起来很多,不过下面的类直接拿走用就可以了。

    public class FileContentType  {      private static IDictionary<string, string> _mappings = ne ...

  7. 64位系统访问注册表SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

    public int ChecNonkWoW64() { try { ; string subKey = @"SOFTWARE\Microsoft\Windows\CurrentVersio ...

  8. inno安装客户端,写注册表url调用客户端

    [Registry] Root: HKCR; SubKey: xxx; ValueData: "xxx"; ValueType: string; Flags: CreateValu ...

  9. 利用C#访问注册表获取软件的安装路径

    文章地址:https://blog.csdn.net/yl2isoft/article/details/17332139

随机推荐

  1. Python 操作 mysql数据库的一个小小的基础案例,小白新手,以备后用~~

    model.py 中的代码 # Create your models here. # 书和作者一对多 class Author(models.Model): name = models.CharFie ...

  2. 阶段性总结(2017 June 10 - 2017 July 10)

    综述 我在全面剖析了自身的特质以后,针对于工程技术领域的经验丰富优势.科学研究领域的理论薄弱劣势.我制定了全面夯实科学研究理论基础的学习计划.全面提高效率抓大放小的精力分配原则. 执行成果 线性代数( ...

  3. Java1的内容(学期总结)

  4. 盒子总结,文本属性操作,reset操作,高级选择器,高级选择器优先级,边界圆角(了解),a标签的四大伪类,背景图片操作,背景图片之精灵图

    盒子总结 ''' block: 设置宽高 1.没有设置宽,宽自适应父级的宽(子级的border+padding+width=父级的width) 2.没有设置高,高由内容撑开 设置了宽高 一定采用设置的 ...

  5. 【python37--面向对象】

    一. self是什么 绑定方法,self就是实例对象的唯一标志 >>> class Ball: def setName(self,name): self.name = name de ...

  6. 【BZOJ4872】分手是祝愿

    分手是祝愿 [题目大意] 有n 个灯,每个灯有两个状态亮和灭,我们用 1 来表示这个灯是亮的,用 0 表示这个灯是灭的,操作第 i 个开关时,所有编号为 i 的约数(包括 1 和 i)的灯的状态都会被 ...

  7. POJ 2387 Til the Cows Come Home 【最短路SPFA】

    Til the Cows Come Home Description Bessie is out in the field and wants to get back to the barn to g ...

  8. 【拼接属性查询方式】MySql某一列属性值为拼接时的查询方式

    数据库中某一列的值为 使用IN查询是无法查询到数据的,只能查询到IN(2)或者IN(2,3)  查询结果: , style_id) 正确方式:使用FIND_IN_SET函数 , style_id) , ...

  9. html 之 padding,margin

    margin:对象挤压外界 padding:对象挤压自身 例如: td使用margin 对table而言没有任何效果,但使用padding是对table内部的挤压,若是table空间不够,则会扩大ta ...

  10. tomcat使用spring-loaded实现应用热部署

    springloaded官方说明: Spring Loaded is a JVM agent for reloading class file changes whilst a JVM is runn ...