VC++ 设置软件开机自启动的方法
0 概述
软件开机自启动是比较常用的做法,设置方法也有好几种。
1 使用者模式
在“开始菜单”的所有程序中有个“启动”文件夹,可以将需要设置为开机启动的应用程序放在这个文件夹中。但是,这样做存在不足:“启动”文件夹路径在每台电脑有可能是不同的,没法做到一劳永逸。

同时,如果要禁止程序开机启动,可将“启动”文件夹中对应的程序文件移除,也可以“Win+R”输入“msconfig”进行手动设置:

2 开发者模式
作为开发人员,当然写注册表是最好的方法:
1、 新建一个基于对话框的MFC应用程序AutoRun;
2、 添加一个Check Box,ID设置为IDC_CHECK_AUTORUN,文本“开机自启动~”;
3、 在AutoRunDlg.h中添加私有成员变量:int m_nCheakState;
4、 在AutoRunDlg.cpp开始加入代码:
inline void SetAutoRun()
{
TCHAR szFilePath[MAX_PATH];
memset(szFilePath, , MAX_PATH);
if (GetModuleFileName(NULL, szFilePath, MAX_PATH))
{
HKEY hKey;
CString strRegPath = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, strRegPath, , KEY_SET_VALUE, &hKey) == ERROR_SUCCESS)
{
RegSetValueEx(hKey, _T("AutoRun"), , REG_SZ, (LPBYTE)szFilePath, (lstrlen(szFilePath) + )*sizeof(TCHAR));
}
RegCloseKey(hKey);
}
} inline void ReSetAutoRun()
{
HKEY hKey;
CString strRegPath = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, strRegPath, , KEY_SET_VALUE, &hKey) == ERROR_SUCCESS)
{
RegDeleteValue(hKey, _T("AutoRun"));
}
RegCloseKey(hKey);
}
5、 双击OK按钮,写入代码:
CString strFilePath;
TCHAR szFilePath[MAX_PATH];
memset(szFilePath, , MAX_PATH);
if (GetModuleFileName(NULL, szFilePath, MAX_PATH))
{
strFilePath = szFilePath;
strFilePath = strFilePath.Left(strFilePath.ReverseFind('\\'));
strFilePath += _T("\\AutoRun.ini");
} CButton* pBtn = (CButton*)GetDlgItem(IDC_CHECK_AUTORUN);
int nCheakState = pBtn->GetCheck();
if (m_nCheakState != nCheakState)
{
if(nCheakState == BST_UNCHECKED)
{
ReSetAutoRun();
WritePrivateProfileString(_T("AutoRun"), _T("AutoRun"), _T(""), strFilePath);
}
else
{
SetAutoRun();
WritePrivateProfileString(_T("AutoRun"), _T("AutoRun"), _T(""), strFilePath);
}
}
6、 编译运行:

PS:
1、 设置开机自启动后,我未能在SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run下找到我设置的注册表键值,重新启动后生效了~
2、 Debug目录下生成的文件,任务栏右击显示“TOD<文件说明>”

版本信息中FileDescription已做过更改,但是不起作用,很纳闷~
将Debug文件夹中的文件移动到其它目录,显示正确
编译的Release文件夹中的文件也显示正确
VC++ 设置软件开机自启动的方法的更多相关文章
- 转:CentOS设置程序开机自启动的方法
转自:http://www.centos.bz/2011/09/centos-setup-process-startup-boot/ 1.把启动程序的命令添加到/etc/rc.d/rc.local文件 ...
- CentOS设置程序开机自启动的方法
转自:http://www.centos.bz/2011/09/centos-setup-process-startup-boot/ 在CentOS系统下,主要有两种方法设置自己安装的程序开机启动. ...
- linux设置tomcat开机自启动
本文假设jdk环境安装成功,如何安装JDK请参考这个链接: http://www.cnblogs.com/yoyotl/p/5395208.html 1. 下载apache的安装包,例如本例下载了ap ...
- Ubuntu16设置Redis开机自启动
Ubuntu16设置Redis开机自启动 Ubuntu16设置Redis开机自启动 设置条件: -Ubuntu16.04 -Redis-4.0.11 在redis目录下找到 utils/redi ...
- tomcat设置为开机自启动
第一步:设置环境变量(在java环境变量配置完成的情况下) 计算机右键——>属性——>高级系统设置——>环境变量——>在用户变量中心新建CATALINA_HOME变量 编辑pa ...
- CentOS7中设置Tomcat8开机自启动
CentOS7中设置Tomcat8开机自启动 本文介绍了在centos7中配置tomcat的开机自启动的一些操作步骤,仅供参考. 环境是CentOS 7 ,jdk版本是1.8.0_191,tomcat ...
- Linux下设置svn开机自启动
方式一:centos 7 设置svn开机自启动 使用新的systemctl 服务命令 (笔者成功验证过,该方式可行) [root@iZjvr37lpviqbkZ init.d]# vi /lib/s ...
- Centos7系统下编写systemd脚本设置redis开机自启动
今天想设置redis开机自启动,我觉得这样子比较好,但是在网上找了很长时间发现大家都是基于chkconfig的写法来设置的,并不能由systemd进程来统一管理,所以这里我自己编写了一个,希望大家可以 ...
- centos7.x设置nginx开机自启动
设置nginx开机自启动(centos7.x) 第一步:进入到/lib/systemd/system/目录 [root@iz2z init.d]# cd /lib/systemd/system/ 第二 ...
随机推荐
- 用libcurl 登录网站
libcurl 可以发送和接收HTTP消息,因此可以发送用户名.密码和验证码来登录网站,网上有不少这方面的内容,但不甚完整,我摸索了两天,将其中要点记录下来. 基本步骤 正常访问登录页面,访问时,设置 ...
- grails项目获取前后台的值
grails项目中前台传值给后台: 加入我有a.gsp这个页面,a.gsp中有如下代码: 姓名:<input type="text" name="xing" ...
- MySQL数据库创建视图
视图可以说是一种虚拟表,建立在基本表的基础上,通过关联一个表或者多个表来获取多个表中需要的字段,视图只是用来查询数据并不能用来存储数据信息. 我有以下几张表: -------image表---- -- ...
- JavaScript replace() 方法
参考:http://www.w3school.com.cn/jsref/jsref_replace.asp 需要有一点注意的是:可以是函数的形式做为返回值,如下: "test{0}" ...
- kubernetes&tensorflow
谷歌内部--Borg Google Brain跑在数十万台机器上 谷歌电商商品分类深度学习模型跑在1000+台机器上 谷歌外部--Kubernetes(https://github.com/kuber ...
- PHPstorm同步文件时与ftp断开连接
一用PHPstorm同步对比服务器端和本地文件的差异时,一会就断开ftp再也连不上了,弄了好久终于找到原因了,好像这个同步会频繁请求建立连接,服务器本地安全策略屏蔽了ip,还是下载后再做修改或者直接在 ...
- bzoj 2729: [HNOI2012]排队
2729: [HNOI2012]排队 Time Limit: 10 Sec Memory Limit: 128 MB Description 某中学有 n 名男同学,m 名女同学和两名老师要排队参加体 ...
- My97 DatePicker 日期选择插件.
My97DatePicker是一个纯js写的时间插件,体积较小,更可以自己扩展皮肤,且样式不和页面相冲突,有多钟配置,近期项目用了一下感觉还不错...分享给大家 软件官网:http://www.my9 ...
- 你想要了解但是却羞于发问的有关SSL的一切
Everything You Ever Wanted to Know About SSL (but Were Afraid to Ask) Or perhaps more accurately, &q ...
- linux 星际词霸安装
安装StarDict星际译王.这是linux系统中最常用的翻译软件之一,但好久没有更新了.Ubuntu14.04下直接在ubuntu软件中心中搜索stardict即可图形界面安装. 命令行安装:sud ...