RegCreateValueEx()函数如何向注册表写入DWORD型变量,有没有代码,写出来一看?还有如何用RegQueryValueEx()将这个变量读出来? 对不起,说错了,应该是RegSetValueEx()函数来写注册表,有没有人来看一下。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 读取键RegQueryValueEx 通过RegQueryValueEx函数可以从一个已经打开的键中读取数据,函数原型如下: LONG RegQueryValueEx( HKEY hKey, LPTSTR lpValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData ); 各个参数及返回值的含义如下: ·参数hKey为当前的一个打开的键的句柄,具体数值同RegCreateKeyEx函数的hKey参数。 ·参数lpVauleName为一个指向非空的包含查询值的名称的字符串指针。 ·lpReserved保留,必须为NULL。 ·参数lpType为一个指向数据类型的指针,数据类型为下列类型之一: REG_BINARY 二进制数据 REG_DWORD 32位整数 REG_DWORD_LITTLE_ENDIAN little-endian格式的数据,例如0X12345678以(0X78 0X56 0X34 0X12)方式保存 REG_DWORD_BIG_ENDIAN big-endian格式的数据,例如0X12345678以(0X12 0X34 0X56 0X78)方式保存 REG_EXPAND_SZ 一个包含未扩展环境变量的字符串 REG_LINK 一个Unicode类型的链接 REG_MULIT_SZ 以两个零结尾的字符串 REG_NONE 无类型数值 REG_RESOURCE_LIST 设备驱动资源列表 REG_SZ 一个以零结尾的字符串根据函数使用的字符集类型的不同而设置为Unicode或ANSI类型的字符串 ·参数lpData为一个指向保存返回值的变量的指针。如果不需要返回值,该参数可以为NULL。 ·参数lpcbData为一个指向保存返回值长度的变量的指针。其中长度以字节为单位。如果数据类型为REG_SZ、REG_MULTI_SZ或REG_EXPAND_SZ,那么长度也包括结尾的零字符,只有在参数lpData为NULL时,参数lpcbData才可以为NULL。 ·返回值同RegCreateKeyEx函数的返回值。 设置键值RegSetValueEx RegSetValueEx函数可以设置注册表中键的值,函数原型如下: LONG RegSetValueEx( HKEY hKey, LPCTSTR lpValueName, DWORD Reserved, DWORD dwType, CONST BYTE *lpData, DWORD cbData ); 各个参数及返回值的含义如下: ·参数hKey的含义同RegCreateKeyEx函数中的hKey参数。 ·参数lpValueName为一个指向包含值名的字符串指针。 ·Reserved保留,通常必须设置为0。 ·参数dwType确定了设置的值的类型同RegQueryValueKeyEx的lyType参数。 ·参数lpData为一个指向包含数据的缓冲区的指针。 ·参数cbData以字节为单位,指定数据的长度。 ·返回值同RegCreateKeyEx函数的返回值。 送你一个函数,你可以自己再改一下void CreateSetRegKeyValue(CString strKeyValue,long intKeyValue){ DWORD dwErrorCode,dwData; HKEY hKey; DWORD dwDisposition; dwErrorCode=::RegCreateKeyEx(HKEY_CURRENT_USER,strKeyValue.GetBuffer(strKeyValue.GetLength()),0,"",REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,&dwDisposition); if (dwErrorCode != ERROR_SUCCESS){ AfxMessageBox("Create Key Faile!"); } dwData=intKeyValue; dwErrorCode=::RegSetValueEx(HKEY_CURRENT_USER,strKeyValue.GetBuffer(strKeyValue.GetLength()),0,REG_DWORD,(LPBYTE)&dwData,sizeof(DWORD)); if (dwErrorCode != ERROR_SUCCESS){ AfxMessageBox("Set KeyValue Faile!"); } RegCloseKey(hKey);} CListCtrl列表框中数据保存,读取问题? 感觉vc中的project/properties页面 新手问一个问题:关于dll在目标进程中的地址问题 Windows有什么函数能让一段程序只执行一次? opengl用于三维地形显示的源程序 程序最小化在系统托盘,想用快捷键启动(弹出界面)如何作到 FormView上画的图片,被其它窗口覆盖后,图片被擦除了, (急)请教有关小波变换的几个问题及求源代码!!! MFC 类型转换还是编码问题???急救 钩子问题二 如何在全局函数中得到切割窗口中的视图指针?我的方法(在里面)为什么报错,谢谢! 关于CreateBitmap函数第3个参数的问题
通过RegQueryValueEx函数可以从一个已经打开的键中读取数据,函数原型如下:
LONG RegQueryValueEx(
HKEY hKey,
LPTSTR lpValueName,
LPDWORD lpReserved,
LPDWORD lpType,
LPBYTE lpData,
LPDWORD lpcbData
);
各个参数及返回值的含义如下:
·参数hKey为当前的一个打开的键的句柄,具体数值同RegCreateKeyEx函数的hKey参数。
·参数lpVauleName为一个指向非空的包含查询值的名称的字符串指针。
·lpReserved保留,必须为NULL。
·参数lpType为一个指向数据类型的指针,数据类型为下列类型之一:
REG_BINARY 二进制数据
REG_DWORD 32位整数
REG_DWORD_LITTLE_ENDIAN little-endian格式的数据,例如0X12345678以(0X78 0X56 0X34 0X12)方式保存
REG_DWORD_BIG_ENDIAN big-endian格式的数据,例如0X12345678以(0X12 0X34 0X56 0X78)方式保存
REG_EXPAND_SZ 一个包含未扩展环境变量的字符串
REG_LINK 一个Unicode类型的链接
REG_MULIT_SZ 以两个零结尾的字符串
REG_NONE 无类型数值
REG_RESOURCE_LIST 设备驱动资源列表
REG_SZ 一个以零结尾的字符串根据函数使用的字符集类型的不同而设置为Unicode或ANSI类型的字符串
·参数lpData为一个指向保存返回值的变量的指针。如果不需要返回值,该参数可以为NULL。
·参数lpcbData为一个指向保存返回值长度的变量的指针。其中长度以字节为单位。如果数据类型为REG_SZ、REG_MULTI_SZ或REG_EXPAND_SZ,那么长度也包括结尾的零字符,只有在参数lpData为NULL时,参数lpcbData才可以为NULL。
·返回值同RegCreateKeyEx函数的返回值。
设置键值RegSetValueEx
RegSetValueEx函数可以设置注册表中键的值,函数原型如下:
LONG RegSetValueEx(
HKEY hKey,
LPCTSTR lpValueName,
DWORD Reserved,
DWORD dwType,
CONST BYTE *lpData,
DWORD cbData
);
各个参数及返回值的含义如下:
·参数hKey的含义同RegCreateKeyEx函数中的hKey参数。
·参数lpValueName为一个指向包含值名的字符串指针。
·Reserved保留,通常必须设置为0。
·参数dwType确定了设置的值的类型同RegQueryValueKeyEx的lyType参数。
·参数lpData为一个指向包含数据的缓冲区的指针。
·参数cbData以字节为单位,指定数据的长度。
·返回值同RegCreateKeyEx函数的返回值。
void CreateSetRegKeyValue(CString strKeyValue,long intKeyValue)
{
DWORD dwErrorCode,dwData;
HKEY hKey;
DWORD dwDisposition;
dwErrorCode=::RegCreateKeyEx(HKEY_CURRENT_USER,strKeyValue.GetBuffer(strKeyValue.GetLength()),0,"",REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,&dwDisposition);
if (dwErrorCode != ERROR_SUCCESS){
AfxMessageBox("Create Key Faile!");
}
dwData=intKeyValue;
dwErrorCode=::RegSetValueEx(HKEY_CURRENT_USER,strKeyValue.GetBuffer(strKeyValue.GetLength()),0,REG_DWORD,(LPBYTE)&dwData,sizeof(DWORD));
if (dwErrorCode != ERROR_SUCCESS){
AfxMessageBox("Set KeyValue Faile!");
}
RegCloseKey(hKey);
}