今天稍微查阅了一下注册表编程的相关内容,下面就将所见所闻写出来罢。
首先介绍一下注册表的一些基础知识,下图便是微软提供的注册表编辑器结构图,大概分为两部分,左边是根键和子键,右边是各种键项的参数。详细信息建议参阅百度百科。
注册表编程其实就是对6个API函数进行操作,但是由于注册表功能太多,学习起来还是挺费劲的。下面只对这些函数进行极为简单的介绍,因为想要学好注册表编程,只能靠自己去多多练习和不断的查阅资料,这里不可能介绍的很充分。
1. LONG RegCreateKeyEx( //创建注册表,该函数执行成功返回 ERROE_SUCCESS
HKEY hKey, //要创建的子键所在的根键目录
LPCTSTR lpSubKey, //要创建的子健名称
DWORD Reserved, //保留参数,真心不知道这个参数的作用,其值为零
LPTSTR lpClass, //键的种类,通常为NULL
DWORD dwOptions, //子健选项
REGSAM samDesired, //存取权限
LPSECURITY_ATTRIBUTESlpSecurityAttributes, //安全继承属性
PHKEY phkResult, //返回的句柄,用来唯一表创建的子健
LPDWORD lpdwDisposition //标识作用
);
2. LONG RegOpenKeyEx( //打开注册表
HKEY hkey, //要打开的根键
LPCTSTR lpSubKey, //要打开的子健
DWORD ulOption, //为零
REGSAM samDesired, //存取权限
PHKEY phkResult //返回的句柄,用来唯一表创建的子健
)
3 RegCloseKey( //关闭注册表
HKEY hkey;
)
4.RegDeleteKey( //删除子健,若子键下面还有下级子健,则该函数执行失败
HEKY hkey; //要删除子键所在根键目录
LPCTSTR lpSubKey; //要删除的子健迷路
)
5. LONG RegQueryValueEx( //查询键值
HKEY hKey, //LONG RegOpenKeyEx返回的phkResult
LPTSTR lpValueName,
LPDWORD lpReserved,
LPDWORD lpType, //键值的数据类型
LPBYTE lpData, //返回的键项值
LPDWORD lpcbData //键项值的大小
);
6.LONG RegSetValueEx( //设置键值
HKEY hKey,
LPCTSTR lpValueName,
DWORD Reserved,
DWORD dwType,
CONST BYTE *lpData,
DWORD cbData
);
下面就用这些函数来实现一个具体的功能,有的同学在写完自己的程序(特别是系统服务程序)之后,很想知道怎样能让它开机自启动,其实很简单,只需对注册表进行简单的设置即可。不过值得注意的是,现在很多PC上都安装了360卫士,360有很多讨厌的功能会拦截对注册表的编辑功能。
1.打开注册表根健HKEY_LOCAL_MACHINE下的SOFTWARE\\Microsotf\Windows\\CurrentVersion\\Run
2.获取程序的完整文件名
3.设置键值,达到开机自启动的目的。
今天就到这了,代码实现明天再弄