diff --git a/Src/StartMenu/StartMenuHelper/ModernSettings.cpp b/Src/StartMenu/StartMenuHelper/ModernSettings.cpp index a177340e5..5e6232427 100644 --- a/Src/StartMenu/StartMenuHelper/ModernSettings.cpp +++ b/Src/StartMenu/StartMenuHelper/ModernSettings.cpp @@ -274,15 +274,30 @@ static void ParseApplicationInformation(CComPtr& parent, AttributeW } } +static void ParseSettingIDs(CComPtr& node, AttributeWriter& writer) +{ + writer.addString(Id::PageId, GetTranslatedString(node, L"PageID")); + writer.addString(Id::HostId, GetTranslatedString(node, L"HostID")); + writer.addString(Id::GroupId, GetTranslatedString(node, L"GroupID")); + writer.addString(Id::SettingId, GetTranslatedString(node, L"SettingID")); +} + +static void ParseSettingPaths(CComPtr& parent, AttributeWriter& writer) +{ + CComPtr node; + if (parent->selectSingleNode(CComBSTR(L"SettingPaths/Path"), &node) == S_OK) + ParseSettingIDs(node, writer); +} + static void ParseSettingIdentity(CComPtr& parent, AttributeWriter& writer) { CComPtr node; if (parent->selectSingleNode(CComBSTR(L"SettingIdentity"), &node) == S_OK) { - writer.addString(Id::PageId, GetTranslatedString(node, L"PageID")); - writer.addString(Id::HostId, GetTranslatedString(node, L"HostID")); - writer.addString(Id::GroupId, GetTranslatedString(node, L"GroupID")); - writer.addString(Id::SettingId, GetTranslatedString(node, L"SettingID")); + // Win11 24H2+ + ParseSettingPaths(node, writer); + // older + ParseSettingIDs(node, writer); } }