。
。
。
。
。
。
。
。
1、这个是设置开启自动启动的代码
//这个是设置开启自动启动的代码
#define REG_RUN_MANAGE "HKEY_LOCAL_MACHINE\\SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Run"
//#define REG_RUN_MANAGE "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
//#define REG_RUN_MANAGE "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run"
//#define REG_RUN_MANAGE "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
//开机自启动功能的开关
QString application_name = QApplication::applicationName();
//QSettings *settings = new QSettings(REG_RUN_MANAGE, QSettings::NativeFormat);
QSettings *settings = new QSettings(REG_RUN_MANAGE, QSettings::Registry32Format);
if (option.AutoStart)
{
//QString application_path = QApplication::applicationFilePath();
//settings->setValue(application_name, application_path.replace("/", "\\"));
QString application_path = QDir::toNativeSeparators(QCoreApplication::applicationFilePath());
application_path.append("\"");
application_path.prepend("\"");
//这个是在application_path这个路径设置application_name的软件名
settings->setValue(application_name, application_path);
wstring appName = application_name.toStdWString();
wstring appPath = application_path.toStdWString();
bool ret = set_startup_registry(appPath, appName);
qDebug() << "[Option]:configuration create ret : " << ret;
}
else
{
settings->remove(application_name);
// QString application_path = QDir::toNativeSeparators(QCoreApplication::applicationFilePath());
// application_path.append("\"");
// application_path.prepend("\"");
// //settings->setValue(application_name, application_path);
// wstring appName = application_name.toStdWString();
// wstring appPath = application_path.toStdWString();
// bool ret = remove_startup_registry(appName, appPath);
// qDebug() << "[Option]:configuration remove ret : " << ret;
}
delete settings;
2、开启自启动的问题
(1)、如上的代码好像是只能在64位的windows上才可以生效,32位的没有生效。
(2)、重启后的软件,还是有一些问题的,就是打开文件异常。代码如下:
QFile file("file.txt");
file.open(QIODevice::WriteOnly);
file.write("123");
file.close();