博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VC++ 设置软件开机自启动的方法
阅读量:7169 次
发布时间:2019-06-29

本文共 2286 字,大约阅读时间需要 7 分钟。

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, 0, MAX_PATH);       if (GetModuleFileName(NULL, szFilePath, MAX_PATH))       {              HKEY hKey;             CString strRegPath = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");              if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, strRegPath, 0, KEY_SET_VALUE, &hKey) == ERROR_SUCCESS)              {                   RegSetValueEx(hKey, _T("AutoRun"), 0, REG_SZ, (LPBYTE)szFilePath, (lstrlen(szFilePath) + 1)*sizeof(TCHAR));              }              RegCloseKey(hKey);       }}inline void ReSetAutoRun(){      HKEY hKey;      CString strRegPath = _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");      if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, strRegPath, 0, KEY_SET_VALUE, &hKey) == ERROR_SUCCESS)      {          RegDeleteValue(hKey, _T("AutoRun"));      }      RegCloseKey(hKey);}

5、  双击OK按钮,写入代码:      

  CString strFilePath;   TCHAR szFilePath[MAX_PATH];   memset(szFilePath, 0, 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("0"), strFilePath);       }        else        {            SetAutoRun();            WritePrivateProfileString(_T("AutoRun"), _T("AutoRun"), _T("1"), strFilePath);       }   }

6、  编译运行:

 

             PS:

    1、  设置开机自启动后,我未能在SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run下找到我设置的注册表键值,重新启动后生效了~

    2、  Debug目录下生成的文件,任务栏右击显示“TOD<文件说明>”

 

    版本信息中FileDescription已做过更改,但是不起作用,很纳闷~

    将Debug文件夹中的文件移动到其它目录,显示正确

    编译的Release文件夹中的文件也显示正确

转载地址:http://gtmwm.baihongyu.com/

你可能感兴趣的文章
计算机网络socket编程之UDP
查看>>
高性能的智能日志
查看>>
APScheduler BackgroundScheduler
查看>>
远程连接
查看>>
lvs-nat与lvs-dr配置
查看>>
『中级篇』容器的技术概述(二)
查看>>
Apache awstats安装报错解决过程适合初学者
查看>>
Vsftp安装及配置虚拟用户
查看>>
JVM内存区域
查看>>
DNS的视图功能的简单配置。
查看>>
linux和windows互传文件/用户配置文件和密码配置文件/用户组管理/用户管理
查看>>
通过javascript把图片转化为字符画
查看>>
OpenJPA 一些难搞的查询
查看>>
设置button的样式,使得按钮的图片在上面,文字在图片的下面
查看>>
MySQL之函数、存储过程和触发器
查看>>
完整版的OpenLDAP搭建全过程
查看>>
java反射学习总结
查看>>
104. ftl 小数位处理
查看>>
云计算自动化平台HashiCorp获1亿美元D轮融资!
查看>>
防******
查看>>