Key有如文件夹,Value有如文件
Value组成:Name/Type/Data, 通常指某Value就是指其Name
在此之前,应当了解注册表的功能以及数据结构,不做解释
1.关于创建一个主键,以及创建相应的键值
HKEY hKEY;//最大(作用范围)的一个key值
HKEY tmpKey;//临时的key值
TCHAR tchData[64];//存储字符串
long lRet;//记录函数的返回值方便调试
DWORD dwSize;
LPCTSTR data_Set = "Software\\Microsoft\\Windows\\CurrentVersion\\";//示例的注册表操作路径
lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Set,0,KEY_WOW64_64KEY|KEY_READ,&hKEY);
上述代码,打开了data_Set所指向路径的注册表,hKEY作为注册表句柄
新建一个注册表,命名为test,主键为Name,类型为REG_SZ,键值为China
成功则可以在data_Set所指目录下,注意HKEY_LOCAL_MACHINE,找到一个test文件夹,
打开,有一个项:主键为Name,类型为REG_SZ,键值为China
lRet =RegCreateKey (hKEY, // 要打开键的句柄
"test", // 要打开子键的名字的地址
&tmpKey // 已打开句柄的缓存区的地址
);
lRet = RegSetValueEx(tmpKey, "Name",0,REG_SZ,LPBYTE("China"),6);
2.查询一个键值.....算了,上代码
HKEY hKEY;
HKEY tmpKey;
TCHAR tchData[64];
long lRet;
DWORD dwSize;
LPCTSTR data_Set = "Software\\Microsoft\\Windows\\CurrentVersion\\";
lRet = RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Set,0,KEY_WOW64_64KEY|KEY_READ,&hKEY);
if (ERROR_SUCCESS == lRet)
{
dwSize=sizeof(tchData);
//*************************查询一个键值***************************************************
// lRet = RegQueryValueEx( hKEY, // handle to key
//"DevicePath", // value name
//NULL, // reserved
//NULL, // type buffer
//(LPBYTE)tchData, // data buffer
// &dwSize // size of data buffer
// );
//if( lRet == ERROR_SUCCESS)
//{
// ShowMessage(tchData);
//}
//***********************新建一个键值****************************************************
lRet =RegCreateKey (hKEY, // 要打开键的句柄
"test", // 要打开子键的名字的地址
&tmpKey // 已打开句柄的缓存区的地址
);
lRet = RegSetValueEx(tmpKey, "Name",0,REG_SZ,LPBYTE("China"),6);
//**********************************设置一个键值****************************************
//lRet = RegSetValueEx(HKEY hKey,//要设置的键的句柄
//
// LPCTSTR lpValueName,//要访问的键值的名称
//
// LPDWORD lpReserved,//保留值
//
// DWORD dwType,//要设置的数据的类型
//
// const BYTE *lpData,//要设置的健值
//
// DWORD cbData//数据的长度
//
// );
::RegCloseKey(hKEY); //程序结束,关闭打开的hKEY
}