注册表编辑

//打开注册表

void CRegeditControlDlg::ShowList()
{
     m_List.DeleteAllItems();
    
     CString       strTmp;
     HKEY hkResult;
     if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,REG_RUN,0,KEY_ALL_ACCESS,&hkResult) != ERROR_SUCCESS)
     {
          MessageBox("不能打开注册表!");
          return ;
     }
    
    
     DWORD dwIndex = 0,dwType = 0,dwNameLen = MAXBYTE,dwDateLen = MAXBYTE;
     char tcName[MAXBYTE];
     char byDate[MAXBYTE] ;
     while (TRUE)
     {
          //注意MYNONA,没有以下这两行,会致命,混绕我三天了!
          dwNameLen = MAXBYTE;
          dwDateLen = MAXBYTE;
          DWORD dwErrorCode =RegEnumValue(hkResult,dwIndex,tcName,&dwNameLen,NULL,&dwType,(unsigned char *)byDate,&dwDateLen);
          if(dwErrorCode)
          {
               //MessageBox("获取失败");
          }
          if(dwErrorCode != ERROR_SUCCESS)
          {
               break;
          }
         

          strTmp.Format("%d",dwIndex);
          m_List.InsertItem(dwIndex,strTmp);
          m_List.SetItemText(dwIndex,1,tcName);
          m_List.SetItemText(dwIndex,2,byDate);
         
          dwIndex++;
     }
     RegCloseKey(hkResult);
}

//添加启动项

void CRegeditControlDlg::OnBtnAdd()
{
     // TODO: Add your control notification handler code here
     CRegAdd RegAdd;
     RegAdd.DoModal();
    
     if( RegAdd.m_szKeyName.GetLength() > 0 && RegAdd.m_szKeyValue.GetLength() > 0)
     {
          HKEY hKey = NULL;
          LONG lRet = RegOpenKey(HKEY_LOCAL_MACHINE,REG_RUN,&hKey);

          if(lRet != ERROR_SUCCESS)
          {
               return;
          }

          RegSetValueEx(hKey,RegAdd.m_szKeyName,NULL,REG_SZ,(const unsigned char *)&RegAdd.m_szKeyValue,
               strlen(RegAdd.m_szKeyValue) +sizeof(char));

          RegCloseKey(hKey);
          ShowList();
     }else
     {
          MessageBox("请输入完整的内容");
     }

     //MessageBox(RegAdd.m_szKeyName);
     //MessageBox(RegAdd.m_szKeyValue);
}

//删除启动项

void CRegeditControlDlg::OnBtnDel()
{
     // TODO: Add your control notification handler code here
     POSITION pos = m_List.GetFirstSelectedItemPosition();
     int nSelected = -1;

     while( pos )
     {
          nSelected = m_List.GetNextSelectedItem(pos);
     }

     if( -1 == nSelected)
     {
          MessageBox("请选择要删除的启动项");
          return ;
     }

     char szKeyName[MAXBYTE] = {0};
     m_List.GetItemText(nSelected,1,szKeyName,MAXBYTE);

     MessageBox(szKeyName);

     HKEY hKey = NULL;

     LONG lRet = RegOpenKey(HKEY_LOCAL_MACHINE,REG_RUN,&hKey);

     RegDeleteValue(hKey,szKeyName);

     RegCloseKey(hKey);
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mmyzlinyingjie

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值