C++编程:注册表操作关键代码示例
需积分: 9 124 浏览量
更新于2024-09-17
收藏 9KB TXT 举报
"C++注册表操作大全.txt"
在Windows操作系统中,注册表是存储系统和应用程序设置的关键数据库。C++编程语言提供了API接口,通过这些接口可以对注册表进行读写、创建、删除等操作。以下是一些基本的C++注册表操作方法:
1. 打开已存在的键值:
```cpp
CString StrKey(%%1);
HKEY m_hKey = %%2;
if (ERROR_SUCCESS == ::RegOpenKeyEx(m_hKey, StrKey, NULL, KEY_ALL_ACCESS, &m_hKey))
{
// 打开成功,可以进行后续操作
}
```
这段代码使用`RegOpenKeyEx`函数尝试打开指定路径的注册表键。如果成功,函数返回`ERROR_SUCCESS`,并且可以通过`m_hKey`访问该键。
2. 创建新键:
```cpp
CString StrKey(%%1);
HKEY hKey;
DWORD dwDisposition;
if (ERROR_SUCCESS == ::RegCreateKeyEx(m_hKey, (LPCTSTR)StrKey, 0, NULL,
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition))
{
m_hKey = hKey;
if (dwDisposition == REG_CREATED_NEW_KEY)
{
// 新键创建成功,执行相应操作
}
else if (dwDisposition == REG_OPENED_EXISTING_KEY)
{
// 键已存在,打开成功,执行相应操作
}
}
```
`RegCreateKeyEx`函数用于创建新键,如果键已存在,会打开它。`dwDisposition`参数可以判断是新建还是打开。
3. 删除键:
```cpp
CString StrKey(%%1);
HKEY SrcKey = m_hKey;
char KeyName[256];
int nRes = 0;
if (OpenKey(SrcKey, StrKey))
{
nRes = FirstEnumKey(KeyName);
while (nRes)
{
DeleteKey(KeyName);
nRes = NextEnumKey(KeyName);
}
}
if (::RegDeleteKey(SrcKey, StrKey) == ERROR_SUCCESS)
{
// 键删除成功,执行相应操作
}
```
这段代码首先打开指定的键,然后枚举并删除其下的所有子键,最后删除指定键自身。
4. 枚举第一个子键:
```cpp
DWORD dwSize = 255;
m_EnumLoop = 0;
if (ERROR_SUCCESS == ::RegEnumKeyEx(m_hKey, m_EnumLoop, %%1, &dwSize, NULL, NULL, NULL, NULL))
{
// 获取到第一个子键,执行相应操作
}
```
使用`RegEnumKeyEx`函数枚举键的第一个子键,成功后可以在`%%1`处处理子键名称。
5. 枚举下一个子键:
```cpp
DWORD dwSize = 255;
m_EnumLoop++;
if (ERROR_SUCCESS == ::RegEnumKeyEx(m_hKey, m_EnumLoop, %%1, &dwSize, NULL, NULL, NULL, NULL))
{
// 获取到下一个子键,执行相应操作
}
```
在上一个子键枚举之后,通过递增`m_EnumLoop`继续枚举下一个子键。
6. 获取DWORD值:
```cpp
CString StrChildKey(%%1);
DWORD dwValue;
DWORD dwSize = 255, dwType;
if (ERROR_SUCCESS == ::RegQueryValueEx(m_hKey, (LPCTSTR)StrChildKey, NULL, &dwType, (LPBYTE)&dwValue, &dwSize))
{
// 获取DWORD值成功,执行相应操作
}
```
`RegQueryValueEx`函数用于查询指定键下的值,这里特别针对DWORD类型的数据。
这些代码片段展示了C++中对注册表的基本操作,包括打开键、创建键、删除键、枚举子键以及获取特定数据类型(如DWORD)的值。在实际应用中,需要注意错误处理和安全性,以防止误操作导致系统问题。同时,对于权限敏感的操作,应确保具备足够的访问权限,并考虑使用适当的安全模式。
178 浏览量
104 浏览量
1250 浏览量
116 浏览量
801 浏览量
点击了解资源详情
1967 浏览量
409 浏览量
611 浏览量
wqf258011
- 粉丝: 0
- 资源: 10
最新资源
- Delphi高手突破(官方版).pdf
- LoadRunner中文版文档
- MATLAB 训练讲义toStudents.pdf
- 计算机操作系统(汤子瀛)习题答案
- 构建SOA 的IT 捷径
- 2002年程序员上午试卷
- 雅思王路807 必备雅思工具
- modelsim编译xilinx库的方法.doc
- 西软宽带安全审计管理软件说明书
- kjava开发手册--介绍j2me开发的一些实践
- H.264.pdf,编码解码
- ASP.NET专业项目实例开发(修订版)-课件(部分3)
- ASP.NET专业项目实例开发(修订版)-课件(部分1)
- cuda中文手册--GPU的通用编程
- 2009最新java经典面试题目(包含答案)
- java设计模式中文版