//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大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/334763
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!