不同软件中设置开机自启动的方法
一、Windows下开机自启动
自启动主要就是修改注册表启动项“HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run”,设置开机自启动后可以在任务管理器->启动界面看见自启动软件
MFC中设置开机自启动
bool m_autoStart;//true为开机自启动,false为关闭开机自启动
HKEY hKey;
//找到系统的启动项
CString strRegPath = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");
if (m_autoStart)
{
if (RegOpenKeyEx(HKEY_CURRENT_USER, strRegPath, 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS) //打开启动项
{
TCHAR szModule[MAX_PATH];
GetModuleFileName(NULL, szModule, MAX_PATH);//得到本程序自身的全路径
RegSetValueEx(hKey, _T("Demo"), 0, REG_SZ, (LPBYTE)szModule, (lstrlen(szModule) + 1)*sizeof(TCHAR));
//添加一个子Key,并设置值,"Demo"是应用程序名字(不加后缀.exe)
RegCloseKey(hKey); //关闭注册表
}
else
{
AfxMessageBox(_T("系统参数错误,不能随系统启动"));
}
}
else
{
if (RegOpenKeyEx(HKEY_CURRENT_USER, strRegPath, 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS)
{
RegDeleteValue(hKey, _T("Demo"));
RegCloseKey(hKey);
}
}
QT设置程序开机自启动
//.h文件
#define AUTO_RUN "HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"
public:
//设置开机自启动
void SetMyAppAutoRun(bool isstart);
//.cpp文件
void Widget::SetMyAppAutoRun(bool isstart)
{
QString application_name = QApplication::applicationName();//获取应用名称
QSettings *settings = new QSettings(AUTO_RUN, QSettings::NativeFormat);//创建QSetting, 需要添加QSetting头文件
if(isstart){
QString application_path = QApplication::applicationFilePath();//找到应用的目录
settings->setValue(application_name, application_path.replace("/", "\\"));//写入注册表
}
else settings->remove(application_name);
}
QT设置软件崩溃自启动
main.cpp改为下面的代码
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
int ret = -1;
do
{
Widget w;
w.show();
ret = a.exec();
}while(ret != 0||ret==EXIT_RESTRAT);//正常退出返回0
return ret;
}
.h文件中
#define EXIT_RESTRAT -1000
void Widget::ExitRestart()
.cpp文件中
void Widget::ExitRestart()
{
qApp->exit(EXIT_RESTRAT);//包含QApplication头文件就有qApp
}
二、Ubuntu 程序自启动步骤
1 打开终端,输入gnome-session-properties
,打开如下界面:
2 点击Add
Name 和Comment随便写,Command按如下格式写:
gnome-terminal -x /home/whp/Desktop/All_program.sh
(系统每次启动时会启动桌面上的All_program.sh程序)
3 All_program.sh格式见附件,链接:
https://download.csdn.net/download/qq_43309940/18420841
4 注意事项:
使用python进行串口读写时,使用sudo python ***.py后,会要求输入密码,按如下操作取消密码:
sudo gedit /etc/sudoers
按下图方式增加两个NOPASSWD