C++学习(九):访问注册表

//1.开发环境 VS 2013
//2.创建MFC应用程序
//3.选择基于对话框选项
//4.打开*.rc文件在对话框界面上拖入ListBox控件
//5.在*Dlg.cpp中插入

#define UNINSTALL_SOFT _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall")

LRESULT GetValue(HKEY hKey, LPCTSTR name, LPTSTR value, LPLONG size)
{
    return ::RegQueryValueEx(hKey, name, NULL, NULL, (LPBYTE)value, (LPDWORD)size);
}

void DumpSoftware(LPCTSTR szKey, HKEY hParent, CListBox * mylist)
{
    LRESULT lr;
    HKEY hKey;
    LONG size;
    TCHAR buffer[MAX_PATH];
    lr = RegOpenKey(hParent, szKey, &hKey);

    //不能打开注册表
    if (lr != ERROR_SUCCESS)
    {
        ::MessageBox(NULL, _T("打开注册表失败!"), NULL, MB_ICONWARNING);
        return;
    }

    size = sizeof(buffer);
    lr = GetValue(hKey, _T("DisplayName"), &buffer[0], &size);
    if (lr == ERROR_SUCCESS)
    {
        if (size > 0)
        {
            mylist->AddString(buffer);
        }
    }

    RegCloseKey(hKey);
}

void ListReg(CListBox * mylist)
{
    unsigned int index;
    TCHAR buffer[MAX_PATH];
    HKEY hKey;
    HRESULT hr = ::RegOpenKeyEx(HKEY_LOCAL_MACHINE, UNINSTALL_SOFT, 0, KEY_READ, &hKey);
    if (hr != ERROR_SUCCESS)
    {
        ::MessageBox(NULL, _T("打开注册表失败!"), NULL, MB_ICONWARNING);
        return;
    }

    for (index = 0;; index++)
    {
        hr = RegEnumKey(hKey, index, &buffer[0], sizeof(buffer));
        switch (hr)
        {
            case ERROR_SUCCESS:
                DumpSoftware(buffer, hKey, mylist);
                break;
            case ERROR_NO_MORE_ITEMS:
                RegCloseKey(hKey);
                return;
            default:
                RegCloseKey(hKey);
                return;
        }
    }
    RegCloseKey(hKey);
}
//6.在OnInitDialog函数中return之前插入

    CListBox * mylist = (CListBox *)GetDlgItem(IDC_LIST1);
    mylist->ResetContent(); //清空ListBox
    //枚举注册表将所有安装软件信息装入一个ListBox控件里
    ListReg(mylist);  

 

原文链接: https://www.cnblogs.com/liw66/p/12465912.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    C++学习(九):访问注册表

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/334763

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月1日 下午9:49
下一篇 2023年3月1日 下午9:49

相关推荐