Windows核心编程——MFC下注册表操作和管理
2021-01-04 22:28
标签:图片 open 查询 microsoft HCL enum rate 如何 类型 注册表(Registry),是Microsoft Windows中的一个重要的数据库,用于存储系统应用程序的设置信息。 系统的配置一般都保存在注册表里,一些软件配置信息也在注册表 添加键:RegCreateKey() 示例:指定目录下添加键shadow 成功添加键: 设置值: RegSetKeyValue() 示例:设置值test 成功添加test: 示例:删除test: test删除成功: RegEnumValue() //枚举键值信息 软件配置信息放在注册表,在卸载软件后再安装信息还存在。如 Windows核心编程——MFC下注册表操作和管理 标签:图片 open 查询 microsoft HCL enum rate 如何 类型 原文地址:https://www.cnblogs.com/zhaoyixiang/p/12983823.html1.注册表
2.注册表操作
Win+R regedit 可以打开windows的注册表编辑工具
如何操作注册表?
相关api:3.MFC操作注册表
1)添加键值对:
RegCreateKey
HKEY hSubKey;
LONG lRet = RegCreateKey(
HKEY_CURRENT_USER,//主键
"Software\\shadow",
&hSubKey //传出参数
);
if (lRet != ERROR_SUCCESS)
{
return 0;
}
char szValue[] = { "hello" };
lRet = RegSetKeyValue(
HKEY_CURRENT_USER, //主键
"Software\\shadow", //子键的路径
"test", //值的名称
REG_SZ, //值的类型
szValue, //值的数据所在的缓冲区
sizeof(szValue)
);
if (lRet != ERROR_SUCCESS)
{
return 0;
}
2)删除数据:
RegDeleteKeyValue() //删除键值对
RegDeleteKey() //删除键lRet = RegDeleteKeyValue(
HKEY_CURRENT_USER, //主键
"Software\\shadow", //子键的路径
"test" //值的名称
);
3)查询数据:
RegQueryValueEx() //查询键上有多少个值
RegQueryInfoKey() //查询键
果在自己目录下,卸载后所有信息都会消失。
查询示例:HKEY hWinRar = NULL;
lRet = RegOpenKey(HKEY_CURRENT_USER, "Software\\RegisteredApplications", &hWinRar);
QueryKey(hWinRar);
#define MAX_KEY_LENGTH 255
#define MAX_VALUE_NAME 16383
void QueryKey(HKEY hKey)
{
TCHAR achKey[MAX_KEY_LENGTH]; // buffer for subkey name
DWORD cbName; // size of name string
TCHAR achClass[MAX_PATH] = TEXT(""); // buffer for class name
DWORD cchClassName = MAX_PATH; // size of class string
DWORD cSubKeys = 0; // number of subkeys
DWORD cbMaxSubKey; // longest subkey size
DWORD cchMaxClass; // longest class string
DWORD cValues; // number of values for key
DWORD cchMaxValue; // longest value name
DWORD cbMaxValueData; // longest value data
DWORD cbSecurityDescriptor; // size of security descriptor
FILETIME ftLastWriteTime; // last write time
DWORD i, retCode;
TCHAR achValue[MAX_VALUE_NAME];
DWORD cchValue = MAX_VALUE_NAME;
// Get the class name and the value count.
retCode = RegQueryInfoKey(
hKey, // key handle
achClass, // buffer for class name
&cchClassName, // size of class string
NULL, // reserved
&cSubKeys, // 子键的个数
&cbMaxSubKey, // longest subkey size
&cchMaxClass, // longest class string
&cValues, // 键所对应的值的个数
&cchMaxValue, // longest value name
&cbMaxValueData, // longest value data
&cbSecurityDescriptor, // security descriptor
&ftLastWriteTime); // last write time
// Enumerate the subkeys, until RegEnumKeyEx fails.
//遍历键的信息
if (cSubKeys)
{
printf("\nNumber of subkeys: %d\n", cSubKeys);
for (i = 0; i
文章标题:Windows核心编程——MFC下注册表操作和管理
文章链接:http://soscw.com/index.php/essay/40121.html