Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Chinese
  4. win qt5程序开机自启动执行结果 与 双击运行执行结果 不一样
Forum Updated to NodeBB v4.3 + New Features

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

Scheduled Pinned Locked Moved Unsolved Chinese
2 Posts 1 Posters 1.3k Views
  • 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 Offline
    Q Offline
    qtLover123
    wrote on last edited by
    #1

    开发环境 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
    1
    • Q Offline
      Q Offline
      qtLover123
      wrote on last edited by
      #2

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

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

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved