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. HDF5基本使用方法

    HDF5, 大量(海量?)数据存储的一种解决方案. HDF的全称是Hiearchical Data Format, 5是版本号(未考证过TODO). 一个HDF5文件操作起来就像一个独立的文件系统. ...

  2. [HTML5] Blob对象

    写在前面 本篇主要总结Blob对象属性及作用,通过DEMO介绍Blob对象的应用场景. Blob对象 一直以来,JS都没有比较好的可以直接处理二进制的方法.而Blob的存在,允许我们可以通过JS直接操 ...

  3. ajax的简单介绍

    响应主体,就是服务器给我们返回的结果内容(浏览器里的responsive) 请求主体,是我们给服务器的数据 输入域名发起一次请求,得到的可能是标签,标签可能还要在发一次请求 post怎么发请求:for ...

  4. BZOJ 1226: [SDOI2009]学校食堂Dining

    1226: [SDOI2009]学校食堂Dining Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 730  Solved: 446[Submit][ ...

  5. Puzzle 面向服务/切面(AOP/IOC)开发框架 For .Net

    Puzzle 面向服务/切面AOP开发框架 For .Net AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效 ...

  6. svn1.6在centos6下的使用

    版本 CentOS 6:svn 1.6.11 svn1.6版本的不足在于,每个目录递归存在.svn目录:从1.7开始就只有root节点目录存在.svn目录,和git一样了. 但是因为还在用CentOS ...

  7. 他(he)(钟神)

    他[问题描述]一张长度为N的纸带,我们可以从左至右编号为0 −N(纸带最左端标号为0) .现在有M次操作,每次将纸带沿着某个位置进行折叠,问所有操作之后纸带的长度是多少.[输入格式]第一行两个数字N, ...

  8. Redis五种数据结构简介

    Redis五种结构 1.String 可以是字符串,整数或者浮点数,对整个字符串或者字符串中的一部分执行操作,对整个整数或者浮点执行自增(increment)或者自减(decrement)操作. 字符 ...

  9. linux 下第一个Libevent代码学习

    #include <event.h> struct event ev; struct timeval tv; void time_cb(int fd, short event, void* ...

  10. 深入理解JSX

    本文由笔者翻译自官方文档的JSX In Depth,若干案例经过了改写.其实说白了也好像不算太深入,但还是提示了一些可能的盲区. JSX是为构造React元素方法React.createElement ...