win qt5程序开机自启动执行结果 与 双击运行执行结果 不一样
Unsolved
Chinese
-
开发环境 win10 qt 5 ,程序测试运行环境 win7 x64
注册表写入 HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 设置软件开机自启动
开机自启动执行结果 与 手动双击执行结果不一样?? 怎么破?简单的功能是 读取一个文件autoRun.dat的内容
若为1则返回true 若为0则返回false代码如下
//检测是否运行软件自动执行检测过程 bool autoDetect(void){ QString autoRunFileName= QString("autoRun.dat"); //读配置文件 如果autoRun.dat内容为1 进行下一步操作 QFilefile(autoRunFileName); if(!file.open(QFile::ReadOnly|QFile::Text)) qDebug() <<"can not open file"; QTextStream in(&file); QString contents = in.readAll(); qDebug() << "contents=" << contents; file.close(); bool ok; int autoRunFlag = contents.toInt(&ok, 10); // dec == 0, ok == false qDebug() << "autoRunFlag=" << autoRunFlag; if(1==autoRunFlag) { return true; } else{ return false; } return false; }
autoRun.dat中内容为1的情况下
结果 自启动读出的内容为空 返回0
而双击启动时返回正常 返回1,
请问是什么原因?该如何解决呢? -
感谢 @shasidaran大神 提出的解决方案
这样exe是靠相对路径寻找文件的。你双击时,exe与dat在同一个工作目录,所以正确执行。 而自动运行时,exe的工作目录是c:\windows\system32,与dat不在一个工作目录下,所以文件找不到。 所以你要用绝对路径寻找dat文件