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++ 设置软件开机自启动的方法的更多相关文章

  1. 转:CentOS设置程序开机自启动的方法

    转自:http://www.centos.bz/2011/09/centos-setup-process-startup-boot/ 1.把启动程序的命令添加到/etc/rc.d/rc.local文件 ...

  2. CentOS设置程序开机自启动的方法

    转自:http://www.centos.bz/2011/09/centos-setup-process-startup-boot/ 在CentOS系统下,主要有两种方法设置自己安装的程序开机启动. ...

  3. linux设置tomcat开机自启动

    本文假设jdk环境安装成功,如何安装JDK请参考这个链接: http://www.cnblogs.com/yoyotl/p/5395208.html 1. 下载apache的安装包,例如本例下载了ap ...

  4. Ubuntu16设置Redis开机自启动

    Ubuntu16设置Redis开机自启动   Ubuntu16设置Redis开机自启动 设置条件: -Ubuntu16.04 -Redis-4.0.11 在redis目录下找到  utils/redi ...

  5. tomcat设置为开机自启动

    第一步:设置环境变量(在java环境变量配置完成的情况下) 计算机右键——>属性——>高级系统设置——>环境变量——>在用户变量中心新建CATALINA_HOME变量 编辑pa ...

  6. CentOS7中设置Tomcat8开机自启动

    CentOS7中设置Tomcat8开机自启动 本文介绍了在centos7中配置tomcat的开机自启动的一些操作步骤,仅供参考. 环境是CentOS 7 ,jdk版本是1.8.0_191,tomcat ...

  7. Linux下设置svn开机自启动

    方式一:centos 7 设置svn开机自启动 使用新的systemctl 服务命令  (笔者成功验证过,该方式可行) [root@iZjvr37lpviqbkZ init.d]# vi /lib/s ...

  8. Centos7系统下编写systemd脚本设置redis开机自启动

    今天想设置redis开机自启动,我觉得这样子比较好,但是在网上找了很长时间发现大家都是基于chkconfig的写法来设置的,并不能由systemd进程来统一管理,所以这里我自己编写了一个,希望大家可以 ...

  9. centos7.x设置nginx开机自启动

    设置nginx开机自启动(centos7.x) 第一步:进入到/lib/systemd/system/目录 [root@iz2z init.d]# cd /lib/systemd/system/ 第二 ...

随机推荐

  1. Codeforces Round #384 (Div. 2) B. Chloe and the sequence(规律题)

    传送门 Description Chloe, the same as Vladik, is a competitive programmer. She didn't have any problems ...

  2. 计算机视觉之《OpenCV开发环境搭建》

    codeblock安装:http://blog.csdn.net/hitwengqi/article/details/7985343 ubuntu+codeblock+opencv:http://bl ...

  3. 通过SmartGit把java maven项目传到码云

    一.首先先在码云上新建一个项目 二.复制项目的链接 三.打开SmartGit,点击clone 4.把复制的项目链接粘上去 5.然后点两次next,选择一个路径,finish 6.打开刚刚选择的路径,我 ...

  4. Python Day18

    WEB框架 MVC Model View Controller 数据库 模板文件 业务处理 MTV Model Template View 数据库 模板文件 业务处理 Web请求流程 -- 原始Web ...

  5. 【原创】PageAdminCMS 前台SQL注入漏洞(1)

    之前根据公司的要求找了几个web程序的漏洞提交CNVVD,发现漏洞提交上去两个月了,CNVVD却没有任何回应,我提交的这几个漏洞却悄悄的修补掉了. 文章作者:rebeyond 受影响版本:V3.0 漏 ...

  6. git操作---更新删除

    1.更新git   git pull <远程主机名> <远程分支名> 例如:git pull origin master 2.更新子模块 git submodule updat ...

  7. Web API系列(二)接口安全和参数校验

    以前简单介绍过web api 的设计,但是还是有很多朋友问我,如何合理的设计和实现web api.比如,接口安全,异常处理,统一数据返回等问题.所以有必要系统的总结总结 web api 的设计和实现. ...

  8. RabbitMQ学习系列(二): RabbitMQ安装与配置

    上一篇,简单介绍了RabbitMQ的情况还有一些相关的概念,这一篇,会讲讲 RabbitMQ安装与配置. 1.安装 Rabbit MQ 是建立在强大的Erlang OTP平台上,因此安装RabbitM ...

  9. python 单例模式

    单例模式,也叫单子模式,是一种常用的软件设计模式.在应用这个模式时,单例对象的类必须保证只有一个实例存在 用装饰器方式实现单例模式 #!/usr/bin/python # coding=utf-8 d ...

  10. 将JAR包反编译,修改后重新打包(转)

     将JAR包反编译,修改后重新打包(转)   在学习和开发JAVA项目中,我们经常会用到第三方提供的一些jar.使用这些第三方工具包,可以提高我们开发的效率,缩短开发的时间.有的第三方工具,提供具体的 ...