c++ 让程序开机自动启动的方法
当我们在window下编写自己的程序时,也可以让自己编写的程序在电脑开机时自动运行,这主要是修改windows里的注册表信息,所有开机自动启动的程序的一些信息都放在注册表中的某一文件夹下。我们只需在特定的文件夹下写入我们的程序信息即可。 关于注册表 我们可以在键盘上同时按下 win+r 键,在运行串口中输regedit 回车即可看到注册表(可以理解为一个大树,记录着系统中的信息),我们点击左边文件夹,点击顺序为:SoftwareMicrosoftWindowsCurrentVersionRun,在这个文件夹中存放的便是随机启动的 程序的信息。举个例子:当我们使用某个电脑优化软件进行电脑优化时,他会检测到需要开机优化的项目,即有些软件不必要开机就启动,修改的就是这个文件中的一些信息。 首先我们解释下所用到的函数的含义: RegOpenKeyEx() 函数功能描述:打开一个指定的注册表键 LONG RegOpenKeyEx(
ulOptions 二: 注意:如果想获得某个正在运行的EXE或者DLL的全路径可以这样写代码 三: RegSetValueEx():想要设置的注册表项下不是默认值,即有名称值的数据和类型时,可以调用RegSetValueEx函数,该函数将在注册表项下设置指定值的数据和类型。 以下代码时实现让本程序开机自启的方法. void CSetAutoRunDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 HKEY hKey; //可以理解为操作注册表的句柄 //找到系统的启动项 ,长指针类型是const char * 类型 LPCTSTR lpRun = "SoftwareMicrosoftWindowsCurrentVersionRun"; //打开启动项Key long lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE,lpRun,KEY_WRITE,&hKey); if(lRet == ERROR_SUCCESS) //打开成功 { char pFileName[MAX_PATH] = {0}; //定义数组存放路径 //得到程序自身的全路径 DWORD dwRet = GetModuleFileName(NULL,MAX_PATH); //添加一个子Key,并设置值 // 下面的"test"是应用程序名字(不加后缀.exe) lRet = RegSetValueEx(hKey,"SetAutoRun",REG_SZ,(BYTE *)pFileName,dwRet); //关闭注册表 RegCloseKey(hKey); if(lRet != ERROR_SUCCESS) { MessageBox("系统参数错误,不能完成开机启动设置"); } else { MessageBox("打开开机启动成功"); } // isrun = 1; } } 点击运行后,出现"启动成功"对话框,重启电脑后,软件开机启动(当运行程序时,有的杀毒软件可能会发出注册表修改的警告,那正是我们的程序在修改注册表) (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |