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

(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. php 数字变汉字

    //数字变汉字 function getTheWord($num) { $arr_n = array('零', '一', '二', '三', '四', '五', '六', '七', '八', '九', ...

  2. phpStudy集成环境下 安装composer

    报错提示: The "https://getcomposer.org/versions" file could not be downloaded: failed to open  ...

  3. Logger级别和输出的地方

    转载自http://blog.csdn.net/u014756827/article/details/52475990 log4j日志配置 关键字: apache log4j 1.配置根Logger: ...

  4. Android系统更新防互刷功能实现与分析【转】

    本文转载自:https://blog.csdn.net/huangyabin001/article/details/44465145 版权声明:本文为博主原创文章,未经博主允许不得转载.    htt ...

  5. linux内核中宏likely和unlikely到底做了些什么?

    1. 先看看它们长啥样吧!(它们有两种定义,第一种是使能了程序trace功能的宏定义,第二种是普通的宏定义,咱们分析普通宏定义吧) # define likely(x) __builtin_expec ...

  6. tp剩余未验证内容-4

    关于pop-up被blocked的问题 首先 这个pop-up的功能叫 popup blocker , 它是浏览器(包括ff, chrome等) 自身 所内置 的一个功能, 不是 安装的外部 插件/或 ...

  7. MySQL 命令操作数据表

    MySQL 命令操作数据表 1.查看表信息 desc hs_user_credit_info; 2.新增表字段 alter table hs_credit_order add search_relat ...

  8. 【bzoj1706】[usaco2007 Nov]relays 奶牛接力跑

    题意 给出一张无向图,求出恰巧经过n条边的最短路. 题解 考虑先离散化,那么点的个数只会有202个最多.于是复杂度里面就可以有一个\(n^3\).考虑构造矩阵\(d^1\)表示经过一条边的最短路,那么 ...

  9. 剥开比原看代码03:比原是如何监听p2p端口的

    作者:freewind 比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchai ...

  10. to do list_hadoop

    1.页面翻译 2.UI优化 vue.js reactive.js 3.Hadoop生态学习 Spark.Kafka.Druid……