简单枚举系统启动项

//显示启动项
void ShowAutoRunList()
{
    //HKLM Run
    cout<<"HKLM Run ---------------------------------------------------\n";
    HKEY hKey = HKEY_LOCAL_MACHINE;
    std::string strType = "HKLM Run",strTemp;
    DWORD i;
    vector<RegKeyDetail > ListEnumKeyValue;
    vector<string > ListEnumKey;
    std::string strFullName = "Software\\Microsoft\\Windows\\CurrentVersion\\Run";
    EnumRegistryKeyValue(hKey,strFullName,ListEnumKeyValue);

    if (ListEnumKeyValue.size() > 0)
    {
        for (i=0; i<ListEnumKeyValue.size(); i++)
        {
            cout<<ListEnumKeyValue[i].sRegKeyName.c_str();
            cout<<" "<<ListEnumKeyValue[i].m_RegData.sData.c_str()<<endl;
        }
    }

    //HKCU Run
    cout<<"HKCU Run ---------------------------------------------------\n";
    hKey = HKEY_CURRENT_USER;
    strType = "HKCU Run";
    EnumRegistryKeyValue(hKey,strFullName,ListEnumKeyValue);

    if (ListEnumKeyValue.size() > 0)
    {
        for (i=0; i<ListEnumKeyValue.size(); i++)
        {
            cout<<ListEnumKeyValue[i].sRegKeyName.c_str();
            cout<<" "<<ListEnumKeyValue[i].m_RegData.sData.c_str()<<endl;
        }
    }

    //HKLM Winlogon
    cout<<"HKLM Winlogon ---------------------------------------------------\n";
    hKey = HKEY_LOCAL_MACHINE;
    strType = "HKLM Winlogon";
    strFullName = "Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon";
    EnumRegistryKeyValue(hKey,strFullName,ListEnumKeyValue);

    if (ListEnumKeyValue.size() > 0)
    {
        for (i=0; i<ListEnumKeyValue.size(); i++)
        {
            if (ListEnumKeyValue[i].sRegKeyName == "Shell"
                || ListEnumKeyValue[i].sRegKeyName == "UIHost"
                || ListEnumKeyValue[i].sRegKeyName == "Userinit")
            {
                cout<<ListEnumKeyValue[i].sRegKeyName.c_str();
                cout<<" "<<ListEnumKeyValue[i].m_RegData.sData.c_str()<<endl;
            }
        }
    }

    //HKLM Winlogon Notify
    cout<<"HKLM Winlogon Notify ---------------------------------------------------\n";
    hKey = HKEY_LOCAL_MACHINE;
    strType = "HKLM Winlogon Notify";
    strFullName = "Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\Notify";
    EnumRegistryKey(hKey,strFullName,ListEnumKey);

    HKEY hKeyRes;
    CHAR szValue[1024];
    DWORD dwLen = 1024;

    if (ListEnumKey.size() > 0)
    {
        for (i=0; i<ListEnumKey.size(); i++)
        {
            cout<<ListEnumKey[i].c_str();
            strTemp = strFullName + "\\" + ListEnumKey[i];
            if (RegCreateKey(hKey,strTemp.c_str(),&hKeyRes) == ERROR_SUCCESS)
            {
                RegQueryValueEx(hKeyRes,"DLLName",0,NULL,(LPBYTE)szValue,&dwLen);
                szValue[dwLen] = '\0';
                cout<<" "<<szValue<<endl;
                RegCloseKey(hKeyRes);
            }
        }
    }

    //KnownDLLs
    cout<<"KnownDLLs ---------------------------------------------------\n";
    hKey = HKEY_LOCAL_MACHINE;
    strType = "KnownDLLs";
    memset(szValue,0,1024);
    dwLen = 1024;
    strFullName = "SYSTEM\\ControlSet001\\Control\\Session Manager\\KnownDLLs";
    EnumRegistryKeyValue(hKey,strFullName,ListEnumKeyValue);

    if (ListEnumKeyValue.size() > 0)
    {
        if (RegCreateKey(hKey,strFullName.c_str(),&hKeyRes) == ERROR_SUCCESS)
        {
            RegQueryValueEx(hKeyRes,"DllDirectory",0,NULL,(LPBYTE)szValue,&dwLen);
            szValue[dwLen] = '\0';
            RegCloseKey(hKeyRes);
        }
        for (i=0; i<ListEnumKeyValue.size(); i++)
        {
            if (ListEnumKeyValue[i].sRegKeyName != "DllDirectory")
            {
                cout<<ListEnumKeyValue[i].sRegKeyName.c_str();
                strTemp = szValue;
                strTemp += "\\" + ListEnumKeyValue[i].sRegKeyName;
                cout<<strTemp.c_str()<<endl;
            }
        }
    }

    //RightMenu
    cout<<"RightMenu ---------------------------------------------------\n";
    hKey = HKEY_CLASSES_ROOT;
    strType = "RightMenu";
    strFullName = "*\\shellex\\ContextMenuHandlers";
    EnumRegistryKey(hKey,strFullName,ListEnumKey);

    if (ListEnumKey.size() > 0)
    {
        for (i=0; i<ListEnumKey.size(); i++)
        {
            dwLen = 1024;

            if (ListEnumKey[i][0] == '{')
                continue;

            cout<<ListEnumKey[i].c_str();
    
            strTemp = strFullName + "\\" + ListEnumKey[i];

            if (RegCreateKey(HKEY_CLASSES_ROOT,strTemp.c_str(),&hKey) == ERROR_SUCCESS)
            {
                if (RegQueryValueEx(hKey,NULL,NULL,NULL,(LPBYTE)szValue,&dwLen) == ERROR_SUCCESS)
                {
                    strTemp = "CLSID\\";
                    strTemp += szValue;
                    strTemp += "\\InprocServer32";

                    dwLen = MAX_PATH;

                    if (RegCreateKey(HKEY_CLASSES_ROOT,strTemp.c_str(),&hKeyRes) == ERROR_SUCCESS)
                    {
                        if (RegQueryValueEx(hKeyRes,NULL,NULL,NULL,(LPBYTE)szValue,&dwLen) == ERROR_SUCCESS)
                        {
                            cout<<" "<<szValue<<endl;
                        }
                        RegCloseKey(hKeyRes);
                    }
                }
                RegCloseKey(hKey);
            }
        }
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值