QQ登录

只需一步,快速开始

368上位机VC MFC获取子键的全部子键信息

[ 复制链接 ]

368上位机VC MFC获取子键的全部子键信息

368上位机VC MFC获取子键的全部子键信息

获取键的全部子键信息
功能展示
就像文件夹内会有很多子文件夹一样,注册表的子键内也会有很多子键,我们当前例程实现获取指定子键Uninstall下的全部子键信息,效果如图。点击按钮后,例程会获得Uninstall子键下的全部子键信息,也就是会获取系统全部安装软件名称,名称长度,软件的安装时间,并显示出来

要点提示
键内全部子键的获取可以通过枚举的方法实现,也就是通过函数RegEnumKeyEx()完成
RegEnumKeyEx(
hkey, //被枚举的键句柄
dwIndex, //子键索引编号
lpName, //子键名称
lpcbName, //子键名称长度
lpReserved, //系统保留,指定为0
lpClass, //子键类名
lpcbClass, //子键类名长度
lpftLastWriteTime//最后写入时间
);

需要注意的是在每次调用RegEnumKeyEx()前必须重新将lpcbName的值设置为指定大小,因为每次函数返回时lpcbName的值会变成返回的键值的名称长度,随着循环次数这个值会变小,而可能出现无法枚举所有键值项的情况。

实现功能
1.新建基于对话框的应用程序
2.添加列表控件关联变量CListCtrl m_List;添加按钮控件<获取子键的全部子键信息>关联按钮的点击函数
void CGkbc8Dlg::OnGet()
{ AllRegKey(HKEY_LOCAL_MACHINE, TEXT(“SoftWare\\Microsoft\\Windows\\CurrentVersion\\Uninstall”)); }实现系统全部安装程序信息的获取;
其中调用的是我们自定义的子键枚举函数
BOOL CGkbc8Dlg::AllRegKey(HKEY hKey, CString sSubKey)
{
HKEY hSubKey;
DWORD dwIndex = 0;
CString sTemp;
long lResult;
lResult = RegOpenKeyEx(hKey, sSubKey, 0, KEY_READ, &hSubKey); // 打开注册表
if(ERROR_SUCCESS == lResult)
{
TCHAR szKeyName[256] = { 0 };
DWORD cbName = 256*sizeof(TCHAR);
FILETIME ftLastWriteTime;
lResult = RegEnumKeyEx(hSubKey, dwIndex, szKeyName, &cbName, 0, NULL, NULL, &ftLastWriteTime); // 获取字段
while (lResult == ERROR_SUCCESS && lResult != ERROR_MORE_DATA)
{
sTemp.Format("%d", dwIndex);
m_List.InsertItem(m_List.GetItemCount(), sTemp); // 插入到List控件显示
m_List.SetItemText(m_List.GetItemCount()-1,1,szKeyName);

sTemp.Format("子键名长度:%d", cbName);
m_List.SetItemText(m_List.GetItemCount()-1,2,sTemp);

CTime time(ftLastWriteTime);
m_List.SetItemText(m_List.GetItemCount()-1,3,time.Format("%Y-%m_%D_%H:%M:%S") );
dwIndex++; // 改变dwIndex,循环获取下移字段
cbName = 256*sizeof(TCHAR);
lResult = RegEnumKeyEx(hSubKey, dwIndex, szKeyName, &cbName, 0, NULL, NULL, NULL);
}
RegCloseKey(hSubKey); // 关闭注册表
return TRUE;
}
RegCloseKey(hSubKey);
return FALSE;
}
3.在程序初始化时初始化控件

m_List.ModifyStyle(0,LVS_REPORT,NULL);
m_List.InsertColumn(0,"索引",LVCFMT_LEFT,50);
m_List.InsertColumn(1,"子键名",LVCFMT_LEFT,250);
m_List.InsertColumn(2,"子键名长度",LVCFMT_LEFT,50);
m_List.InsertColumn(3,"子键最后写入时间",LVCFMT_LEFT,120);

我们来演示下功能实现的整个过程
请点击此处下载

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

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

文件名称:368.上位机VC MFC获取子键的全部子键信息.zip 
文件大小:126.03 KB  售价:11金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

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

  

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

  

QQ联系我

微信扫扫联系我

  

  

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

  

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

  

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




回复

使用道具 举报

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