0
다음 함수를 사용하여 벡터의 특정 키와 하위 키에 대한 모든 레지스트리 키를 열거하고이를 반환합니다.모든 레지스트리 키를 가장 효율적으로 열거하는 방법
그러나이 코드는 200000 이상의 키와 같이 큰 키 값에 대해서는 매우 느리게 실행되는 것으로 보입니다. 완료하는 데는 5 분 이상 걸립니다. 어떻게하면 더 효율적으로 만들 수 있는지 알고 싶습니다.
vector<string> CRegistryAPI::EnumKeys(HKEY RootKey, string SubKey)
{
DWORD keyLen = 255;
int index = 0;
int ret = 0;
PFILETIME lastWrite = 0;
HKEY hKey = 0;
char keyName[255];
vector<string> keyList;
if (RegOpenKeyExA(RootKey, SubKey.c_str(), 0, KEY_ENUMERATE_SUB_KEYS,&hKey) != ERROR_SUCCESS)
return keyList;
do
{
ret = RegEnumKeyExA(hKey, index, keyName, &keyLen, 0, 0, 0, lastWrite);
if (ret == ERROR_SUCCESS)
{
keyList.push_back(keyName);
}
index ++;
keyLen = 255;
}
while (ret == ERROR_SUCCESS);
if (hKey != NULL)
RegCloseKey(hKey);
return keyList;
}
도움을 주시면 감사하겠습니다. 감사.
그것은 많은 키 –
왜 당신이 모든 키를 열거 할 않음을 열거하는 데 시간이 오래 걸립니다 : 당신은 대신에 반환 된 버퍼 길이를 사용해야합니까? – Deduplicator
레지스트리 클리너 도구를 작성하십시오. 나는 동등한 C# 함수를 가지고있다. – foobar