当前位置:编程学习 > VC++ >>

VC 读写注册表实例 (1) —— 获取安装程序列表

Windows 系统中,安装程序都可以在注册表 HKEY_LOCAL_MACHINE\SoftWare\Microsoft\Windows\CurrentVersion\Uninstall 获取,并且xp、vista、win7、win8都一样
打开注册表命令:regedit,依次展开上述注册表路径,安装程序列表如下图:

 

获取系统安装程序列表:
[cpp] 
// 获取系统安装程序列表 
BOOL CMyListCtrlTestDlg::AllRegKey(HKEY hKey, LPCTSTR szDesKeyItem) 

    HKEY hSubKey; 
    DWORD dwIndex = 0; 
    long lResult; 
    int i = 1; 
 
    lResult = RegOpenKeyEx(hKey, szDesKeyItem, 0, KEY_READ, &hSubKey);      // 打开注册表 
    if(ERROR_SUCCESS == lResult) { 
        TCHAR szKeyName[256] = { 0 }; 
        DWORD cbName = 256*sizeof(TCHAR); 
 
        lResult = RegEnumKeyEx(hSubKey, dwIndex, szKeyName, &cbName, 0, NULL, NULL, NULL);      // 获取字段 
        while (lResult == ERROR_SUCCESS && lResult != ERROR_MORE_DATA){ 
            OutputDebugString(szKeyName); 
 
 
            CString str; 
            str.Format(_T("%d"), i); 
 
            i = m_MyList.InsertItem(i, str);        // 插入到List控件显示 
            m_MyList.SetItemText(i,1,szKeyName); 
 
 
            dwIndex = dwIndex + 1;          // 改变dwIndex,循环获取下移字段 
            cbName = 256*sizeof(TCHAR); 
            lResult = RegEnumKeyEx(hSubKey, dwIndex, szKeyName, &cbName, 0, NULL, NULL, NULL); 
 
            i++; 
 
        } 
        RegCloseKey(hSubKey);       // 关闭注册表 
        return TRUE; 
    } 
    RegCloseKey(hSubKey); 
    return FALSE; 


通过注册表路径获取调用:
[cpp]
AllRegKey(HKEY_LOCAL_MACHINE, TEXT("SoftWare\\Microsoft\\Windows\\CurrentVersion\\Uninstall")); 
作者:sunboy_2050

补充:软件开发 , Vc ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,