This is a function I just wrote with the goal to only load the desired information once, and if an error occurs, save it for later so that it can always be reported to a calling function.
It does what I want but seems quite clumsy.
std::wstring const& GetMuiFilePath()
{
static DWORD error = NO_ERROR;
static std::wstring muiPath;
static bool hasTriedLoadingPath = false;
if (!hasTriedLoadingPath) {
try {
muiPath = Internal::zGetSpecialFolder(zCsidlSystem)
+ L"\\" + Internal::zGetSystemLocale()
+ L"\\" + L"wbadmin.exe.mui";
}
catch (AutoWinError const& e) {
error = e.m_error;
}
hasTriedLoadingPath = true;
}
if (muiPath.empty()) {
throw AutoWinError(error);
}
return muiPath;
}