//打开注册表
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);
}
{
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);
}
{
// 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);
}
{
// 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);
}