修改注册表实现程序开机自启动
2017年09月27日 10:55:37
阅读数:335
注册表简介
何为注册表
注册表相当于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();