diff --git a/src/cascadia/TerminalSettingsModel/ApplicationState.cpp b/src/cascadia/TerminalSettingsModel/ApplicationState.cpp index 507d721a7..ee42da048 100644 --- a/src/cascadia/TerminalSettingsModel/ApplicationState.cpp +++ b/src/cascadia/TerminalSettingsModel/ApplicationState.cpp @@ -138,8 +138,15 @@ namespace winrt::Microsoft::Terminal::Settings::Model::implementation { Json::StreamWriterBuilder wbuilder; - _writeSharedContents(Json::writeString(wbuilder, ToJson(FileSource::Shared))); - _writeElevatedContents(Json::writeString(wbuilder, ToJson(FileSource::Local))); + if (::Microsoft::Console::Utils::IsElevated()) + { + _writeSharedContents(Json::writeString(wbuilder, ToJson(FileSource::Shared))); + _writeElevatedContents(Json::writeString(wbuilder, ToJson(FileSource::Local))); + } + else + { + _writeSharedContents(Json::writeString(wbuilder, ToJson(FileSource::Shared | FileSource::Local))); + } } CATCH_LOG() @@ -174,7 +181,7 @@ namespace winrt::Microsoft::Terminal::Settings::Model::implementation { auto state = _state.lock_shared(); #define MTSM_APPLICATION_STATE_GEN(source, type, name, key, ...) \ - if (parseSource == source) \ + if (WI_IsFlagSet(parseSource, source)) \ JsonUtils::SetValueForKey(root, key, state->name); MTSM_APPLICATION_STATE_FIELDS(MTSM_APPLICATION_STATE_GEN) diff --git a/src/cascadia/TerminalSettingsModel/ApplicationState.h b/src/cascadia/TerminalSettingsModel/ApplicationState.h index 5e36e364a..c507f550c 100644 --- a/src/cascadia/TerminalSettingsModel/ApplicationState.h +++ b/src/cascadia/TerminalSettingsModel/ApplicationState.h @@ -23,12 +23,13 @@ Abstract: // (type, function name, JSON key, ...variadic construction arguments) namespace winrt::Microsoft::Terminal::Settings::Model::implementation { - enum FileSource + enum FileSource : int { - Shared, - Local, + Shared = 0x1, + Local = 0x2, // ElevatedOnly }; + DEFINE_ENUM_FLAG_OPERATORS(FileSource); #define MTSM_APPLICATION_STATE_FIELDS(X) \ X(FileSource::Shared, std::unordered_set, GeneratedProfiles, "generatedProfiles") \