gpt4 book ai didi

c++ - 返回 Windows 注册表键子键数组 C++

转载 作者:太空宇宙 更新时间:2023-11-04 12:09:53 25 4
gpt4 key购买 nike

我在 c void 函数中有这段代码来获取和打印 Windows 注册表项的子项

TCHAR    achKey[MAX_KEY_LENGTH];   // buffer for subkey name
retCode = RegQueryInfoKey(
hKey, // key handle
achClass, // buffer for class name
&cchClassName, // size of class string
NULL, // reserved
&cSubKeys, // number of subkeys
&cbMaxSubKey, // longest subkey size
&cchMaxClass, // longest class string
&cValues, // number of values for this key
&cchMaxValue, // longest value name
&cbMaxValueData, // longest value data
&cbSecurityDescriptor, // security descriptor
&ftLastWriteTime); // last write time

// Enumerate the subkeys, until RegEnumKeyEx fails.

if (cSubKeys)
{
printf( "\nNumber of subkeys: %d\n", cSubKeys);

for (i=0; i<cSubKeys; i++)
{
cbName = MAX_KEY_LENGTH;
retCode = RegEnumKeyEx(hKey, i,
achKey,
&cbName,
NULL,
NULL,
NULL,
&ftLastWriteTime);
if (retCode == ERROR_SUCCESS)
{
_tprintf(TEXT("(%d) %s\n"), i+1, achKey);
}
}
}

我如何修改以返回包含所有子键值的数组谢谢


嗨,大卫,感谢您的回复,我无法使用 vector<string> subkeys 正确编译,有了这些标题

#include <windows.h>
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <vector>
#include <string>
using namespace std;

如果我改成:

vector<TCHAR> getSubKeys(HKEY key)
{
vector<TCHAR>> subkeys;
....
for (i=0; i<cSubKeys; i++)
{
// get subkey name
subkeys.push_back(TCHAR>(achKey));
}
....
return subkeys;
}

通过此更改,它可以工作,但是在 t_main 函数中,当我尝试将 vector 列出到控制台时,只显示八个(子键的数量是正确的)数字,如 65000 八个 vector 元素的相同值,问题在哪里或如何我可以用你的代码编译吗?非常感谢

最佳答案

鉴于您使用的是 C++,您不应该使用数组。相反 vector<T>是合适的数据结构。创建其中之一来保存您的注册表键字符串。

vector<string> subkeys;

您当前打印的位置 achKey , 而不是添加到 subkeys :

subkeys.push_back(string(achKey));

如果您正在构建 Unicode,请使用 wstring相反。

您的函数可能如下所示:

vector<string> getSubKeys(HKEY key)
{
vector<string> subkeys;
....
for (i=0; i<cSubKeys; i++)
{
// get subkey name
subkeys.push_back(string(achKey));
}
....
return subkeys;
}

关于c++ - 返回 Windows 注册表键子键数组 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10259008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com