注册表---查询已安装的软件

BOOL CTestDlg::IsSoftwareExist()
{
    
  
  
     HKEY  RootKey;           // 主键
     LPCTSTR  lpSubKey;       // 子键名称
     HKEY  hkResult;          // 将要打开键的句柄 
     HKEY  hkRKey;
     LONG  lReturn;           // 记录读取注册表是否成功
     CString strBuffer;
     CString strMidReg; 
    CString strSoftwareName;
     DWORD  index = 0;
     TCHAR  szKeyName[255] = {0};         // 注册表项名称
     TCHAR  szBuffer[255] = {0};
     DWORD  dwKeyLen = 255;
     DWORD  dwNameLen = 255;
     DWORD  dwType = REG_BINARY|REG_DWORD|REG_EXPAND_SZ|REG_MULTI_SZ|REG_NONE|REG_SZ;
     RootKey = HKEY_LOCAL_MACHINE;
     lpSubKey = _T( "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall" );
     lReturn = RegOpenKeyEx(RootKey, lpSubKey, 0, KEY_ALL_ACCESS, &hkResult);
    if(lReturn == ERROR_SUCCESS)
    {
      
        while  (ERROR_NO_MORE_ITEMS !=RegEnumKeyEx(hkResult, index, szKeyName, &dwKeyLen, 0, NULL, NULL, NULL))
         {
            index++;
            strBuffer.Format(_T("%s"),szKeyName);
            if(!strBuffer.IsEmpty())
            {
               strMidReg = (CString)lpSubKey + _T("\\") + strBuffer;
               if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, strMidReg, 0, KEY_ALL_ACCESS, &hkRKey)==ERROR_SUCCESS)
               {
                  RegQueryValueEx(hkRKey, _T("DisplayName"), 0, &dwType, (LPBYTE)szBuffer,&dwNameLen);
                  strSoftwareName = szBuffer;
                  if(!strSoftware.IsEmpty() && strSoftwareName == _T("EsafeODS"))
                  {
                       strSoftwareName += _T("\r\n");
                       OutputDebugString(strSoftwareName);
                       return TURE; 
                  } 
                  else
                  {
                     OutputDebugString(_T("strSoftwareName is NULL! \r\n"));
                  }      
               } 
            }   
        }
    }
 
}
注:该功能也是参考别人的回复,经过测试可行,仅作为笔记记录供以后查询使用。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值