本人在开发IE主页修改器时,想通过MFC中的函数操作注册表来实现功能,因此在开发前整理了本篇文章。
1.简介
CRegKey提供了对系统注册表的操作方法,通过CRegKey类,可以方便的打开注册表的某个分支或子键(CRegKey::Open),可以方便的修改一个键的键值(CRegKey::SetValue),也可以查询某个键的键值(CRegKey::QueryValue),操作完成之后,可以关闭子键(CRegKey::Close)。
要想使用CRegKey类,需要包含头文件atlbase.h
2.常用操作方法
1) 打开需要查询或修改的注册表键
LONG Open( HKEY hKeyParent, LPCTSTR lpszKeyName, REGSAM samDesired = KEY_ALL_ACCESS );
hKeyParent参数指定了待打开的注册表键的句柄,常用的可选值为
HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
以上四个值分别代表了注册表中最主要的四个分支;
lpszKeyName参数指定了在hKeyParent下需要打开的项的名字;
samDesired参数指定了打开该项后所拥有的权限,默认为KEY_ALL_ACCESS,表示拥有对该分支的所有操作权,包括读和写等。
举例:
1: CRegKey myKey;
2: if(myKey.Open(HKEY_LOCAL_MACHINE, "SOFTWARE//Microsoft//Windows") != ERROR_SUCCESS)
3: {
4: AfxMessageBox("Error open reg key!!");
5: }
2) 查询注册表项中的某个键的键值
LONG QueryValue( DWORD& dwValue, LPCTSTR lpszValueName );
LONG QueryValue( LPTSTR szValue, LPCTSTR lpszValueName, DWORD* pdwCount )
查询键值提供了两种形式,分别用来获取数值类型的值和字符串类型的值。在上面的形式中,第一种用于获取数值类型的值,第二种用于获取字符串类型的值。
lpszValueName参数用来指定键的名称,dwValue和szValue用于保存