win qt5程序开机自启动执行结果 与 双击运行执行结果 不一样



  • 开发环境 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文件
    

Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.