Вы можете создавать массивы в разных браузерах, например:
S_REGISTRY_PATH native[] = {
{HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\firefox.exe"), _T("Firefox")},
//...
}
S_REGISTRY_PATH wow64[] = {
{HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\firefox.exe"), _T("Firefox")},
//...
}
Это может быть даже отдельный файл, даже автоматически сгенерированный, который вы просто включили бы в файл, реализующий метод.
Тогда внутри метода все, что вам нужно сделать, это:
void CMeetingScheduleAssistantApp::InitBrowserRegistryLookupList(RegistryPathList& rListRegPaths)
{
rListRegPaths.clear();
for (auto && it : native) {
rListRegPaths.push_back(*it);
}
if (IsOS(OS_WOW6432)) {
for (auto && it : wow64) {
rListRegPaths.push_back(*it);
}
}
}
Это отделяет то, что в основном представляет собой просто данные, от самого кода, что значительно облегчает чтение, изменение и общее управление.