主要方法就是修改注册表:
#include "autorun.h" #include2、解决路径问题#include #include #include #define AUTO_RUN "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" AutoRun::AutoRun(bool isStart) { QSettings *settings = new QSettings(AUTO_RUN, QSettings::NativeFormat); QString application_name = QCoreApplication::applicationName();//获取应用名称 if(isStart) { QString appPath = QCoreApplication::applicationFilePath();//找到应用的目录 QString newPath = QDir::toNativeSeparators(appPath); //toNativeSeparators的意思是将"/"替换为"" settings->setValue(application_name, newPath); } else { settings->remove(application_name); } settings->deleteLater(); QString appPath = QCoreApplication::applicationDirPath(); QString newPath = QDir::toNativeSeparators(appPath); SetCurrentDirectoryA(newPath.toStdString().c_str()); }
最后三行代码是为了解决一个bug:
现象:生成的.exe文件,直接双击打开可以正常操作当前路径下的文件,但如果是开机自启动打开的该.exe文件,就会提示文件打不开;
原因:该方法是设置注册表,开机启动的文件路径为c:windowssystem32,与所需读写文件不在同一个目录;
解决办法:操作文件前执行以下三行代码即可。
QString appPath = QCoreApplication::applicationDirPath();
QString newPath = QDir::toNativeSeparators(appPath);
SetCurrentDirectoryA(newPath.toStdString().c_str());



