注册表编辑

//打开注册表

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);
}

 

posted @ 2013-06-27 21:24  mynona  阅读(204)  评论(0编辑  收藏  举报