修改注册表实现程序开机自启动

注册表简介

何为注册表

注册表相当于Windows下的一个庞大的层次性数据库.
基本上有责系统所有的配置信息

注册表是windows操作系统中的一个核心数据库,其中存放着各种参数,直接控制着windows的启动、硬件驱动程序的装载以及一些windows应用程序的运行,从而在整个系统中起着核心作用。
以上是引用百科的话

注册表组成

注册表由

  • 键(rootkey)(也叫主键或称“项”)
  • 子键(subkey)(子项)
  • 值项(value)构成。

一个键就是分支中的一个文件夹,而子键就是这个文件夹当中的子文件夹,子键同样它也是一个键。
一个值项则是一个键的当前定义,由名称、数据类型以及分配的值组成。
一个键可以有一个或多个值,每个值的名称各不相同,如果一个值的名称为空,则该值为该键的默认值。


五大根键

  • HKEY_USERS
    保存了存放在本地计算机口令列表中的用户标识和密码列表

  • HKEY_CURRENT_USER
    该根键包含了本地工作站中存放的当前登录的用户信息

  • HKEY_CURRENT_CONFIG
    该根键存放着当前用户桌面配置的数据

  • HKEY_CLASSES_ROOT
    该根键根据windows操作系统中所安装的应用程序的扩展名,来指定文件类型。

  • HKEY_LOCAL_MACHINE
    该根键存放本地计算机的硬件信息,(我们的自启动信息就在此)

实战篇

(上面做了个这样的简介,现在开始实战操作了)

原理很简单
把我们的键值信息写到下面的键里就好了
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run(这个键里就是)

1. 本软件自动启动: 

       CString currentPath;
       GetModuleFileName(NULL,currentPath.GetBuffer(
               MAX_PATH),MAX_PATH); 
        //上面获取当前全路径
       CRegKey reg;        //定义注册表对象
        //还是atl好用

       reg.Open(HKEY_LOCAL_MACHINE,"Software\\Microsoft
                   \\Windows\\CurrentVersion\\Run");
        //成功返回ERROE_SUCCESS
       reg.Create(reg.m_hKey,L"TEST");
        //这里创建子健也就是一个文件夹,
        //m_hKey其实就是打开的父键的返回的handle
       reg.SetValue(currentPath,L"AUTORUN");

(2)删除自动启动:
       CRegKey rk;
       LPCTSTR subKey="TEST";
       LPCTSTR KeyValue="*.exe";
       LPCTSTR lp="Software\\Microsoft\\Windows\\CurrentVersion\\Run\\TEST\\";
    if(rk.Open(HKEY_LOCAL_MACHINE,lp)==ERROR_SUCCESS)
            if(rk.DeleteValue(KeyValue)==ERROR_SUCCESS)
       {
           //Do something
    }
    rk.Close();

你可能感兴趣的:(Windows,编程)