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/ 第二 ...
随机推荐
- bzoj1251
1251: 序列终结者 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 3776 Solved: 1581[Submit][Status][Discu ...
- Java相关书籍分享
Java核心技术(卷1):基础知识(原书第9版) [Core Java Volume I-Fundamentals (Ninth Edition)].pdf Java核心技术(卷2):高级特性(原书第 ...
- springboot: mybatis集成参考
http://blog.csdn.net/isea533/article/details/50359390
- maven上传jar到nexus本地仓库
一.nexus新增本地仓库 Hosted Repository:本地仓库,部署组织内部的版本内容 Proxy Repository:代理仓库,代理远程的公共仓库,如maven中央仓库 Virtual ...
- Linux--Tail命令
inux tail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有更新,tail会自己主动刷新,确保你看到最新的档案 ...
- UITextField的placeholder文字的位置,颜色等的自定义设置
//控制placeHolder的位置,左右缩20 -(CGRect)placeholderRectForBounds:(CGRect)bounds { CGRect inset = CGRectMak ...
- (转载)详解网络传输中的三张表,MAC地址表、ARP缓存表以及路由表
郑重声明:原文转载于http://dengqi.blog.51cto.com/5685776/1223132 向好文章致敬!!! 一:MAC地址表详解 说到MAC地址表,就不得不说一下交换机的工作原理 ...
- YII2-数据库数据查询方法,关联查询with, joinWith区别和分页
一.ActiveRecord 活动记录 1.with关联查询 例如,查询评论 $post = Post::find()->with('comments'); 等价于以下结果集 SELECT * ...
- C语言基础(9)-字符串格式化输入和输出
1.字符串在计算机内部的存储方式 字符串是内存中一段连续的char空间,以’\0’结尾 2.printf函数,putchar函数 putchar输出一个char printf是输出一个字符串 prin ...
- thinkphp疑难解决4
关于文件上传所涉及到的php.ini 中的一些配置: (以当前要设置的关键字开头...) 是每个上传文件所允许的大小, 默认的 upload_max_filesize = 2M, 如果超过了2M,_P ...