vc 遍历主键下的所有子键

#include "windows.h"
#include <string>
#include <list>

#defineEDSETTING_KEYTEXT("Software//CRYPTIONTOOL")
#defineEDSETTING_KEY_LEN256
#define IS_DISPLAYTEXT("DisplayName")
std::list< std::basic_string<TCHAR> > m_lsRegDirs;

void BuildList(void)
{
HKEY hKey;
if (::RegOpenKeyEx(HKEY_CURRENT_USER, EDSETTING_KEY, 0, KEY_READ, &hKey) != ERROR_SUCCESS)
return;

DWORD dwIndex = 0;
LONG lRet;
DWORD cbName = EDSETTING_KEY_LEN;
TCHAR szSubKeyName[EDSETTING_KEY_LEN];

while ((lRet = ::RegEnumKeyEx(hKey, dwIndex, szSubKeyName, &cbName, NULL,
NULL, NULL, NULL)) != ERROR_NO_MORE_ITEMS)
{
MessageBox(NULL, (char *)lRet, TEXT("BOOK"), NULL);

// Do we have a key to open?
if (lRet == ERROR_SUCCESS)
{
// Open the key and get the value
HKEY hItem;
if (::RegOpenKeyEx(hKey, szSubKeyName, 0, KEY_READ, &hItem) != ERROR_SUCCESS)
continue;
// Opened - look for "DisplayName"
TCHAR szDisplayName[EDSETTING_KEY_LEN];
DWORD dwSize = sizeof(szDisplayName);
DWORD dwType;

if (::RegQueryValueEx(hItem, IS_DISPLAY, NULL, &dwType,
(LPBYTE)&szDisplayName, &dwSize) == ERROR_SUCCESS)
{
// Add to the list
m_lsRegDirs.push_back(szDisplayName);

}
::RegCloseKey(hItem);
}
dwIndex++;
cbName = EDSETTING_KEY_LEN;
}
::RegCloseKey(hKey);
}

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
BuildList();
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值