C/C++/VC++/mfc对注册表的操作
来源:互联网 发布:进销存软件免费下载 编辑:程序博客网 时间:2024/05/09 01:39
#include<string.h>
#include<stdio.h>
#include<Windows.h>
void main()
{ HKEY hKey;
DWORD BufSize;
char ntEnvBuf[456];
char * rc;
if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, "Software\\Staffware plc\\Staffware Server\\Nodes\\staffw_nod1\\admin", 0L,
KEY_EXECUTE, &hKey) != ERROR_SUCCESS)
{
rc = NULL;
printf("here1\n");
}
else
{
if (RegQueryValueEx (hKey,"DEBUG", NULL, NULL,
(LPBYTE)(ntEnvBuf),
&BufSize) != ERROR_SUCCESS)
{
rc = NULL;
printf("here2\n");
}
RegCloseKey (hKey);
rc = ntEnvBuf;
}
printf("%s\n",rc);
}
/////////////////////////////////////////////
上面只是对注册表中已经存在的键的访问
这里只是对注册表的几个api函数的使用简介。在MFC中,你可以使用CRegKey类操作注册表,关于CRegKey类在这里就不做介绍了,可以参考msdn。
以下代码实现了在HKEY_LOCAL_MACHINE的SOFTWARE下打开MyProgram键,如果MyProgram不存在,则创建之,存在则进行查询
////////////////////////////////////////////////////////////////////////////
HKEY hKEY;
HKEY hKEYResult;
LPCTSTR lpszSubKey;
LPCTSTR lpszValueName;
LONG ret;
DWORD dwType;
DWORD dwSize;
hKEY = HKEY_LOCAL_MACHINE;
lpszSubKey = _T("SOFTWAREMyProgram");
ret = RegOpenKeyEx(
hKEY, // 根键
lpszSubKey, // 子键
0, // 必须为0
KEY_ALL_ACCESS, // 访问权限
&hKEYResult); // 保存打开的键的句柄
if (ret != ERROR_SUCCESS) // 若打开失败,则进行创建
{
ret = RegCreateKeyEx(
hKEY, // 根键
lpszSubKey, // 子键
0, // 必须为0
NULL, // 键的class
REG_OPTION_NON_VOLATILE, // 永久保持
KEY_READ|KEY_WRITE, // 访问权限
NULL, // 安全属性
&hKEYResult, // 保存打开的键的句柄
NULL);
if (ret != ERROR_SUCCESS)
{
MessageBox(_T("Create failed!"));
RegCloseKey(hKEYResult); // 使用完记得关闭句柄
return;
}
else
{
lpszValueName = _T("Number");
DWORD dwNumber = 10;
ret = RegSetValueEx(
hKEYResult, // 打开的句柄
lpszValueName, // 键名
0, // 必须为0
REG_DWORD, // 键类型
(CONST BYTE*)&dwNumber, // 需存储的数据
sizeof(DWORD)); // 数据长度
lpszValueName = _T("Date");
LPCTSTR lpszDate = _T("2006/4/29");
ret = RegSetValueEx(
hKEYResult,
lpszValueName,
0,
REG_SZ,
(CONST BYTE*)lpszDate,
MAX_PATH);
RegCloseKey(hKEYResult);
}
}
else // 如打开成功,则进行查询
{
lpszValueName = _T("Number");
dwType = REG_DWORD;
DWORD dwRes = 0;
dwSize = sizeof(DWORD);
ret = RegQueryValueEx(
hKEYResult, // 打开的句柄
lpszValueName, // 查找的键名
0, // 必须为0
&dwType, // 键类型
(BYTE*)&dwRes, // 返回的数据
&dwSize); // 数据长度
if (ret != ERROR_SUCCESS)
{
MessageBox(_T("Create failed!"));
RegCloseKey(hKEYResult);
return;
}
lpszValueName = _T("Date");
dwType = REG_SZ;
dwSize = MAX_PATH;
BYTE *pByteSubKey = new BYTE[MAX_PATH];
ZeroMemory(pByteSubKey, MAX_PATH);
ret = RegQueryValueEx(
hKEYResult,
lpszValueName,
0,
&dwType,
pByteSubKey,
&dwSize);
RegCloseKey(hKEYResult);
delete []pByteSubKey;
pByteSubKey = NULL;
if (ret != ERROR_SUCCESS)
{
MessageBox(_T("Create failed!"));
RegCloseKey(hKEYResult);
return;
}
}
- C/C++/VC++/mfc对注册表的操作
- 对注册表的操作(C#)
- MFC对注册表的操作
- MFC对注册表的操作
- 注册表的操作(C#)
- VC++ 中对注册表的操作
- VC++ 中对注册表的操作
- C语言调用WindowAPI对注册表操作
- 九:[VC++]MFC操作注册表
- c++(MFC)对文件的基本操作
- c语言和vc对文件的操作的异同
- C++Builder注册表操作
- C#-注册表操作
- vs2008环境下MFC对注册表的读写操作
- C++Builder中注册表的操作 (转载)
- C++Builder中注册表的操作 (转载)
- C++Builder中注册表的操作 (转载)
- C# 我的注册表操作类
- 以登陆用户启动进程
- mars老师[Android开发视频教学] 01_22 广播机制(2)
- android的init过程分析
- Zend studio 9.0.3 破解,汉化,字体,颜色,快捷键等相关设置
- 截断加载plugin的具体位置
- C/C++/VC++/mfc对注册表的操作
- 卸载android system/app 目录下文件的应用程序
- test table
- oracle : shared memory realm does not exist 故障解决
- scrapy结合webkit抓取js生成的页面
- VB Hook简介
- C++内存管理
- 责任链模式
- 桌面图标有阴影去除方法