//显示启动项
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);
}
}
}
}
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);
}
}
}
}