CList Get_StartUp_Programs(CString csRegistryPath)
{
CList<CString,CString> listData;
HKEY hKey;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,csRegistryPath,0,KEY_ALL_ACCESS | KEY_WOW64_64KEY,&hKey) == ERROR_SUCCESS)
{
DWORD dwValues, dwMaxValueNameLen, dwMaxValueLen;
LONG lRet = ::RegQueryInfoKey(hKey,
NULL, NULL, // lpClass, lpcClass
NULL, // lpReserved
NULL, NULL, // lpcSubKeys, lpcMaxSubKeyLen
NULL, // lpcMaxClassLen
&dwValues,
&dwMaxValueNameLen,
&dwMaxValueLen,
NULL, // lpcbSecurityDescriptor
NULL); // lpftLastWriteTime
if(ERROR_SUCCESS == lRet)
{
LPTSTR pszName = new TCHAR[dwMaxValueNameLen + 1];
LPBYTE lpData = new BYTE[dwMaxValueLen];
for(DWORD dwIndex = 0; dwIndex < dwValues; dwIndex++)
{
DWORD dwNameSize = dwMaxValueNameLen + 1;
DWORD dwValueSize = dwMaxValueLen;
DWORD dwType;
lRet = ::RegEnumValue(hKey, dwIndex, pszName, &dwNameSize,0, &dwType, lpData, &dwValueSize);
CString strName = pszName;
listData.AddHead(strName);
CLog::Log(strName + _T(""));
}
delete []pszName;
delete []lpData;
}
}
}
在这个函数中我想要这个函数返回的启动程序列表,以便我可以在调用函数中处理该列表。如何返回启动程序列表
答案 0 :(得分:2)
CList没有复制构造函数,也没有复制运算符。 所以最简单的方法是传递一个CList对象作为函数的引用。
void FunctionToGetListData(CList<CString,CString> &listData)
{
listData.RemobveAll();
...
使用列表作为参数调用函数:
CList<CString,CString> listData;
FunctionToGetListData(listData);
或者使用std:list。您可以轻松地从函数返回std :: list。