QQ登录

只需一步,快速开始

367上位机VC MFC获取指定键值项数据

[ 复制链接 ]

367上位机VC MFC获取指定键值项数据

367上位机VC MFC获取指定键值项数据

获取指定键值项数据
功能展示
打开注册表最终的目地就是获取数据及写入数据,比如打开注册表获取系统程序安装信息,我们当前例程就演示实现获取子键指定键值项的设置值,效果如图。输入好了根键,子键,及子键内的键值项名称后,点击按钮就可获得此键值一数据。例程获取的是系统VC6.0的卸载程序目录;

要点提示
获取一个项的设置值可以使用函数RegQueryValueEx()函数原型LONG RegQueryValueEx(  
HKEY hKey, //一个已打开项的句柄,或者指定一个标准项名
LPCTSTR lpValueName, // 要获取值的名字
LPDWORD lpReserved, // 未用,设为零
LPDWORD lpType, // 用于装载取回数据类型的一个变量
? LPBYTE lpData, // 用于装载指定值的一个缓冲区
LPDWORD lpcbData //用于装载lpData缓冲区长度的一个变量。一旦返回,它会设为实际装载到缓冲区的字节数
 );
  返回值 Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码;
lpValueName 指向要查询值的名字的字符串(以空字符结束)。 如果lpValueName是NULL或一个空字符串(""),这个函数找回这个键的未命名或默认值的类型和数据。 Windows 95和Windows 98: 每个键有一个默认值(最初的不包含数据)。在Windows 95,这人默认值类型总是REG_SZ。在Windows 98,默认键的类型最初是REG_SZ,但可以通过RegSetValueEx指定一个默认值为不同的类型。 Windows NT: 键不能自动拥有一个未命名或默认的值,未命名的值可以是任何类型。
  lpReserved 保留,必须是NULL.

实现功能
1.新建基于对话框的应用程序
2.添加编辑框IDC_EDIT1,IDC_EDIT2,IDC_EDIT3,IDC_EDIT4分别对应根键,子键,键值项名称的输入及键值项值的获取显示,添加按钮<获得键值项 设置值>关联按钮的点击函数

void CGkbc8Dlg::OnGet()
{
HKEY key,hRootKey;
CString sRootKey,sSubKey,sValueName;
GetDlgItemText(IDC_EDIT1,sRootKey);//获取输入根键
GetDlgItemText(IDC_EDIT2,sSubKey);//获取子键
GetDlgItemText(IDC_EDIT3,sValueName);//获取键值项名称
if(sSubKey.IsEmpty()||sRootKey.IsEmpty()||sValueName.IsEmpty())//编辑框没输入内容返回
return;
//<> 除95,NT系统外,总共有五个根键
if(!sRootKey.Compare("HKEY_CLASSES_ROOT") )//相同时
hRootKey = HKEY_CLASSES_ROOT;
else if(!sRootKey.Compare("HKEY_CURRENT_CONFIG") )
hRootKey = HKEY_CURRENT_CONFIG;
else if(!sRootKey.Compare("HKEY_CURRENT_USER") )
hRootKey = HKEY_CURRENT_USER;
else if(!sRootKey.Compare("HKEY_LOCAL_MACHINE") )
hRootKey = HKEY_LOCAL_MACHINE;
else if(!sRootKey.Compare("HKEY_USERS") )
hRootKey = HKEY_USERS;
else
{
MessageBox("输入根键非法");
return;
}
//<>
if(RegOpenKeyEx(hRootKey,sSubKey,0,KEY_ALL_ACCESS,&key) == ERROR_SUCCESS)
{
DWORD Type = REG_SZ;
char cData[_MAX_PATH];
DWORD wDataLen = _MAX_PATH*sizeof(char)+1;
RegQueryValueEx(key,//一个已打开项的句柄,或者指定一个标准项名
sValueName, // 要获取值的名字
NULL, // 未用,设为零
&Type, // 用于装载取回数据类型的一个变量
(LPBYTE)cData, // 用于装载指定值的一个缓冲区
&wDataLen //用于装载lpData缓冲区长度的一个变量。一旦返回,它会设为实际装载到缓冲区的字节数
);
SetDlgItemText(IDC_EDIT4,cData);
}
else
MessageBox("注册表打开失败");
RegCloseKey(key);
}
4.选择性的初始化控件
SetDlgItemText(IDC_EDIT1,"HKEY_LOCAL_MACHINE");//根键
//系统安装程序位置中,VC6.0的子键
SetDlgItemText(IDC_EDIT2,"SoftWare\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Visual C++ 6.0 Enterprise Edition");
SetDlgItemText(IDC_EDIT3,"DisplayName");//软件名称
//SetDlgItemText(IDC_EDIT3,"UninstallString");//卸载的软件位置

我们来演示下功能实现的整个过程

请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:367.上位机VC MFC获取指定键值项数据.zip 
文件大小:130.16 KB  售价:11金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

如果您认可,可联系功能定制!

  

如果您着急,充值会员可直接联系发您资料!

  

QQ联系我

微信扫扫联系我

  

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!




回复

使用道具 举报

快速回复 返回列表 客服中心 搜索