注册表项管理

ClistCtrl初始化

    void CRegManageDlg::InitRunList()
{
    m_RunList.SetExtendedStyle(m_RunList.GetExtendedStyle()
                                   | LVS_EX_GRIDLINES  //有网络格
                                   | LVS_EX_FULLROWSELECT);  //选择单行
    m_RunList.ModifyStyle(0, LVS_REPORT|LVS_SINGLESEL|LVS_SHOWSELALWAYS);

    m_RunList.InsertColumn(0, _T("NO."));
    m_RunList.InsertColumn(1, _T("键 名"));
    m_RunList.InsertColumn(2, _T("键 值"));

    m_RunList.SetColumnWidth(0, LVSCW_AUTOSIZE_USEHEADER);
    m_RunList.SetColumnWidth(1, LVSCW_AUTOSIZE_USEHEADER);
    m_RunList.SetColumnWidth(2, LVSCW_AUTOSIZE_USEHEADER);
}

启动项枚举:

#define REG_RUN "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"
void CRegManageDlg::ShowRunList()
{
    //清空CListCtrl控件中的所有内容
    m_RunList.DeleteAllItems();

    DWORD dwType = 0;
    DWORD dwBufferSize = MAXBYTE;
    DWORD dwKeySize = MAXBYTE;
    char szValueName[MAXBYTE] = {0};
    char szValueKey[MAXBYTE] = {0};

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

    if(lRet != ERROR_SUCCESS)
        return;

    int i = 0;
    CString strTmp;
    while(true)
    {
        lRet = RegEnumValue(hKey, i, szValueName, &dwBufferSize, NULL, &dwType, (unsigned char *)szValueKey, &dwKeySize);
        if(lRet == ERROR_NO_MORE_ITEMS)
            break;
        strTmp.Format("%d", i);
        m_RunList.InsertItem(i, strTmp);
        m_RunList.SetItemText(i, 1, szValueName); 
        m_RunList.SetItemText(i, 2, szValueKey);
        i++;
        ZeroMemory(szValueName, MAXBYTE);
        ZeroMemory(szValueKey, MAXBYTE);
    }

    RegCloseKey(hKey);
}

添加启动项:

void CRegManageDlg::OnButtonAdd() 
{
    // TODO: Add your control notification handler code here
    CRegAdd RegAdd;
    RegAdd.DoModal();
    if(strlen(RegAdd.szKeyName)>0 && strlen(RegAdd.szKeyValue)>0)
    {
        HKEY hKey = NULL;
        LONG lRet = RegOpenKey(HKEY_LOCAL_MACHINE, REG_RUN, &hKey);

        if(lRet != ERROR_SUCCESS)
            return;

        RegSetValueEx(hKey, RegAdd.szKeyValue, NULL, REG_SZ, (const unsigned char *)RegAdd.szKeyValue.GetBuffer(0), strlen(RegAdd.szKeyValue)+sizeof(char));
        RegCloseKey(hKey);
        ShowRunList();
    }
    else
        AfxMessageBox("请输入完整内容!");
}

删除启动项:

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

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

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

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

    AfxMessageBox(szKeyName);

    HKEY hKey = NULL;

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

    RegDeleteValue(hKey, szKeyName);

    RegCloseKey(hKey);

    ShowRunList();
}

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值