Qt Forum

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Unsolved

    Update: Forum Guidelines & Code of Conduct

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

    Chinese
    1
    2
    1041
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Q
      qtLover123 last edited by

      开发环境 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,
      请问是什么原因?该如何解决呢?

      1 Reply Last reply Reply Quote 1
      • Q
        qtLover123 last edited by

        感谢 @shasidaran大神 提出的解决方案

        这样exe是靠相对路径寻找文件的。你双击时,exe与dat在同一个工作目录,所以正确执行。
        
        而自动运行时,exe的工作目录是c:\windows\system32,与dat不在一个工作目录下,所以文件找不到。
        
        所以你要用绝对路径寻找dat文件
        
        1 Reply Last reply Reply Quote 1
        • First post
          Last post